本文共 8808 字,大约阅读时间需要 29 分钟。
案例需求:社交网站采用PHP语言开发,为了管理开发代码,搭建SVN服务器进行版本控制,社交网站的第一个版本部署在LNMP平台上,前端为nginx服务器,通过fastcgi协议访问后端的PHP服务器。这里实现动静分离,动态页面交给PHP服务器来处理,静态页面交给nginx服务器来处理。为了保证数据安全,要求搭建Mysql数据库主从集群。
社交网站项目包含用户的相册功能,允许用户上传照片,上传照片需要使用共享存储来存放,针对共享存储采用MFS分布式文件系统来实现,并将MFS挂载在PHP服务器的相关目录下。
本案例拓扑图如图所示:
案例实施•部署SVN服务器,为PHP程序员创建repo目录的访问帐户,通知程序员可以导入代码•部署Nginx服务器•部署PHP服务器•部署Mysql主从服务器,根据PHP程序员的要求创建数据库与表•部署MFS,将MFS文件系统挂载在前端PHP服务器的相关目录下案例部署环境:
主机 | IP地址 | 操作系统 | 主要软件包 |
---|---|---|---|
SVN | 172.20.10.4 | CentOS7 | |
Nginx | 172.20.10.9 | CentOS7 | nginx-1.12.0.tar.gz |
PHP | 172.20.10.10 | CentOS7 | php-5.6.11.tar.bz2,mfs-1.6.27-5.tar.gz,fuse-2.9.2.tar.gz, ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz |
Mysql1 | 172.20.10.11 | CentOS7 | mysql-5.5.24.tar.gz |
Mysql2 | 172.20.10.12 | CentOS7 | mysql-5.5.24.tar.gz |
MFS master | 172.20.10.13 | CentOS7 | mfs-1.6.27-5.tar.gz |
metalogger | 172.20.10.14 | CentOS7 | mfs-1.6.27-5.tar.gz |
MFS chunk1 | 172.20.10.2 | CentOS7 | mfs-1.6.27-5.tar.gz |
MFS chunk2 | 172.20.10.3 | CentOS7 | mfs-1.6.27-5.tar.gz |
首先关闭所有主机的防火墙,selinux功能
systemctl stop firewalld.service
setenforce 0部署SVN服务器:
•安装SVN服务yum install -y subversion #安装SVNsvnserve --version #查看版本为PHP程序员创建仓库目录repomkdir -p /opt/svn/repo//创建目录svnadmin create /opt/svn/repo///创建一个新的仓库调整SVN参数vim /opt/svn/repo/conf/svnserve.confanon-access = none//匿名用户没有任何权限auth-access = write//认证用户具有写权限password-db = /opt/svn/repo/conf/passwd //用户的密码文件authz-db = /opt/svn/repo/conf/authz //用户信息文件,主要是权限内容启动SVN服务svnserve -d -r /opt/svn/repo/netstat -tunpl|grep svnserve为PHP程序员创建账户并赋权vim /opt/svn/repo/conf/passwd[users]zhangsan = abc123sysadmin = abc123vim /opt/svn/repo/conf/authz[/]zhangsan = r //根目录即/opt/svn/repo目录下,sysadmin具有读的权限sysadmin = r //zhangsan用户对根目录有读的权限[/webphp]zhangsan = rw //zhangsan用户对此目录有读写的权限,用户导入PHP代码sysadmin = r //运维工程师具有读的权限,用于部署初始化php程序员目录库mkdir /opt/svn/repo/webphpsvn import webphp/ file:///opt/svn/repo/webphp -m "初始化svn目录"SVN服务器部署完成,PHP程序员可以将写好的代码导入webphp项目中。部署Nginx服务•事先将需要的软件包放到家目录下,进行部署;yum -y install pcre-devel zlib-devel gcc gcc-c++ makeuseradd -M -s /sbin/nologin nginxtar xzvf nginx-1.12.0.tar.gz -C /optcd /opt/nginx-1.12.0/./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module make && make installln -s /usr/local/nginx/sbin/* /usr/local/sbin/nginx netstat -antp | grep nginx配置nginx支持php解析
(1)在nginx的主配置文件中的server{}配置段,将php的网页请求转给PHP服务器的fpm模块处理vi /usr/local/nginx/conf/nginx.conflocation ~ .php$ { root /var/www/html/webphp; #php文件所在目录fastcgi_pass 172.20.10.10:9000; #php文件转发给php-fpm模块fastcgi_index index.php; #默认文件是index.phpinclude fastcgi.conf; #包含fastcgi的配置文件}(2)重启nginx服务killall -1 nginx
部署PHP服务器
•事先将需要的软件包放到家目录下,进行部署;(1)安装phpyum -y install gd libxml2-devel libjpeg-devel libpng-devel zlib-devel fontconfig-devel openssl-devel bzip2-develcd ~/tar xjvf php-5.6.11.tar.bz2 cd php-5.6.11/./configure --prefix=/usr/local/php5 --with-gd --with-zlib -with-config-file-path=/usr/local/php5 --enable-mbstring --with-jpeg-dir=/usr/lib --with-openssl --disable-ipv6 --enable-fpm make && make installcp php.ini-development /usr/local/php5/php.iniln -s /usr/local/php5/bin/ /usr/local/bin/ln -s /usr/local/php5/sbin/ /usr/local/sbin/(2)配置安装php加速器
cd ~/
tar xzvf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gzcd ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.xcp ZendGuardLoader.so /usr/local/php5/lib/phpvim /usr/local/php5/php.ini在php.ini文件末尾加入以下参数,开启ZendGuardLoader模块
(3)配置php-fpm进程cd /usr/local/php5/etc/
cp php-fpm.conf.default php-fpm.confuseradd -M -s /sbin/nologin php vim php-fpm.conf//找到这些内容,然后修改pid = run/php-fpm.piduser = phpgroup = phplisten = 0.0.0.0:9000pm.max_children = 50pm.start_servers = 20pm.min_spare_servers = 5pm.max_spare_servers = 35(4)启动php-fpm进程/usr/local/sbin/php-fpmnetstat -tnal | grep 9000部署MySQL数据库,部署主从复制•事先将需要的软件包放到家目录下,进行部署;yum -y install ncurses-devel cmake gcc gcc-c++ ncurses bison libaio-devel
cd ~/tar xzvf mysql-5.5.24.tar.gzcd mysql-5.5.24/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/ -DWITH_MYISAM_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优化调整
在mysql源码目录中的support-files文件夹下,根据实际需求建立mysql系统的配置文件my.cnf
将mysql服务的启动脚本mysql.server添加为系统服务,并设置为开机自启项
\cp support-files/my-medium.cnf /etc/my.cnfcp support-files/mysql.server /etc/init.d/mysqldchmod +x /etc/init.d/mysqld chkconfig --add mysqldchkconfig --level 35 mysqld on设置环境变量
为了方便在任何目录下使用mysql命令,需要在/etc/profile设置环境变量
echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profilesource /etc/profile初始化数据库
为了能够正常使用mysql数据库系统,应以运行用户mysql的身份执行初始化
useradd -s /sbin/nologin mysqlchown -R mysql.mysql /usr/local/mysql/usr/local/mysql/scripts/mysql_install_db --user=mysql --ldata=/var/lib/mysql --basedir=/usr/local/mysql --datadir=/home/mysqlvim /etc/init.d/mysqld
...........
basedir=/usr/local/mysql
datadir=/home/mysql #修改服务启动脚本,指定数据存放位置
............
启动mysql服务
service mysqld startnetstat -anpt | grep 3306配置主从复制;
•修改mysql master主服务器的配置文件,在配置文件中修改或增加以下选项vim /etc/my.cnf
server-id = 1 //修改id
log-bin=master-bin //增加主服务器日志文件//log-slave-updates=true //增加从服务器更新二进制日志//重启服务service mysqld restart
登录mysql程序,给mysql slave从服务器授权mysql slave从服务器配置•在配置文件中修改或增加以下选项
vim /etc/my.cnf
[mysqld]
server-id = 2 #与主服务器id不一样
relay-log=relay-log-bin //从主服务器上同步日志文件记录到本地//
relay-log-index=slave-relay-bin.index //定义relay-log的位置和名称//
service mysqld restart登录mysql配置同步按主服务器结果更改下面命令中的master_log_file和master_log_pos的参数
在mysql master上给PHP服务器帐户授权,并同时验证主从同步;在mysql slave上查看同步过来的数据库daima;映射SVN仓库webphp服务目录到Nginx和PHP服务器上;在Nginx服务器上;
编辑nginx首页文档index.html,并在浏览器上进行测试在PHP服务器上
mkdir -p /var/www/html/
在网站根目录下编写一个“.php”格式的测试页面文件,使用PHP内建的“phpinfo()”函数显示服务器的PHP环境信息,PHP代码应包括在“<?php....?>”标记之间。在网页 测试“。测试PHP网页能否访问Mysql数据库•再编写一个测试网页文件mysql.php,添加简单的数据库操作命令,用于验证与Mysql服务器的连接,查询等操作。其中“mysql_connect()”函数用于连接Mysql数据库,需要指定目标主机地址,以及授权访问的用户名,密码。
通过浏览器访问测试网页,“。部署MFS分布式文件系统
具体部署过程可参考另一篇文章《MFS分布式文件系统原理及环境搭建》
•搭建Master Server
yum install -y zlib-devel gcc gcc-c++useradd mfs -s /sbin/nologintar xvf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27/./configure \--prefix=/usr/local/mfs \--with-default-user=mfs \--with-default-group=mfs \--disable-mfschunkserver \--disable-mfsmountmake && make install
复制配置文件
在Master上需要用到的配置文件有两个:mfsmaster.cfg(主配置文件)和mfsexports.cfg(被挂载目录及权限配置文件)
cd /usr/local/mfs/etc/mfs/
cp mfsexports.cfg.dist mfsexports.cfgcp mfsmaster.cfg.dist mfsmaster.cfgcp mfsmetalogger.cfg.dist mfsmetalogger.cfgcd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs/usr/local/mfs/sbin/mfsmaster start #开启服务
•搭建MetaLogger serveryum install gcc gcc-c++ zlib-devel -y
useradd -s /sbin/nologin mfstar zxvf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27./configure \
--prefix=/usr/local/mfs \--with-default-user=mfs \--with-default-group=mfs \--disable-mfschunkserver \--disable-mfsmountmake && make install
cd /usr/local/mfs/etc/mfs/
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg修改配置文件
vi mfsmetalogger.cfgMATER_HOST = 172.20.10.13 #指向master/usr/local/mfs/sbin/mfsmetalogger start #开启服务
•搭建chunk Server(两台节点服务配置一样)
yum install -y zlib-devel gcc gcc-c++
useradd -s /sbin/nologin mfstar zxvf mfs-1.6.27-5.tar.gzcd mfs-1.6.27./configure \--prefix=/usr/local/mfs \--with-default-user=mfs \--with-default-group=mfs \--disable-mfsmaster \--disable-mfsmountmake && make install
cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfgcp mfshdd.cfg.dist mfshdd.cfg修改配置文件
vi mfschunkserver.cfg
MASTER_HOST = 172.20.10.13指定 MFS共享文件存储目录,vi mfshdd.cfg/datamkdir /data
chown -R mfs:mfs /data/usr/local/mfs/sbin/mfschunkserver start #启动服务
•在PHP服务器上配置MFS客户端。并挂载使用;安装fuse插件
yum install -y zlib-devel gcc gcc-c++
tar xzvf fuse-2.9.2.tar.gz
cd fuse-2.9.2./configure
make && make installvi /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATHsource /etc/profile安装MFS
useradd mfs -s /sbin/nologin
tar zxvf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27./configure \
--prefix=/usr/local/mfs \--with-default-user=mfs \--with-default-group=mfs \--disable-mfsmaster \--disable-mfschunkserver \--enable-mfsmountmake && make install
将mfs文件系统挂载在PHP服务器的/var/www/html/webphp/uploads/photos目录下
mkdir -p /var/www/html/webphp/uploads/photosmodprobe fuse //加载fuse模块到内核//
/usr/local/mfs/bin/mfsmount /var/www/html/webphp/uploads/photos -H 172.20.10.13df –hT优化客户端
echo "export PATH=/usr/local/mfs/bin:$PATH" >>/etc/profile
source /etc/profile
mfssetgoal -r 2 /var/www/html/webphp/uploads/photos/ #设置文件被复制两份•在MASTER-server上启动监控服务,通过浏览器可以监控MFS系统/usr/local/mfs/sbin/mfscgiserv
下一篇《SVN客户端配置及PHP程序员代码导入》将讲解在windows部署SVN客户端及PHP程序员如何将代码导入webphp项目中。转载于:https://blog.51cto.com/13728740/2292334