案例概述
公司的社交网站采用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 =passwd
auth-db = authz
设为默认路径即可
svnserve -d -r /opt/svn/repo ##启动svn服务
netstat -tunlp | grep svnserve
3690 端口开启
如需关闭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/webphp
svn 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 nginx
tar xzvf nginx-1.6.0.tar.gz
cd nginx-1.6.0
./configure --prefix=/usr/local/nginx/ ##安装目录
--user=nginx ##用户
--group=nginx ##用户的基本组
--with-http_stub_status_module ##开启监控模块
vim /usr/local/nginx/conf/nginx.conf
user 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 nginx
80端口开启 即为 服务开启成功
部署LNMP架构-PHP服务器 (IP : 192.168.100.103)
yum install gd libxml2-devel libjpeg-devel libpng-devel mysql-devel -y
useradd -M -s /sbin/nologin php
tar xzvf php-5.3.28.tar.ga
cd php-5.3.28
cp /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/dir
make && make install
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
pid = 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.conf
global_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.conf
global_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界面
原文地址:http://blog.51cto.com/13625924/2151642
时间: 2024-11-05 20:27:47