0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Nginx_LNMP架構拆分

冬至子 ? 來源:運維庫 ? 作者:運維庫 ? 2023-05-22 17:44 ? 次閱讀

1、拆分LNMP數(shù)據(jù)庫至獨立服務器概念

(1)為什么要進行數(shù)據(jù)庫的拆分

由于單臺服務器運行LNMP架構會導致網站訪問緩慢,當內存被吃滿時,容易導致系統(tǒng)出現(xiàn)oom,從而kill掉MySQL數(shù)據(jù)庫,所以需要將web和數(shù)據(jù)庫進行獨立部署。

(2)數(shù)據(jù)庫拆分后解決了什么問題

1.緩解web網站的壓力

2.增強數(shù)據(jù)庫的讀寫性能

3.提高用戶訪問的速度

(3)數(shù)據(jù)庫拆分架構演變過程
一體機
 客戶端-------LNMP服務器

 拆分數(shù)據(jù)庫
 客戶端--------Nginx+PHP服務器--------MySQL服務器

2、拆分wordpress數(shù)據(jù)庫至獨立服務器

(1)數(shù)據(jù)庫拆分環(huán)境規(guī)劃
主機名稱	         應用環(huán)境	  IP地址
Server-1	nginx+php	192.168.2.4	
client-1	mariadb		192.168.2.5
(2)備份192.168.2.4服務器上數(shù)據(jù)庫的數(shù)據(jù)
[root@Server-1 ~]# mysqldump -uroot -pP@ssw0rd --all-databases --single-transaction >mariadb-all.sql

#一定要檢查文件內是否有數(shù)據(jù),因為失敗了也會有文件產生。
[root@Server-1 ~]#cat mariadb-all.sql
(3)傳輸192.168.2.4的備份數(shù)據(jù)至192.168.2.5的服務器上
[root@Server-1 ~]# scp mariadb-all.sql root@192.168.2.5:/code
(4)需要先在192.168.2.5服務器上安裝mariadb數(shù)據(jù)庫,然后使用命令進行還原。
#安裝mariadb數(shù)據(jù)庫客戶端和服務端
[root@Client-1 ~]# yum -y install mariadb mariadb-server

#啟動并加入開機自啟
[root@Client-1 ~]# systemctl enable mariadb
[root@Client-1 ~]# systemctl start mariadb

#導入數(shù)據(jù)庫信息,重啟數(shù)據(jù)庫
[root@Client-1 ~]# mysql 
[root@Client-1 ~]# systemctl restart mariadb

#查看數(shù)據(jù)庫是否導入成功
[root@Client-1 ~]# mysql -uroot -pP@ssw0rd
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| edusoho            |
| mysql              |
| performance_schema |
| test               |
| wecenter           |
| wordpress          |
+--------------------+
7 rows in set (0.01 sec)
(5)將web程序連接的本地數(shù)據(jù)庫修改到遠程數(shù)據(jù)庫上。
#先在本地192.168.2.4服務器上停止本地的數(shù)據(jù)庫
[root@Server-1 ~]# systemctl disable mariadb
[root@Server-1 ~]# systemctl stop mariadb

#在192.168.2.5的服務器上授權遠程主機能夠能連接數(shù)據(jù)庫
[root@Client-1 ~]# mysql -uroot -pP@ssw0rd
MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by 'P@ssw0rd';
Query OK, 0 rows affected (0.02 sec)

#在192.168.2.4服務器上測試遠程賬戶能否連接192.168.2.5的數(shù)據(jù)庫
[root@Server-1 ~]# mysql -h 192.168.2.5 -uroot -pP@ssw0rd
MariaDB [(none)]>

#在192.168.2.4服務器上修改web程序wordpress連接數(shù)據(jù)庫的配置文件
[root@Server-1 ~]# vim /code/wordpress/wp-config.php
 // ** MySQL 設置 - 具體信息來自您正在使用的主機 ** //
 /** WordPress數(shù)據(jù)庫的名稱 */
 define('DB_NAME', 'wordpress');

 /** MySQL數(shù)據(jù)庫用戶名 */
 define('DB_USER', 'root');

 /** MySQL數(shù)據(jù)庫密碼 */
 define('DB_PASSWORD', 'P@ssword');

 /** MySQL主機 */
 define('DB_HOST', '192.168.2.5');
