社交网站的第一个版本部署在LNMP平台之上,前段为Nginx服务器,通过fastcgi协议访问后端的PHP服务器。为了保证数据安全,要求搭建MySQL数据库主从集群。
项目介绍:
本项目案例结合SVN、LNMP和MySQL三种环境,部署一个社交网站,本社交网站采用PHP语言开发,搭建SVN服务器进行版本控制和集中管理PHP程序员开发的代码,以Nginx作为前端服务器,通过fastcgi协议访问后端的PHP服务器,调用PHP页面;为保证数据安全,搭建MySQL主从复制环境存储用户重要数据;另外搭建MFS分布式文件系统来存储用户照片。
项目实验图解:
项目案例拓扑图:
网络关系原理如下图所示:
案例实施步骤:
* 部署SVN服务器,为PHP程序员创建repo目录的访问账户,通知程序员可以导入代码。* 部署MySQL主从服务器,根据PHP程序员的要求创建数据库与表。* 部署Nginx服务器。* 部署PHP服务器。* 部署MFS,将MFS文件系统挂载在前端PHP服务器的相关目录下。* 通知上线部署人员可以发布上线。* 保证数据库服务、PHP服务、Nginx服务依次启动,并通知测试人员开始测试,网站维护人员检查Nginx、PHP与数据库服务器是否正常工作。
接下来部署实验:
环境准备:
主机 | 操作系统 | IP地址 | 主要软件 |
---|---|---|---|
Nginx | CentOS7.5 x86_64 | 172.20.10.9 | nginx-1.12.0.tar.gz |
PHP | CentOS7.5 x86_64 | 172.20.10.10 | php-5.6.11.tar.bz2/ mfs-1.6.27-5.tar.gz/fuse-2.9.2.tar.gz |
MySQL Master | CentOS7.5 x86_64 | 172.20.10.11 | mysql-5.5.24.tar.gz |
MySQL Slave | CentOS7.5 x86_64 | 172.20.10.12 | mysql-5.5.24.tar.gz |
Master Server | CentOS7.5 x86_64 | 172.20.10.13 | mfs-1.6.27-5.tar.gz |
MetaLogger | CentOS7.5 x86_64 | 172.20.10.14 | mfs-1.6.27-5.tar.gz |
Chunk Server01 | CentOS7.5 x86_64 | 172.20.10.2 | mfs-1.6.27-5.tar.gz |
Chunk Server02 | CentOS7.5 x86_64 | 172.20.10.3 | mfs-1.6.27-5.tar.gz |
SVN | CentOS7.5 x86_64 | 172.20.10.4 | subversion 1.7.14 |
实验过程:
- 部署SVN服务器:
安装SVN:
* ?systemctl stop firewalld.service* setenforce 0* yum install -y subversion ???#安装SVN* svnserve --version ?#查看版本
为PHP程序员创建仓库 目录repo:
* mkdir -p /opt/svn/repo/ ??????????#创建目录* svnadmin create /opt/svn/repo/ ???????#创建一个新的仓库
调整SVN参数:
* [general] ???#总体配置* vim /opt/svn/repo/conf/svnserve.conf ???????# ??修改配置* anon-access = none ?????????#匿名用户没有任何权限* auth-access = write ???????????#认证用户具有写权限* password-db = /opt/svn/repo/conf/passwd ??????#用户的密码文件* authz-db = /opt/svn/repo/conf/authz ????????????????#用户信息文件,主要是权限内容
* svnserve -d -r /opt/svn/repo/* netstat -tunlp | grep svnserve ?#监听端口3690
接下来为PHP程序员创建账户并赋权:
* vim /opt/svn/repo/conf/passwd* [users]* zhangsan = abc123 ????????#格式:用户名=用户密码* sysadmin = abc123
* vim /conf/authz* [/]* zhangsan = r ?????????#根目录即/opt/svn/repo目录下,zhangsan和sysadmin具有读的权限* sysadmin = r* [/webphp]* zhangsan = rw ?????#zhangsan和sysadmin用户对此目录有读写的权限,用户导入PHP代码* sysadmin = ?rw ???????
* mkdir /opt/svn/repo/webphp* svn import webphp/ file:///opt/svn/repo/webphp -m "初始化svn目录"
部署MySQL主从服务器:
这里安装两台MySQL服务器直接用如下写好的shell脚本执行自动安装启动:#!/bin/bashyum -y install ncurses-devel cmake gcc gcc-c++ ncurses bison libaio-develcd ~/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\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 echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profilesource /etc/profileuseradd -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/mysql sed -i ‘46c basedir=/usr/local/mysql‘ /etc/init.d/mysqldsed -i ‘47c datadir=/home/mysql‘ /etc/init.d/mysqldservice mysqld startnetstat -anpt | grep 3306
执行脚本安装完成、启动之后查看监听端口:
修改MySQL主服务器配置文件:
登录MySQL程序,给从服务器授权:
主服务器上给PHP授权:
接下来修改MySQL从服务器配置文件:
启动从服务器之后查看监听端口:
登录MySQL从服务器配置同步:
在从服务器中可以验证,可以查看到从主服务器上同步过来的库daima:部署Nginx服务器:
这里安装Nginx服务器直接用如下写好的shell脚本执行自动安装启动:#!/bin/bashyum -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服务器:
这里安装配置PHP服务器直接用如下写好的shell脚本执行自动安装启动:#!/bin/bashyum -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/#配置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/phpsed -i ‘$a [Zend Guard Loader]\nzend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so\nzend_loader.enable=1‘ ?/usr/local/php5/php.ini#开启nginx的php支持cd /usr/local/php5/etc/cp ?php-fpm.conf.default php-fpm.confuseradd -M -s /sbin/nologin php sed -i ‘25s/;//g‘ /usr/local/php5/etc/php-fpm.confsed -i ‘149,150s/nobody/php/g‘ /usr/local/php5/etc/php-fpm.confsed -i ‘235s/5/50/g‘ /usr/local/php5/etc/php-fpm.confsed -i ‘240s/2/20/g‘ /usr/local/php5/etc/php-fpm.confsed -i ‘245s/1/5/g‘ /usr/local/php5/etc/php-fpm.confsed -i ‘250s/3/35/g‘ /usr/local/php5/etc/php-fpm.confsed -i ‘/^listen/c listen = 0.0.0.0:9000‘ /usr/local/php5/etc/php-fpm.conf/usr/local/sbin/php-fpmnetstat -tnal | grep 9000mkdir -p /var/www/html
提示:安装完成之后shell脚本执行已经改好了配置,我们可以通过以下图示看一下:
配置加速器:
启动PHP-fpm进程 ?/usr/local/php/sbin/php-fpm ?然后查看监听端口:
- 部署MFS:
* ?安装环境包:* yum install -y zlib-devel gcc gcc-c++ ?????????????#安装所需的环境包* useradd mfs -s /sbin/nologin ?????????????????????????#创建用户mfs
* 解压下载好的软件包并进行手工编译安装:* * tar zxvf mfs-1.6.27-5.tar.gz -C /opt/* cd mfs-1.6.27 ????????????????????#切换到opt/mfs-1.6.27下插入如下配置* ./configure --prefix=/usr/local/mfs --with-default-user=mfs \ ??????????--with-default-group=mfs --disable-mfschunkserver --disable-mfsmount* make && make install
* 切换到配置文件下复制并去掉模板的dist后缀,开启配置文件:* cd /usr/local/mfs/etc/mfs/ ?????cp mfsmaster.cfg.dist mfsmaster.cfg ?????cp mfsexports.cfg.dist mfsexports.cfg ?cp mfstopology.cfg.dist mfstopology.cfg* cd /usr/local/mfs/var/mfs/ ?cp metadata.mfs.empty metadata.mfs
* ??关闭防火墙、关闭增强性安全功能:* systemctl stop firewalld.service* setenforce 0* ?/usr/local/mfs/sbin/mfsmaster start ???#开启服务* ps -ef | grep mfs ???????#查看监听状态* /usr/local/mfs/sbin/mfsmaster -s ?#停止
到此master server已经搭建完成,接下来搭建metalogger server:
* 安装编译环境、关闭防火墙、关闭增强性安全功能:* ?yum install -y zlib-devel gcc gcc-c++* systemctl stop firewalld.service* setenforce 0
创建mfs用户,解压软件包进行手工编译:
* useradd -s /sbin/nologin mfs* tar xzvf mfs-1.6.27-5.tar.gz -C /opt/* cd mfs-1.6.27./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount* make && make install
切换到配置文件下复制并去掉模板的dist后缀,开启配置文件:
* cd /usr/local/mfs/etc/mfs/cp mfsmaster.cfg.dist mfsmaster.cfgcp mfsexports.cfg.dist mfsexports.cfgcp mfsmetalogger.cfg.dist mfsmetalogger.cfg
* vim mfsmetalogger.cfgMASTER_HOST = 172.20.10.13 ????去掉#注释 添加主机地址
* cd /usr/local/mfs/var/mfs ?mv metadata.mfs.empty metadata.mfs* /usr/local/mfs/sbin/mfsmetalogger start ???#开启服务
到此metalogger server已经搭建完成,接下来搭建两台节点服务器 chunk server
先搭建第一台chunk server:
* systemctl stop firewalld.service* setenforce 0* yum install -y zlib-devel gcc gcc-c++* useradd -s /sbin/nologin mfs* tar xzvf 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-mfsmount* make && make install
* cd /usr/local/mfs/etc/mfs/ ?cp mfschunkserver.cfg.dist mfschunkserver.cfg ?cp mfshdd.cfg.dist mfshdd.cfg
* vim mfschunkserver.cfg ???MASTER_HOST = 172.20.10.13 ?????去掉#注释 添加主机地址* vim mfshdd.cfg ??/data ??????????????#末尾添加`` 提供存储空间* mkdir /data* chown -R mfs:mfs /data* /usr/local/mfs/sbin/mfschunkserver start* netstat -ntap * 提示: 第一台 chunk server搭建完成,第二台和第一台安装配置是一样的,这里就不再写了。
接下来配置PHP客户端:
* systemctl stop firewalld.service* setenforce 0* yum install -y zlib-devel* tar xzvf fuse-2.9.2.tar.gz -C /opt/
* cd /opt/fuse-2.9.2 ?./configure* make && make install
* vim /etc/profile ?export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH ?#末尾插入* source /etc/profile
* 安装mfs客户端:* useradd mfs -s /sbin/nologin* 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 --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount* make && make install
* mkdir /opt/mfs* modprobe fuse ?#加载fuse模块到内核* /usr/local/mfs/bin/mfsmount /opt/mfs -H 172.20.10.13 ??#指向master主机* df -hT ??#查看挂载
* 优化客户端:* vim /etc/profile* export PATH=/usr/local/mfs/bin:$PATH ??????#设置环境变量 在末尾插入* cd /opt/mfs(可在mfs里写入内容进行验证:echo "this is test" > test.txt)* source /etc/profile ???#重新加载* mfsgetgoal -r 2 /opt/mfs/ ???????#复制2份文件
最后一步在master server启动监控程序:
* /usr/local/mfs/sbin/mfscgiserv* http://172.20.10.13:9425 ???????#客户端浏览器上进行访问测试
最后映射SVN仓库webphp服务目录到Nginx和PHP服务器的webphp目录上:
Nginxf服务器上:
PHP服务器上:
测试PHP、解析MySQL:
搭建SVN,部署社交网站
原文地址:http://blog.51cto.com/13721050/2288064