1. 程式人生 > >部署社交網站-SVN 與 LNMP架構

部署社交網站-SVN 與 LNMP架構

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架構