#注:配置完直接訪問wordpress.zxc.com查看

3、拆分wecenter和edusoho數(shù)據(jù)庫至獨立服務器

(1)在192.168.2.4服務器上修改web程序wordpress連接數(shù)據(jù)庫的配置文件
#不知道數(shù)據(jù)庫配置文件,可以使用grep查找數(shù)據(jù)庫密碼來查看數(shù)據(jù)庫配置文件
[root@Server-1 wecenter]# grep -R "P@ssw0rd" *
 system/config/database.php:  'password' => 'P@ssw0rd',
[root@Server-1 wecenter]# vim system/config/database.php
?php'charset'] = 'utf8mb4';
$config['prefix'] = 'aws_';
$config['driver'] = 'MySQLi';
$config['master'] = array (
  'charset' => 'utf8mb4',
  'host' => '192.168.2.5',
  'username' => 'root',
  'password' => 'P@ssw0rd',
  'dbname' => 'wecenter',
);
$config['slave'] = false;
#注:配置完直接訪問wecenter.zxc.com查看
(2)在192.168.2.4服務器上修改web程序edusoho連接數(shù)據(jù)庫的配置文件
[root@Server-1 edusoho]# vim edusoho/app/config/parameters.yml
    database_driver: pdo_mysql
    database_host: 192.168.2.5
    database_port: 3306
    database_name: edusoho
    database_user: root
    database_password: 'P@ssw0rd'

#必須清理緩存
[root@Server-1 edusoho]# rm -rf /code/edusoho/edusoho/app/cache/*
#注:配置完直接訪問edu.zxc.com查看

4、擴展多臺web服務器集群

(1)為什么要擴展多臺web節(jié)點

?? 單臺web服務器能抗住的訪問量是有限的,配置多臺web服務器能提升更高的訪問速度。

(2)擴展多臺web解決了什么問題
1、單臺web節(jié)點故障,會導致業(yè)務down機
2、多臺web節(jié)點能夠保證業(yè)務的持續(xù)穩(wěn)定,擴展性高
3、多臺web節(jié)點能有效的提升用戶訪問網站的速度
(3)多臺web節(jié)點技術架構組成,如下圖所示

圖片圖片

(4)快速擴展一臺web
? ① 統(tǒng)一環(huán)境
#1、準備對應的www用戶
[root@Server-2 ~]# groupadd -g666 www
[root@Server-2 ~]# useradd -u666 -g666 www

#2、拷貝Server-1上面的yum倉庫
[root@Server-2 ~]# scp root@192.168.2.4:/etc/yum.repos.d/*.repo /etc/yum.repos.d/

#3、安裝nginx和php
[root@Server-2 ~]# yum -y install nginx 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
? ② 統(tǒng)一配置(同步Server-1上面的配置到Server-2)
#1、同步nginx
[root@Server-2 ~]# rsync -avz --delete root@192.168.2.4:/etc/nginx/ /etc/nginx/
[root@Server-2 ~]# nginx -t
[root@Server-2 ~]# systemctl enable nginx
[root@Server-2 ~]# systemctl start nginx

#2、同步php(/etc/php-fpm.conf /etc/php-fpm.d  /etc/php.ini)
[root@Server-2 ~]# rsync  -avz --delete root@192.168.2.4:/etc/php* /etc/
[root@Server-2 ~]# systemctl enable php-fpm
[root@Server-2 ~]# systemctl start php-fpm

#3、統(tǒng)一代碼
[root@Server-1 ~]# tar czf code.tar.gz /code    #在Server-1上打包站點
[root@Server-1 ~]# scp code.tar.gz root@192.168.2.6:/tmp  #在Server-1上將打包好的代碼發(fā)送給Server-2
[root@Server-2 ~]# tar xf /tmp/code.tar.gz -C /    #在Server-2上進行解壓,并解壓到/目錄下

#4、配置解析進行訪問(把host上.4的注釋,復制改成.6)

缺點: 就是當用戶上傳圖片、視頻附件等靜態(tài)資源僅上傳到一臺web服務器上,那么其他的web服務器則無法訪問到該圖片。

5、拆分靜態(tài)資源至獨立服務器

(1)為什么拆分靜態(tài)資源至獨立存儲服務器

