公司的社交网站采用PHP语言开发,为了管理PHP程序员开发的代码,上级领导要求搭建SVN服务器进行版本控制。社交网站的第一个版本部署在LNMP平台上,前端为Nginx,经过fastcgi协议访问后端的PHP服务器。为了保证数据安全,要求搭建MySQL数据库主从集群。
社交网站包含用户的相册功能,容许用户上传照片,上传照片须要使用共享存储来存放。公司决定使用MFS分布式文件系统,并将MFS挂载到PHP服务器的相关目录下。php
主机 | 操做系统 | IP地址 | 主要软件 |
---|---|---|---|
Nginx | CentOS-7-x86_64 | 192.168.43.91 | nginx-1.6.3.tar.gz |
PHP | CentOS-7-x86_64 | 192.168.43.138 | php-5.6.30.tar.gz;fuse-2.9.2.tar.gz;mfs-1.6.27-5.tar.gz ; ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz |
Mysql-master | CentOS-7-x86_64 | 192.168.43.184 | mysql-5.6.36.tar.gz |
Mysql-slave | CentOS-7-x86_64 | 192.168.43.77 | mysql-5.6.36.tar.gz |
Masterserver | CentOS-7-x86_64 | 192.168.43.166 | mfs-1.6.27-5.tar.gz |
Metalogger | CentOS-7-x86_64 | 192.168.43.194 | mfs-1.6.27-5.tar.gz |
Chunk sever1 | CentOS-7-x86_64 | 192.168.43.80 | mfs-1.6.27-5.tar.gz |
Chunk sever2 | CentOS-7-x86_64 | 192.168.43.51 | mfs-1.6.27-5.tar.gz |
SVN | CentOS-7-x86_64 | 192.168.43.147 |
连接:https://pan.baidu.com/s/1DpDfhZtbpco8_Mo5wCAr0g
提取码:m3jjhtml
一、安装nginx服务前端
yum install gcc gcc-c++ pcre pcre-devel zlib-devel make cmake ncurses-devel bison libaio-devel -y #安装环境
useradd -M -s /sbin/nologin nginx #建立用户
tar zxf nginx-1.6.3.tar.gz -C /opt/ #解压nginx
cd /opt/nginx-1.6.3/
./configure \ #编译安装
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make && make install mysql
二、设置nginx配置文件,使nginx支持phplinux
三、开启nginx服务nginx
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #设置软链接,让系统识别nginx中的命令
systemctl stop firewalld.service
setenforce 0
nginx # 启动nginx
netstat -ntap | grep nginxc++
一、安装PHP服务程序员
yum -y install gd libxml2-devel libjpeg-devel libpng-devel fontconfig-devel openssl-devel bzip2-devel gcc gcc-c++
useradd -M -s /sbin/nologin php
tar zxvf php-5.6.30.tar.gz -C /opt
cd /opt/php-5.6.30
./configure --prefix=/usr/local/php-fpm --enable-fpm --with-zlib --with-pdo-mysql --enable-mbstring --with-gd --with-png-dir=/usr/lib64 --with-jpeg-dir=/usr/lib64 --with-freetype-dir=/usr/lib64
make && make install web
二、优化服务sql
cp php.ini-development /usr/local/php-fpm/php.ini #将配置文件模版复制出来
ln -s /usr/local/php-fpm/bin/ /usr/local/bin/
ln -s /usr/local/php-fpm/sbin/ /usr/local/sbin/
#以上两项都是让系统可以识别php相关命令
三、为PHP安装加速器
tar zxvf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /opt/#将加速器解压到指定目录下
cd /opt/ZendGuardLoader-php-5.3-linux-glibc23-x86_64/php-5.3.x
cp ZendGuardLoader.so /usr/local/php-fpm/lib/php#将加速器模块放在可以识别的路径
四、配置PHP识别加速器
vi /usr/local/php-fpm/php.ini [Zend Guard Loader] zend_extension=/usr/local/php-fpm/lib/php/ZendGuardLoader.so zend_loader.enable=1
五、配置php-fpm进程,开启nginx的PHP支持
cd /usr/local/php-fpm/etc/ cp php-fpm.conf.default php-fpm.conf vi php-fpm.conf pid = run/php-fpm.pid user = php group = php pm.max_children=50 pm.start_servers = 20 pm.min_spare_servers = 5 pm.max_spare_servers = 35
六、启动php-fpm进程
/usr/local/sbin/php-fpm
netstat -tnal | grep 9000
systemctl stop firewalld.service
setenforce 0
七、访问nginx测试
//在php主机新建一个php测试页面
mkdir -p /var/www/html/webphp#建立站点目录
cd /var/www/html/webphp/
echo "hello,everyone">index.php #建立站点目录首页
//经过外部浏览器访问192.168.43.91/index.php
mysql安装
一、安装mysql(主、从两台相同操做)
yum install gcc gcc-c++ make cmake ncurses-devel bison libaio-devel autoconf -y useradd -s /sbin/nologin mysql tar zxf mysql-5.6.36.tar -C /opt mkdir /usr/local/mysql cd /opt/mysql-5.6.36.tar cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DSYSCONFDIR=/etc \ -DMYSQL_DATADIR=/home/mysql/ \ -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_SSL=system \ -DMYSQL_TCP_PORT=3306 \ -DENABLE_DOWNLOADS=1 \ -DWITH_SSL=bundled make && make install
二、优化服务
cp support-files/my-default.cnf /etc/my.cnf #复制配置文件
cp support-files/mysql.server /etc/init.d/mysqld # 复制启动脚本
chmod +x /etc/init.d/mysqld #添加执行权限
chkconfig --add mysqld # 添加至启动项
chkconfig --level 35 mysqld on # 35 模式启动
echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile #添加环境变量
source /etc/profile #加载环境变量
chown -R mysql.mysql /usr/local/mysq #权限设置
三、初始化数据库
/usr/local/mysql/scripts/mysql_install_db \
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql
四、修改启动脚本,启动服务
ln -s /var/lib/mysql/mysql.sock /home/mysql/mysql.sock # 创建sock软连接 vi /etc/init.d/mysqld # 修改启动脚本 basedir=/usr/local/mysql datadir=/home/mysql systemctl stop firewalld.service setenforce 0 service mysqld start netstat -ntap | grep 3306
mysql主从复制
一、修改mysql主服务器配置文件
vim /etc/my.cnf server-id = 11 #server-id主从服务器不能同样 log-bin=master-bin #主服务器日志文件 log-slave-updates=true #从服务器更新二进制日志 service mysqld restart
二、进mysql主数据库提权
grant replication slave on . to 'myslave'@'192.168.43.%' identified by '123123'
mysql> show master status;
+-------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+-------------------+----------+--------------+------------------+-------------------+
| master-bin.000003 | 499 | | | |
+-------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
三、修改mysql从服务器配置文件
vim /etc/my.cnf server-id 22 log-bin=/usr/local/mysql/data/slave-bin relay-log=realy-log-bin relay-log-index=slave-relay-bin.inde service mysqld restart
四、进mysql从数据库设置同步
change master to master_host='192.168.43.184',master_user='myslave',master_password='123123',master_log_file='master-bin.000003',master_log_pos=499;#指定主服务器,同步文件和文件偏移量
mysql> start slave; #开启同步
五、测试主从复制
//主服务器
//从服务器
六、为PHP程序员设置使用帐户
建立一个数据库名字有本身定,这里为manager;
建立一个帐户php,能够经过192.168.43网段的全部可用地址访问manager数据库,权限很是大,除了没//有建立用户并给其余用户赋权的权力,其余权限都有。
这样,只要把用户名php,密码和mysql的ip地址给开发程序员就能够了。
mysql>create database manager
mysql>grant all privileges on manager.* to 'php'@'192.168.43.%' identified by 'abc123';
一、搭建master server
(1)安装mfs
yum install gcc gcc-c++ zlib-devel -y useradd -s /sbin/nologin mfs #建立管理用户 tar zxvf mfs-1.6.27-5.tar.gz -C /opt cd /opt/mfs-1.6.27 ./configure \ --prefix=/usr/local/mfs \ #工做目录 --with-default-user=mfs \ #运行masterserver的用户 --with-default-group=mfs \ #运行masterserver的组 --disable-mfschunkserver \ #关闭节点服务 --disable-mfsmount #关闭客户端服务 make && make install
(2)复制相关配置文件,才可以使用
cd /usr/local/mfs/etc/mfs
cp mfsexports.cfg.dist mfsexports.cfg #被挂载目录及权限配置文件
cp mfsmaster.cfg.dist mfsmaster.cfg #主配置文件
cp mfstopology.cfg.dist mfstopology.cfg #拓扑架构感知
(3)配置防断链
cd /usr/local/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs #配置防断链
chown -R mfs.mfs /usr/local/mfs
(4)启动master server
/usr/local/mfs/sbin/mfsmaster start
systemctl stop firewalld.service
setenforce 0
(5)开启监控服务
/usr/local/mfs/sbin/mfscgiserv
测试:192.168.43.166:9425
二、搭建metalogger server
(1)安装mfs,此步奏和搭建Master Server的安装过程同样
(2)复制相关配置文件,才可以使用
cd /usr/local/mfs/etc/mfs
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
(3)编辑配置文件
vim mfsmetalogger.cfg
MASTER_HOST = 192.168.43.166 #指向master
(4)启动metalogger server
/usr/local/mfs/sbin/mfsmetalogger start
systemctl stop firewalld.service
setenforce 0
netstat -ntap | grep mfsmetalogger
三、搭建Chunk Server
本案中搭建chunk server一样操做
(1)安装mfs,此步奏和搭建Master Server的安装过程基本同样,配置过程当中只须要修改一处
master:--disable-mfschunkserver\
chunk: --disable-mfsmaster \
(2)复制相关配置文件,才可以使用
cd /usr/local/mfs/etc/mfs
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg #提供存储空间
(3)编辑配置文件
vim mfschunkserver.cfg MASTER_HOST = 192.168.37.128 #指向master vim mfshdd.cfg #末行插入 /data mkdir /data chown -R mfs.mfs /usr/local/mfs
(4)启动chunkserver
/usr/local/mfs/sbin/mfschunkserver start
systemctl stop firewalld.service
setenforce 0
netstat -ntap | grep mfs
四、挂载MFS分布式文件系统
#以php主机做为MFS的客户端,php主机须要另外安装两个重要软件mfs和fuse
(1)安装fuse
yum -y install zlib-devel
tar xvf fuse-2.9.2.tar.gz -C /opt
cd /opt/fuse-2.9.2/
./configure
make &&make install
(2)配置环境变量
echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH">>/etc/profile
source /etc/profile
(3)安装mfs
useradd mfs -s /sbin/nologin tar xvf mfs-1.6.27-5.tar.gz -C /opt cd /opt/mfs-1.6.27 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount make &&make install
(4)挂载
mkdir -p /var/www/html/webphp/uploads/photos
modprobe fuse #加载fuse模块到内核
/usr/local/mfs/bin/mfsmount /var/www/html/webphp/uploads/photos -H 192.168.43.166
echo "export PATH=/usr/local/mfs/bin:$PATH">>/etc/profile#识别mfs中全部命令
source /etc/profile
df -h
mfsgetgoal -r /var/www/html/webphp/uploads/photos #复制文本
一、安装svn
yum -y install subversion
svnserve --version #查看版本
二、为PHP程序员建立仓库目录repo
mkdir -p /opt/svn/repo #为PHP程序员建立仓库目录
svnadmin create /opt/svn/repo/ #建立一个新的仓库
三、调整svn参数
vim /opt/svn/repo/conf/svnserve.conf [general] #整体配置,必定要顶格写,否则会报错 anon-access = none #须要进行身份验证 auth-access = write #认证用户具备写权限 password-db = /opt/svn/repo/conf/passwd #用户的密码文件 authz-db = /opt/svn/repo/conf/authz #权限设置
四、为PHP程序员建立帐户并赋权
vim /opt/svn/repo/conf/passwd 【users】 alpha = 123123 vim /opt/svn/repo/conf/authz #末行添加 [/] #根目录即/opt/svn/repo目录下 alpha = r [/webphp] alpha = rw #用户对此目录有读写的权限,用户导入PHP代码
五、开启svn服务
systemctl stop firewalld.service
setenforce 0
svnserve -d -r /opt/svn/repo/
netstat -tunpl | grep svnserve
//关闭svnserve服务经过kill进程来实现,ps -ef | grep svn
六、建立并初始化webphp目录
mkdir /opt/svn/repo/webphp
cd /opt/svn/repo
svn import webphp file:///opt/svn/repo/webphp -m "initial" #初始化目录
cd /opt/svn/repo/webphp
touch 123.txt 2222.txt #写入内容
七、测试:映射SVN仓库webphp服务目录到Nginx和PHP服务器的webphp服务目录上
//Nginx主机:
cd /usr/local/nginx/html/
svn co svn://192.168.43.147/webphp//php主机
cd /var/www/html/
svn co svn://192.168.43.147/webphp
//根据提示,先输入主机本地root用户密码,再登陆用户密码,能够看到将webphp仓库中的内容都同步到nginx服务器的指定路径下了。