1. 程式人生 > 實用技巧 >linux系統lnmp資料叢集共享

linux系統lnmp資料叢集共享

需求:在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使用者也可以