????當后端的web節(jié)點出現(xiàn)多臺時,會導致用戶上傳的圖片、視頻附件等內容僅上傳到一臺web服務器上,那么其他的web服務器則無法訪問到該圖片。

(2)新增一臺NFS存儲解決了什么問題
1、保證了多臺web節(jié)點靜態(tài)資源一致。
2、有效節(jié)省多臺web節(jié)點的存儲空間。
3、統(tǒng)一管理靜態(tài)資源,便于后期推送至CDN進行靜態(tài)資源加速。
(3)多臺web節(jié)點技術架構組成,如下圖所示

圖片圖片

(4)快速擴展一臺web節(jié)點的環(huán)境規(guī)劃
主機名       應用環(huán)境	     IP地址
Server-1     Nginx+PHP	   192.168.2.4
Server-2     Nginx+PHP	   192.168.2.6
NFS		NFS	   192.168.2.7
MySQL		MySQL	   192.168.2.5
(5)快速擴展一臺web節(jié)點詳細步驟
? ① 準備192.168.2.7共享存儲服務器,規(guī)劃目錄,配置好權限
#1、創(chuàng)建用戶
[root@nfs ~]# groupadd -g666 www
[root@nfs ~]# useradd -u666 -g666 www 
  
#2、安裝
[root@nfs ~]# yum install nfs-utils -y
   
#3、配置
[root@nfs ~]# cat /etc/exports
/data/wordpress 192.168.2.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/wecenter 192.168.2.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/edu 192.168.2.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

#4、根據(jù)配置,創(chuàng)建目錄,準備用戶,授權等等
[root@nfs ~]# rm -rf /data/
[root@nfs ~]# mkdir /data/{wordpress,wecenter ,edu} -p
[root@nfs ~]# chown -R www.www /data/
  
#5、啟動
[root@nfs ~]# systemctl enable nfs-utils 
[root@nfs ~]# systemctl restart nfs-utils
? ② 將圖片較多的Server-2服務器,推送到nfs共享存儲上
#1、查看圖片右鍵保存鏈接,可看見上傳路徑
http://wordpress.zxc.com/wp-content/uploads/2022/03/timg.jpg

#2、把上傳文件夾推送到nfs共享存儲上
[root@Server-2 ~]# cd /code/wordpress/wp-content
[root@Server-2 wp-content]# scp -r uploads/* root@192.168.2.7:/data/wordpress/
注意:需要上nfs服務器上進行重新的遞歸授權,否則會出現(xiàn)無法上傳文件的錯誤
[root@nfs ~]# chown -R www.www /data/
? ③ Server-1和Server-2分別都進行掛載,此時圖片進行實現(xiàn)了共享
mount -t nfs 192.168.2.7:/data/wordpress  /code/wordpress/wp-content/uploads/
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • PHP
    PHP
    +關注

    關注

    0

    文章

    452

    瀏覽量

    26614
  • MYSQL數(shù)據(jù)庫

    關注

    0

    文章

    95

    瀏覽量

    9372
  • CDN網絡
    +關注

    關注

    0

    文章

    11

    瀏覽量

    6747
