公司的社交网站采用PHP语言开发,为了管理PHP程序员开发的代码,上级领导要求搭建SVN服务器进行版本控制。社交网站的第一个版本部署在LNMP平台之上,前端为 Nginx服务器,通过 fastcgi协议访问后端的PHP服务器。为了保证数据安全,
要求搭建 MYSQL数据库主从集群。
社交网站项目包含用户的相册功能,允许用户上传照片,上传照片需要使用共享
存储来存放。针对共享存储可用的开源方案有很多,如MFS、 FastDFS等。公
使用MFS分布式文件系统来实现,并将MFS挂载在PHP服务器的相关目录司决定
案例实施
根据公司的需求,实施过程大致分为以下步骤
部署SVN服务器,为PHP程序员创建repo目录的访问账户,通知程序员可
以导入代码
部署 MYSQL主从服务器,根据PHP程序员的要求创建数据库与表
部署 Nginx服务器
使用keepalived对Nginx服务器做热备
部署PHP服务器
部署MFS,将MFS文件系统挂载在前端PHP服务器的相关目录下
通知上线部署人员可以发布上线。
保证数据库服务、PHP服务、 Nginx服务依次启动,并通知测试人员开始测试,
网站维护人员检查 Nginx、PHP与数据库服务器是否正常工作。
本篇将部署SVN 与 LNMP 架构
SVN 部署 ?(IP:192.168.100.101)
yum install subversion ????subversion --version ??##查看版本mkdir -p /opt/svn/repo ???##创建目录svnadmin create /opt/svn/repo ???##创建一个新的仓库vim /opt/svn/repo/conf/svnserve.conf[general] ??????##总体配置anon-access = none ????##匿名用户没有任何权限auth-access = write ????##认证用户具有写权限passwd-db = /opt/svn/repo/conf/passwd ????##用户的密码文件auth-db = /opt/svn/repo/conf/authz ????##用户信息文件!! ?svnserve.conf 配置文件有严格的格式要求,每一行前面不能有空格, 等号前后也都有空格。 ??如果格式正确仍然无法验证,可以更改passwd-db =passwdauth-db = authz 设为默认路径即可svnserve -d -r /opt/svn/repo ????##启动svn服务netstat -tunlp | grep svnserve3690 端口开启如需关闭svn服务 可以通过kill PID方式为PHP 程序员zhangsan 建立账户,配置对 repo 仓库具有读写权限,并将账户信息及仓库目录信息反馈给PHP程序员。vim /opt/svn/repo/conf/passwd[users]zhangsan=abc123 ?## 格式 ??用户名=密码vim /opt/svn/repo/conf/authz[/]zhangsan = r[/webphp]zhangsan = rw ????##zhangsan用户具有读写权限mkdir /opt/svn/repo/webphpsvn import webphp file:///opt/svn/repo/webphp -m "init web" ????????## 导入webphp
SVN部署完成, PHP程序员可以在WINDOWS / LINUX安装客户端, 然后导入代码
部署LNMP架构-Nginx 服务器 (IP : 192.168.100.102 )
yum install pcre-devel zlib-devel -y ???##安装依赖包useradd -M -s /sbin/nologin nginxtar xzvf nginx-1.6.0.tar.gzcd nginx-1.6.0./configure ?--prefix=/usr/local/nginx/ ????##安装目录--user=nginx ?????????##用户--group=nginx ????????##用户的基本组--with-http_stub_status_module ???##开启监控模块vim /usr/local/nginx/conf/nginx.confuser nginx;location / { ???root html/webphp; ???index index.html index.htm;}location ~\/php$ { ???root /var/www/html/webphp; ???fastcgi_pass 192.168.100.103:9000; ???fastcgi_index index.php; ???include fastcgi.conf;}##配置后端PHP程序的fastcgi访问接口ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin ??##创建软连接 系统识别命令路径nginx ????##开启服务netstat -ntap | grep nginx80端口开启 即为 服务开启成功
部署LNMP架构-PHP服务器 (IP : 192.168.100.103)
yum install gd libxml2-devel libjpeg-devel libpng-devel mysql-devel -yuseradd -M -s /sbin/nologin phptar xzvf php-5.3.28.tar.gacd php-5.3.28cp /usr/lib64/mysql/libmysqlclient.so.18.0.0 /usr/lib/libmysqlclient.so## PHP默认去 /usr/lib 搜索 libmysqlclient.so./configure --prefix=/usr/local/php ??##安装目录--with-gd--with-zlib--with-mysql--with-mysqli--with-mysql-sock--with-config-file-path=/usr/local/php ??##配置文件目录--enable-mbstring ???##配置mbstring和fpm模块--enalbe-fpm--with-jpeg-dir=/usr/dirmake && make installcd /usr/local/php/etccp php-fpm.conf.default php-fpm.confvim php-fpm.confpid = run/php-fpm.pid ???##pid文件user = php ?????????##用户group = php ????????##用户基本组listen = 0.0.0.0:9000 ?????##监听端口pm.max_childre = 50 ???##子进程最大存在数pm.start_servers = 20 ????##服务开始时的子进程数pm.min_spare_servers = 5 ???##最小等待运行的子进程数pm.max_spare_servers = 35 ??##最大等待运行的子进程数/usr/local/php/sbin/php-fpm ????##开启fpm模块mkdir -p /var/www/html/webphp/vim /var/www/html/webphp/index.php<?phpinfo();?>##编辑PHP首页
通过keepalived 对nginx 服务器做热备
备份Nging服务器 IP地址为 192.168.100.104配置如 第一台完全一样yum install keepalived ipvsadm -y在主服务器上vim /etc/keepalived/keepalived.confglobal_defs { ???router_id LVS_01 ???##本路由的名称}vrrp_instance_VI_1 { ???state MASTER ???##热备状态 此为主服务器状态 ???interface ens33 ??##承载虚拟IP的物理接口 ???virtual_router_id 1 ???##虚拟路由的ID,同热备组应在同一ID下 ???priority 100 ????##优先级 ?数值越大级别越高 ???advert_int 1 ???##通告间隔秒数 ???virtual_ipaddress { ???##虚拟IP ???????192.168.100.200 ???}}在备份服务器上vim /etc/keepalived/keepalived.confglobal_defs { ???router_id LVS_02 ???##本路由的名称}vrrp_instance_VI_1 { ???state BACKUP ??##热备状态 此为备份服务器状态 ???interface ens33 ??##承载虚拟IP的物理接口 ???virtual_router_id 1 ???##虚拟路由的ID,同热备组应在同一ID下 ???priority 90 ????##优先级 ?数值越大级别越高 ???advert_int 1 ???##通告间隔秒数 ???virtual_ipaddress { ???##虚拟IP ???????192.168.100.200 ???}}通过 systemctl start keepalived 开启服务
测试
通过浏览器访问 Nginx 虚拟IP ?192.168.100.200/index.php 能够看到PHP界面
关掉主服务器的keepalived服务 ?访问虚拟IP仍然可以看到PHP界面
部署社交网站-SVN 与 LNMP架构
原文地址:http://blog.51cto.com/13625924/2151642