搭建SVN,部署社交網站
阿新 • • 發佈:2018-10-01
復制 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,部署社交網站