1. 程式人生 > >搭建SVN,部署社交網站

搭建SVN,部署社交網站

復制 authz lib access black 空間 nmp list develop

概述:
社交網站的第一個版本部署在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/bash
    yum -y install ncurses-devel cmake gcc gcc-c++ ncurses bison libaio-devel
    cd ~/
    tar xzvf mysql-5.5.24.tar.gz
    cd 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.cnf
    cp support-files/mysql.server /etc/init.d/mysqld
    chmod +x /etc/init.d/mysqld       
    chkconfig --add mysqld
    chkconfig --level 35 mysqld on 
    echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile
    source /etc/profile
    useradd -s /sbin/nologin mysql
    chown -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/mysqld
    sed -i ‘47c datadir=/home/mysql‘ /etc/init.d/mysqld
    service mysqld start
    netstat -anpt | grep 3306

    執行腳本安裝完成、啟動之後查看監聽端口:
    技術分享圖片
    修改MySQL主服務器配置文件:
    技術分享圖片
    登錄MySQL程序,給從服務器授權:
    技術分享圖片
    主服務器上給PHP授權:
    技術分享圖片
    接下來修改MySQL從服務器配置文件:
    技術分享圖片
    啟動從服務器之後查看監聽端口:
    技術分享圖片
    登錄MySQL從服務器配置同步:
    技術分享圖片
    在從服務器中可以驗證,可以查看到從主服務器上同步過來的庫daima:
    技術分享圖片

  • 部署Nginx服務器
    這裏安裝Nginx服務器直接用如下寫好的shell腳本執行自動安裝啟動:

    #!/bin/bash
    yum -y install pcre-devel zlib-devel gcc gcc-c++ make
    useradd -M -s /sbin/nologin nginx
    tar xzvf nginx-1.12.0.tar.gz -C /opt
    cd /opt/nginx-1.12.0/
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module 
    make && make install
    ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
    nginx   
    netstat -antp | grep nginx

    安裝完成之後修改nginx配置文件:
    技術分享圖片
    技術分享圖片

  • 部署PHP服務器
    這裏安裝配置PHP服務器直接用如下寫好的shell腳本執行自動安裝啟動:
    #!/bin/bash
    yum -y install gd libxml2-devel libjpeg-devel libpng-devel zlib-devel fontconfig-devel openssl-devel bzip2-devel
    cd ~/
    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 install
    cp php.ini-development /usr/local/php5/php.ini
    ln -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.gz
    cd ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x
    cp ZendGuardLoader.so /usr/local/php5/lib/php
    sed -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.conf
    useradd -M -s /sbin/nologin php 
    sed -i ‘25s/;//g‘ /usr/local/php5/etc/php-fpm.conf
    sed -i ‘149,150s/nobody/php/g‘ /usr/local/php5/etc/php-fpm.conf
    sed -i ‘235s/5/50/g‘ /usr/local/php5/etc/php-fpm.conf
    sed -i ‘240s/2/20/g‘ /usr/local/php5/etc/php-fpm.conf
    sed -i ‘245s/1/5/g‘ /usr/local/php5/etc/php-fpm.conf
    sed -i ‘250s/3/35/g‘ /usr/local/php5/etc/php-fpm.conf
    sed -i ‘/^listen/c listen = 0.0.0.0:9000‘ /usr/local/php5/etc/php-fpm.conf
    /usr/local/sbin/php-fpm
    netstat -tnal | grep 9000
    mkdir -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.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
* vim mfsmetalogger.cfg
MASTER_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,部署社交網站