部署社交網站-SVN 與 LNMP架構
阿新 • • 發佈:2018-07-29
lin 要求 master 決定 主服務器 通過 install windows 啟動svn 案例概述
以導入代碼
公司的社交網站采用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界面
部署社交網站-SVN 與 LNMP架構