收藏 人收藏

    評論

    相關推薦

    在AvaotaA1全志T527開發(fā)板上使用AvaotaOS 部署 LNMP 服務

    !如僅需安裝數(shù)據(jù)庫在lnmp安裝包目錄下執(zhí)行:./install.sh db 輸入對應MySQL或MariaDB版本前面的序號,回車進入下一步. 如果選擇MySQL/MariaDB如果有對應架構
    發(fā)表于 07-05 10:01

    nginx重啟命令linux步驟是什么?

    ./nginx -s reload 即可   方法二:查找當前nginx進程號,然后輸入命令:kill -HUP 進程號 實現(xiàn)重啟nginx服務   Nginx的整體
    發(fā)表于 07-10 16:40

    nginx重啟命令linux步驟是什么?

    ./nginx -s reload 即可   方法二:查找當前nginx進程號,然后輸入命令:kill -HUP 進程號 實現(xiàn)重啟nginx服務   Nginx的整體
    發(fā)表于 07-11 17:13

    【NanoPi NEO試用體驗】之安裝配置Nginx環(huán)境WEB網站詳解

    本帖最后由 Q69693721 于 2016-10-18 13:54 編輯 LNMP(Linux+Nginx+Mysql+PHP)相信學過計算機編程和網站的人應該都知道他一直是Linux環(huán)境下
    發(fā)表于 10-18 12:25

    基于MYSQL,PHP和nginx的部署論壇

    LNMP架構的簡單應用-----部署論壇
    發(fā)表于 03-19 16:41

    nginx錯誤頁面配置

    16、nginx 錯誤頁面配置nginx錯誤頁面包括404 403 500 502 503 504等頁面,只需要在server中增加以下配置即可: error_page404 403 500 502
    發(fā)表于 07-26 06:54

    玩轉Firefly-RK3399資料匯總(一)

    窗口修改,參考第4點設置系統(tǒng)編碼為[zh-CN.UTF-8]同樣可以切換系統(tǒng)語言為中文更新系統(tǒng)源2、搭建LNMP服務環(huán)境LNMP代表的就是:Linux系統(tǒng)下Nginx+MySQL+PHP這種網站服務器
    發(fā)表于 04-13 15:09

    主要學習下nginx的安裝配置

    處理。因為有了中間件,使得大型網站在規(guī)劃有了更好的層次性,維護上更加方便。也可以實現(xiàn)負載均衡、安全防護等。Nginx是一個開源高性能、可靠的HTTP中間件、代理服務,在目前企業(yè)中得到了很大的利用。今天
    發(fā)表于 10-19 14:12

    Nginx架構介紹 Nginx服務器模型分析

    Nginx是一款免費的、開源的、高性能、模塊化、輕量級的HTTP服務器、反向代理服務器以及電子郵件(IMAP/POP3)代理服務器。
    的頭像 發(fā)表于 01-10 16:32 ?9138次閱讀
    <b class='flag-5'>Nginx</b><b class='flag-5'>架構</b>介紹 <b class='flag-5'>Nginx</b>服務器模型分析

    ECS配置lnmp的詳細步驟資料說明

    本文檔詳細介紹的是ECS配置lnmp的詳細步驟資料說明主要內容包括了:一、停止甚至刪除系統(tǒng)上現(xiàn)有的web服務器軟件,二、安裝開發(fā)包和庫文件,三、安裝nginx,四、安裝mariadb,五、安裝php,六、最重要當然是測試一下了,七、配置虛擬主機
    發(fā)表于 03-04 15:48 ?6次下載
    ECS配置<b class='flag-5'>lnmp</b>的詳細步驟資料說明

    nginx-proxy Docker容器的自動化nginx代理

    ./oschina_soft/nginx-proxy.zip
    發(fā)表于 05-12 11:30 ?1次下載
    <b class='flag-5'>nginx</b>-proxy Docker容器的自動化<b class='flag-5'>nginx</b>代理

    Nginx如何監(jiān)控

    搭建了Nginx集群后,需要繼續(xù)深入研究的就是日常Nginx監(jiān)控。
    的頭像 發(fā)表于 08-22 10:03 ?1353次閱讀

    Nginx搭建流行架構LNMP的步驟

    LNMP是一套技術的組合,L=Linux、N=Nginx、M=MySQL(MyriDB)、P=PHP(Python)
    的頭像 發(fā)表于 05-22 18:19 ?860次閱讀
    <b class='flag-5'>Nginx</b>搭建流行<b class='flag-5'>架構</b><b class='flag-5'>LNMP</b>的步驟

    Nginx目錄結構有哪些

    什么是Nginx? Nginx是一個 輕量級/高性能的反向代理Web服務器,他實現(xiàn)非常高效的反向代理、負載平衡,他可以處理2-3萬并發(fā)連接數(shù),官方監(jiān)測能支持5萬并發(fā),現(xiàn)在中國使用nginx網站用戶有
    的頭像 發(fā)表于 11-11 11:27 ?567次閱讀
    <b class='flag-5'>Nginx</b>目錄結構有哪些

    Nginx 如何實現(xiàn)高性能低消耗

    Nginx 是一個輕量級的HTTP 服務程序,相比其他服務器程序如Apache,Nginx占用內存少,穩(wěn)定性高,并發(fā)處理能力強。同時Nginx 還是一個反向代理服務程序,和郵件代理服務程序
    的頭像 發(fā)表于 11-11 11:31 ?526次閱讀
    <b class='flag-5'>Nginx</b> 如何實現(xiàn)高性能低消耗