linux系統lnmp資料叢集共享
阿新 • • 發佈:2020-07-23
需求:在web01和web02上面部署部落格和知乎,然後兩臺機器用
同一個資料庫,並且實現資料共享
準備壞境
主機名 | wlan | lan | 安裝服務 |
---|---|---|---|
web01 | 10.0.0.7 | 172.16.1.7 | nfs-utils,nginx,php-fpm |
web02 | 10.0.0.8 | 172.16.1.8 | nfs-utils,nginx.php-fpm |
nfs | 10.0.0.31 | 172.16.1.31 | nfs-utils |
db01 | 10.0.0.51 | 172.16.1.51 | mariadb-server |
操作步驟
沒有nginx和php-fpm的壓縮包的情況下
### 如果沒有nginx和php-fpm的壓縮包 ## 開啟瀏覽器輸入nginx.org,進入nginx官網 # 點選頁面右側的download,然後檢視穩定版本,點選頁面最下面的 stable and mainline # 然後找到RHEL/CentOS根據官方檔案格式配置yum源 [root@web01 ~]# cat /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true # 開啟yum快取,方便打包 [root@web01 ~]# cat /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=1 # 這裡改成1,預設是0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release # 配置完成後下載nginx服務 [root@web01 ~]# yum install -y nginx ### php-fpm # 刪除系統自帶的PHP版本 [root@web01 conf.d]# yum remove php-mysql-5.4 php php-fpm php-common # 更換PHP的源 [root@web01 conf.d]# cat /etc/yum.repos.d/php.repo [php-webtatic] name = PHP Repository baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/ gpgcheck = 0 # 下載PHP和依賴包 [root@web01 conf.d]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb # 下載完成後找到快取目錄裡面的所有以.rpm結尾的包打包 建立一個存放包的目錄,把包複製過去 mkdir /root/nginx_php 然後用find xargs 和cp組合拷貝到建立的目錄中 [root@web01 conf.d]# find /var/cache/yum -type f -name '*.rpm'|xargs cp -t /root/nginx_php
有nginx和php-fpm壓縮包的情況下
web01
## 下載nfs-utils [root@web01 zh]# yum install -y nfs-utils ## 把壓縮包上傳到虛擬機器 [root@web01 ~]# rz -E ## 解壓並進入目錄內安裝 [root@web01 ~]# tar xf php_nginx.tgz [root@web01 ~]# cd root/nginx_php [root@web01 nginx_php]# rpm -Uvh * ## 建立使用者和使用者組 [root@web01 ~]# groupadd www -g 666 [root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M ## 統一使用者 [root@web01 ~]# vim /etc/nginx/nginx.conf user www; worker_processes 1; [root@web01 ~]# grep -Ev '^$|^#|^;' /etc/php-fpm.d/www.conf [www] user = www group = www listen = 127.0.0.1:9000 ## 編輯nginx配置檔案 [root@web01 ~]# vim /etc/nginx/conf.d/blog.wzh.com.conf server { listen 80; server_name blog.wzh.com; root /code/wordpress; index index.php index.html; location ~ \.php$ { root /code/wordpress; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } } [root@web01 ~]# vim /etc/nginx/conf.d/zh.wzh.com.conf server { listen 80; server_name zh.test.com; root /code/zh; index index.php index.html; location ~ \.php$ { root /code/zh; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } } ## 檢查語法 [root@web01 ~]# nginx-t ## 建立站點目錄 [root@web01 ~]# mkdir -p /code/wordpress [root@web01 ~]# mkdir -p /code/zh ## 進到站點目錄上傳軟體包並解壓授權 [root@web01 ~]# cd /code/wordpress/ [root@web01 wordpress]# rz [root@web01 wordpress]# tar xf wordpress-5.0.3-zh_CN.tar.gz [root@web01 wordpress]# mv wordpress/* ./ [root@web01 wordpress]# cd ../zh [root@web01 zh]# rz [root@web01 zh]# mv WeCenter_3-2-1/* ./ [root@web01 zh]# chown -R www.www /code ## 啟動nginx和php-fpm並加入開機自啟 [root@web01 zh]# systemctl start nginx php-fpm [root@web01 zh]# systemctl enable nginx php-fpm ## 做域名解析 在hosts檔案裡解析10.0.0.7 blog.wzh.com zh.test.com
web02
## 下載nfs-utils [root@web02 ~]# yum install -y nfs-utils ## 上傳nginx和php-fpm壓縮包 [root@web02 ~]# rz -E ## 解壓並進入目錄內安裝 [root@web02 ~]# tar xf php_nginx.tgz [root@web02 ~]# cd root/nginx_php [root@web02 nginx_php]# rpm -Uvh * ## 建立使用者和使用者組 [root@web02 ~]# groupadd www -g 666 [root@web02 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M ## 統一使用者 [root@web02 ~]# vim /etc/nginx/nginx.conf user www; worker_processes 1; [root@web02 ~]# grep -Ev '^$|^#|^;' /etc/php-fpm.d/www.conf [www] user = www group = www listen = 127.0.0.1:9000 ## 建立站點目錄 [root@web02 ~]# mkdir /code ## 把web01的配置檔案scp傳給web02 [root@web01 code]# scp /etc/nginx/conf.d/blog.wzh.com.conf 10.0.0.8:/etc/nginx/conf.d/ [root@web01 code]# scp /etc/nginx/conf.d/zh.wzh.com.conf 10.0.0.8:/etc/nginx/conf.d/ ## 把web01的部落格和知乎打包傳給web02 [root@web01 code]# tar zcf wordpress.tgz wordpress [root@web01 code]# scp wordpress.tgz 10.0.0.8:/code/ [root@web01 code]# tar zcf zh.tgz zh [root@web01 code]# scp zh.tgz 10.0.0.8:/code/ ## 解壓 [root@web02 code]# tar xf zh.tgz [root@web02 code]# tar xf wordpress.tgz ## 授權 [root@web02 code]# chown -R www.www /code ## 啟動nginx和php-fpm並加入開機自啟 [root@web02 code]# systemctl start nginx php-fpm [root@web02 code]# systemctl enable nginx php-fpm ## 做域名解析 在hosts檔案裡解析10.0.0.8 blog.wzh.com zh.test.com
db01
# 下載mariadb-server
[root@db01 ~]# yum install -y mariadb-server
# 啟動並加入開機自啟
[root@db01 ~]# systemctl start mariadb.service
[root@db01 ~]# systemctl enable mariadb.service
# 給root使用者新增密碼
[root@db01 ~]# mysqladmin -uroot password '123'
# 登入
[root@db01 ~]# mysql -uroot -p123
# 建立庫
MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create database zh ;
Query OK, 1 row affected (0.00 sec)
# 建立使用者和密碼
MariaDB [(none)]> grant all on *.* to php_user@'%' identified by '111'
-> ;
Query OK, 0 rows affected (0.00 sec)
nfs
## 下載nfs-utils
[root@nfs ~]# yum install -y nfs-utils
# 編輯配置
[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)
# 建立使用者
[root@nfs ~]# groupadd www -g 666
[root@nfs ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
# 建立掛載目錄
[root@nfs ~]# mkdir /zh_data
[root@nfs ~]# mkdir /wp_data
# 目錄授權
[root@nfs ~]# chown www.www /zh_data /wp_data
# 啟動並加入開機自啟
[root@nfs ~]# systemctl start nfs-server
[root@nfs ~]# systemctl enable nfs-server
web01和web02連線nfs
### 把nfs的共享目錄分別掛載在部落格和知乎的目錄下
[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@web01 ~]# mount -t nfs 172.16.1.31:/zh_data /code/zh/uploads/
[root@web02 ~]# mount -t nfs 172.16.1.31:/zh_data /code/zh/uploads/
## 注意的地方:如果之前沒有上傳過圖片沒有uploads目錄,需要手動建立,如果有這個目錄要先把目錄裡面的東西scp拷貝到nfs的共享目錄裡面
總結
web01和web02安裝的wordPress和Wecenter服務用的是php程式碼
nginx沒有辦法直接連線資料庫,nginx也不能解讀php程式碼,需要通過fastcgi解析php程式碼,所以在nginx的配置檔案裡面呼叫fastcgi的引數,而wordPress和Wecenter使用同一個資料庫,所以需要在資料庫裡面建立兩個存放資料的庫,然後再創建出一個有許可權管理這些庫的使用者,root使用者也可以