主機名 | 角色 | 外網IP | 內網IP | 安裝服務 |
---|---|---|---|---|
lb01 | 負載均衡 | 10.0.0.51 | 172.16.1.51 | nginx |
web01 | web服務器 | 10.0.0.7 | 172.16.1.7 | nginx php nfs-utils wordpress wecenter phpmyadmin |
web02 | web服務器 | 10.0.0.8 | 172.16.1.8 | nginx php nfs-utils wordpress wecenter phpmyadmin |
web03 | web服務器 | 10.0.0.9 | 172.16.1.9 | nginx php nfs-utils wordpress wecenter phpmyadmin |
nfs | 共享存儲 | 10.0.0.31 | 172.16.1.31 | nfs-utils sersync |
db01 | 數據庫 | 10.0.0.51 | 172.16.1.51 | mariadb-server |
backup | 備份服務器 | 10.0.0.41 | 172.16.1.41 | rsync |
1.將作好的rpm包使用rz命令上傳 mkdir nginx_php && cd nginx_php && tar xf ../nginx_php.tar.gz 2. 代理機 負載均衡機 安裝nginx [root@lb01 ~]# yum -y localinstall nginx* 服務器安裝nginx php nfs-utils [root@web01 ~]# yum remove -y php-mysql-5.4 php php-fpm php-common && \ yum localinstall -y *.rpm [root@web01 ~]# yum install -y nfs-utils [root@web02 ~]# yum remove -y php-mysql-5.4 php php-fpm php-common && \ yum localinstall -y *.rpm [root@web02 ~]# yum install -y nfs-utils [root@web03 ~]# yum remove -y php-mysql-5.4 php php-fpm php-common && \ yum localinstall -y *.rpm [root@web03 ~]# yum install -y nfs-utils 共享存儲機安裝nfs [root@nfs ~]# yum install -y nfs-utils 數據庫機安裝mariadb [root@db01 ~]# yum install -y mariadb-server 3.啓動並加入開機自啓動 [root@lb01 ~]# systemctl start nginx [root@web01 ~]# systemctl start nginx php-fpm nfs (能夠一塊兒啓動) [root@web02 ~]# systemctl start nginx php-fpm nfs [root@web03 ~]# systemctl start nginx php-fpm nfs [root@nfs ~]# systemctl start nfs [root@db01 ~]# systemctl start mariadb [root@lb01 ~]# systemctl enable nginx [root@web01 ~]# systemctl enable nginx php-fpm nfs (一個一個啓動) [root@web02 ~]# systemctl enable nginx php-fpm nfs [root@web03 ~]# systemctl enable nginx php-fpm nfs [root@nfs ~]# systemctl enable nfs [root@db01 ~]# systemctl enable mariadb 4.建立www用戶 [root@web01 ~]# groupadd www -g 666 [root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M [root@web02 ~]# groupadd www -g 666 [root@web02 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M [root@nfs ~]# groupadd www -g 666 [root@nfs ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M 5.web01 web02修改nginx和PHP的默認用戶 sed -i '/^user/c user www;' /etc/nginx/nginx.conf sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf 6.重載nginx配置文件 nginx -sreload && systemctl restart php-fpm.service
須要先作好數據庫php
服務器web01 web02執行如下操做,server是通用的 1.手寫server語句'模板' vim /etc/nginx/conf.d/wp.conf server { listen 80; server_name cs.wp.com; root /code/wordpress; index info.php index.php; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 2.重載nginx服務 nginx -sreload 3.下載安裝包 wp: mkdir /code -p && cd /code && \ wget http://test.driverzeng.com/Nginx_Code/wordpress-5.0.3-zh_CN.tar.gz zh: mkdir /code -p && cd /code && \ wget http://test.driverzeng.com/Nginx_Code/WeCenter_3-2-1.zip pm: mkdir /code -p && cd /code && \ wget http://test.driverzeng.com/Nginx_Code/phpMyAdmin-4.9.0.1-all-languages.zip 4.安裝服務 tar xf wordpress-5.0.3-zh_CN.tar.gz && rm -rf wordpress-5.0.3-zh_CN.tar.gz zh: unzip WeCenter_3-2-1.zip && rm -rf WeCenter_3-2-1.zip __MACOSX/ && \ mv WeCenter_3-2-1 WeCenter pm: : unzip phpMyAdmin-4.9.0.1-all-languages.zip && rm -rf phpMyAdmin-4.9.0.1-all-languages.zip && \ mv phpMyAdmin-4.9.0.1-all-languages pm 5.受權 chown -R www.www /code
1.給root一個密碼 [root@db01 ~]# mysqladmin -uroot password '1' 2.鏈接數據庫 [root@db01 ~]# mysql -uroot -p1 3.建立用戶 MariaDB [(none)]> grant all on *.* to ty@'%' identified by '1'; 4.建立數據庫 MariaDB [(none)]> create database wp; MariaDB [(none)]> create database zh; 5.重啓數據庫 systemctl restart mariadb #phpmyadmin只是管理數據庫的工具,不須要建立數據庫 phpmyadmin能夠直接鏈接數據庫,不須要外網(???) navicat須要鏈接外網才能鏈接數據庫 #域名解析 10.0.0.7 cs.wp.com #瀏覽器訪問 cs.wp.com
能夠作upstream鏈接池,減小.conf中的重複node
負載均衡機lb01 執行如下操做 1.手寫server語句 vim /etc/nginx/conf.d/wp_zh.conf upstream backend { server 10.0.0.7; server 10.0.0.8; server 10.0.0.9; } server { listen 80; server_name cs.wp.com cs.zh.com; return 302 https://$server_name$request_uri; } server { listen 443 ssl; server_name cs.wp.com cs.zh.com; ssl_certificate ssl_key/server.crt; ssl_certificate_key ssl_key/server.key; location / { proxy_pass http://backend; proxy_set_header Host $http_host; include proxy_params; } } 2.寫入include文件 vim /etc/nginx/proxy_params # 客戶端的請求頭部信息,帶着域名來找我,我也帶着域名去找下一級(代理機或者代理服務器) proxy_set_header Host $host; # 顯示客戶端的真實ip(和代理的全部IP) proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #nginx代理與後端服務器鏈接超時時間(代理鏈接超時) proxy_connect_timeout 60s; #nginx代理等待後端服務器的響應時間 proxy_read_timeout 60s; #後端服務器數據回傳給nginx代理超時時間 proxy_send_timeout 60s; #nignx會把後端返回的內容先放到緩衝區當中,而後再返回給客戶端,邊收邊傳, 不是所有接收完再傳給客戶端 proxy_buffering on; #設置nginx代理保存用戶頭信息的緩衝區大小 proxy_buffer_size 4k; #proxy_buffer_size 8k; #proxy_buffers 緩衝區 proxy_buffers 8 4k; #proxy_buffers 8 8k; #使用http 1.1協議版本 proxy_http_version 1.1; #錯誤頁面重定向 proxy_next_upstream error timeout http_500 http_502 http_503 http_504 http_404; 3.告訴PHP,與lb交流使用https協議(#web部署) echo 'fastcgi_param https on;' >> /etc/nginx/fastcgi_params 4.重載nginx配置文件 nginx -sreload
把證書部署在lbmysql
#建立存放ssl證書的路徑,位置隨意 [root@web03 ~]# mkdir -p /etc/nginx/ssl_key_zh && cd /etc/nginx/ssl_key_wp [root@web03 ssl_key]# openssl genrsa -idea -out $(date +%Y%m%d).key 2048 [root@web03 ssl_key]# openssl req -days 36500 -x509 \ -sha256 -nodes -newkey rsa:2048 -keyout /etc/nginx/ssl_key_zh/$(date +%Y%m%d).key -out /etc/nginx/ssl_key_zh/$(date +%Y%m%d).crt
10.0.0.5 cs.wp.com cs.zh.com cs.pm.com #瀏覽器訪問,創建wp zh pm與數據庫的鏈接 cs.wp.com cs.zh.com cs.pm.com
1.web01打包安裝過的服務 cd / && tar zcf code_conf.tgz code etc/nginx/conf.d 2.使用scp或者rsync傳過去 rsync -avz code_conf.tgz 10.0.0.8:/ rsync -avz code_conf.tgz 10.0.0.9:/ 3.web02等服務器解壓 cd / && tar xf code_conf.tgz cd / && tar xf code_conf.tgz 4.重載nginx配置文件# nginx -sreload nginx -sreload
先作好web01,再縱向拷貝,避免出現重複註冊數據表nginx
# 1.編輯nfs配置文件 [root@nfs ~]# vim /etc/exports /wp_data 172.16.1.0/24(sync,rw,all_squash,anonuid=666,anongid=666) /zh_data 172.16.1.0/24(sync,rw,all_squash,anonuid=666,anongid=666) # 2.建立共享目錄 [root@nfs ~]# mkdir /wp_data /zh_data # 3.沒有上傳過圖片,直接建立uploads目錄,上傳過圖片,先把數據拷貝到nfs中 [root@web01 ~]# mkdir /code/wordpress/wp-content/uploads -p [root@web01 ~]# mkdir /code/WeCenter/uploads/ -p #爲了使用rsync,受權(空目錄報錯不用管) chmod -R 777 /code #給建立的目錄受權 chown -R www.www /code [root@web01 ~]# rsync -avz /code/wordpress/wp-content/uploads/* root@172.16.1.31:/wp_data [root@web01 ~]# rsync -avz /code/WeCenter/uploads/* root@172.16.1.31:/wp_data ########## 先登陸導入數據庫, 再rsync服務和配置文件過去(部署web02),由於wordpress不能用相同的數據庫註冊###### # 5.受權 [root@nfs ~]# chown -R www.www /wp_data/ /zh_data/ # 6.掛載(掛載最好放最後) [root@web01 ~]# mount -t nfs 172.16.1.31:/wp_data /code/wordpress/wp-content/uploads/ [root@web02 ~]# mount -t nfs 172.16.1.31:/wp_data /code/wordpress/wp-content/uploads/ [root@web03 ~]# mount -t nfs 172.16.1.31:/wp_data /code/wordpress/wp-content/uploads/ [root@web01 ~]# mount -t nfs 172.16.1.31:/zh_data /code/WeCenter/uploads/ [root@web02 ~]# mount -t nfs 172.16.1.31:/zh_data /code/WeCenter/uploads/ [root@web03 ~]# mount -t nfs 172.16.1.31:/zh_data /code/WeCenter/uploads/ umount /code/wordpress/wp-content/uploads umount /code/WeCenter/uploads
# 0.安裝sersync的依賴包 [root@nfs ~]# yum install -y rsync inotify-tools # 1.下載sersync [root@nfs ~]# wget https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz # 2.解壓sersync [root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz # 3.移動並更名 [root@nfs ~]# mv GNU-Linux-x86 /usr/local/sersync # 4.修改配置文件 [root@nfs ~]# vim /usr/local/sersync/confxml.xml <!-- #修改後的配置文件 --> <?xml version="1.0" encoding="ISO-8859-1"?> <head version="2.5"> <host hostip="localhost" port="8008"></host> <debug start="false"/> <fileSystem xfs="false"/> <filter start="false"> <exclude expression="(.*)\.svn"></exclude> <exclude expression="(.*)\.gz"></exclude> <exclude expression="^info/*"></exclude> <exclude expression="^static/*"></exclude> </filter> <inotify> # 1.所有改爲true <delete start="true"/> <createFolder start="true"/> <createFile start="false"/> <closeWrite start="true"/> <moveFrom start="true"/> <moveTo start="true"/> <attrib start="true"/> <modify start="true"/> </inotify> <sersync> <!-- #客戶端須要監控的目錄 --> <localpath watch="/wp_date"> #2. 改爲nfs服務端要推送的那個目錄 <!-- rsync服務端的IP 和 name:模塊 --> <remote ip="10.0.0.41" name="backupmk"/> #3. 備份服務器的外網IP和模塊名 <!--<remote ip="192.168.8.39" name="tongbu"/>--> <!--<remote ip="192.168.8.40" name="tongbu"/>--> </localpath> <rsync> <!-- rsync命令執行的參數 --> <commonParams params="-az"/> # 4.改爲 -az <!-- #rsync認證start="true" users="rsync指定的匿名用戶" passwordfile="指定一個密碼文件的位置權限必須600" --> #5.下行的false改爲true,匿名用戶bck,密碼文件 <auth start="true" users="bck" passwordfile="/etc/rsync.passwd"/> <userDefinedPort start="false" port="874"/><!-- port=874 --> <timeout start="false" time="100"/><!-- timeout=100 --> <ssh start="false"/> #不使用ssh通道(相似於rsync的daemon模式),不使用874端口,不設置超時時間 </rsync> <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once--> <crontab start="false" schedule="600"><!--600mins--> <crontabfilter start="false"> <exclude expression="*.php"></exclude> <exclude expression="info/*"></exclude> </crontabfilter> </crontab> <plugin start="false" name="command"/> </sersync> <plugin name="command"> <param prefix="/bin/sh" suffix="" ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix--> <filter start="false"> <include expression="(.*)\.php"/> <include expression="(.*)\.sh"/> </filter> </plugin> <plugin name="socket"> <localpath watch="/opt/tongbu"> <deshost ip="192.168.138.20" port="8009"/> </localpath> </plugin> <plugin name="refreshCDN"> <localpath watch="/data0/htdocs/cms.xoyo.com/site/"> <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/> <sendurl base="http://pic.xoyo.com/cms"/> <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/> </localpath> </plugin> </head> # 5.建立客戶端的密碼文件,只寫密碼,不須要指定虛擬用戶 [root@nfs /usr/local/sersync]# echo 123 > /etc/rsync.passwd # 6.受權密碼文件權限爲600 [root@nfs ~]# chmod 600 /etc/rsync.passwd # 7.啓動服務 [root@nfs ~]# /usr/local/sersync/sersync2 -rdo /usr/local/sersync/confxml.xml export PATH="/usr/local/sersync/sersync2:$PATH"
1.rsync服務器下載rsync [root@web01 ~]# yum install -y rsync 2.修改配置文件 [root@web01 ~]# vim /etc/rsyncd.conf #先刪除,再拷貝 #################################### 服務相關配置 ########################### uid = www #指定rsync進程啓動的用戶(打工的),和傳送文件的用戶---------useradd gid = www #指定rsync進程啓動的組 port = 873 #指定rsync使用的監聽端口(默認873端口,能夠改) fake super = yes #無需讓rsync以root身份運行,容許接收文件的 完整屬性(屬主屬組不變) use chroot = no #禁錮指定的目錄(只能推到指定的目錄,不緊固的話隨便推) max connections = 200 #最大鏈接數(同時鏈接的主機數,減小服務端負載) timeout = 600 #超時時間 ignore errors #忽略報錯 read only = false #不僅讀(可讀可寫) list = false #不容許別人查看模塊名 #################################### 命令相關配置 ########################### auth users = bck #傳輸文件的用戶(至關於密碼,沒有實際意義),客戶端認證1 secrets file = /etc/rsync.passwd #傳輸用戶文件的密碼文件,vim或echo/600,客戶端認證2 log file = /var/log/rsyncd.log #日誌文件,使用了rsync以後纔會生成 [backupmk] #模塊名,能夠隨便改,當心大寫字母,空格,數字,多模塊對應多主機(隨便推?),客戶端認證3 comment = welcome to oldboyedu backup! #註釋(廢物) path = /backup #備份的目錄-------mkdir/權限屬主屬組,,客戶端認證4 3.根據配置文件的內容,建立出來須要的用戶,目錄,密碼文件 [root@web01 ~]# groupadd www -g 666 [root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M #配置文件指定了www用戶 [root@web01 ~]# mkdir /backup [root@web01 ~]# chown www.www /backup/ #配置文件指定了rsync用戶 [root@web01 ~]# echo bck:123 >/etc/rsync.passwd (虛擬用戶名:密碼,必需要作) #修改傳輸文件的密碼文件的權限 [root@web01 ~]# chmod 600 /etc/rsync.passwd 4.啓動服務,而且加入開機自啓 [root@web01 ~]# systemctl enable rsyncd [root@web01 ~]# systemctl start rsyncd