LNMP架構(gòu)基礎(chǔ)搭建

LNMP基礎(chǔ)架構(gòu)

LNMP架構(gòu)作用可以使用架構(gòu)處理動態(tài)網(wǎng)站頁面

LAMP架構(gòu): Linux系統(tǒng) apache服務(wù) mysql數(shù)據(jù)庫 php

常見的LNMP架構(gòu)為

(1) Linux系統(tǒng) nginx服務(wù) mysql數(shù)據(jù)庫 php

(2) Linux系統(tǒng) nginx服務(wù) mysql數(shù)據(jù)庫 python

LNMP架構(gòu)訪問流程

分為三種情況

情況一: 靜態(tài)頁面

用戶通過瀏覽器訪問網(wǎng)站 nginx服務(wù)直接進(jìn)行處理響應(yīng)靜態(tài)頁面

情況二:動態(tài)頁面

當(dāng)用戶通過瀏覽器進(jìn)行訪問動態(tài)頁面時(shí) nginx服務(wù)收到請求 發(fā)現(xiàn)是動態(tài)頁面請求無法處理時(shí) 會通過fastcgi_pass指令調(diào)用FostCGI接口 發(fā)送出php服務(wù) php_fpm收到會查看是否能夠處理這個(gè)請求(是否要調(diào)用數(shù)據(jù)庫數(shù)據(jù)).

(1) 能夠處理時(shí) 會將處理后的信息通過nginx顯示給用戶

(2) 不能響應(yīng)時(shí) 這時(shí)會由wrapper線程通過PHP解析器處理 (轉(zhuǎn)換成數(shù)據(jù)庫能理解的指令) 傳輸給數(shù)據(jù)庫 數(shù)據(jù)庫處理后在發(fā)出響應(yīng) php --> nginx --> 用戶



Nginx不支持對外部程序的直接調(diào)用或者解析,所有的外部程序(包括PHP)必須通過FastCGI接口來調(diào)用。
FastCGI接口在Linux下是socket(這個(gè)socket可以是文件socket,也可以是ip socket)。
為了調(diào)用CGI程序,還需要一個(gè)FastCGI的wrapper,這個(gè)wrapper綁定在某個(gè)固定socket上,如端口或者文件socket。
當(dāng)Nginx將CGI請求發(fā)送給這個(gè)socket的時(shí)候,通過FastCGI接口,wrapper接收到請求,然后派生出一個(gè)新的線程,這個(gè)線程調(diào)用解釋器或者外部程序處理腳本并讀取返回?cái)?shù)據(jù);接著,wrapper再將返回的數(shù)據(jù)通過FastCGI接口,沿著固定的socket傳遞給Nginx;最后,Nginx將返回的數(shù)據(jù)發(fā)送給客戶端。

LNMP架構(gòu)部署

架構(gòu)是由Linux nginx MySQL php組成

第一步安裝服務(wù)

(1) Linux系統(tǒng) 注意事項(xiàng):
(1) 系統(tǒng)安全服務(wù)是否關(guān)閉/優(yōu)化 (selinux iptables)
(2) 確認(rèn)系統(tǒng) /tmp 目錄權(quán)限是否為1777 (若不是1777 php服務(wù)可能會報(bào)錯(cuò))

(2) nginx服務(wù)

注意事項(xiàng):
(1) 更新nginx官方源后進(jìn)行下載安裝 (yum install -y nginx)

MySQL數(shù)據(jù)庫服務(wù)

數(shù)據(jù)庫服務(wù)使用的是特殊語句 SQL語句

mysqladmin -u[用戶名] password “123456” 為指定用戶設(shè)置進(jìn)入數(shù)據(jù)庫密碼
-u                                  指定用戶
password " "                        指定密碼

mysql -e flush privileges           不進(jìn)入MySQL進(jìn)行刷新數(shù)據(jù)庫內(nèi)用戶信息


數(shù)據(jù)庫命令
flush privileges                    刷新數(shù)據(jù)庫內(nèi)的用戶信息

mysql                               進(jìn)入數(shù)據(jù)庫
mysql -uroot -p123456               通過驗(yàn)證用戶/密碼進(jìn)入數(shù)據(jù)庫

show databases;                     查看MySQL服務(wù)所有庫信息

use xxxx;                           切換到指定表

show tables;                        查看庫中所有表信息

create database xxx;                創(chuàng)建數(shù)據(jù)庫

select .* from user;                查看指定表的某一行
select [行頭] from [數(shù)據(jù)表]


update                               修改數(shù)據(jù)庫表內(nèi)容信息
UPDATE 表名稱 SET 列名稱 = 新值  WHERE 列名稱 = 某值
set                                   指定列
where                                 指定行

grant all on xxx.* to 'xxx'@'localhost(ip白名單)' identified by '密碼'
設(shè)置指定數(shù)據(jù)庫管理用戶及權(quán)限,密碼  放行白名單信息
grant           指定權(quán)限
on              指定管理的庫
to              指定用戶名@白名單
identified by   指定密碼

php解析動態(tài)訪問請求服務(wù)

(1) 解決沖突 : yum remove php-mysql php php-fpm php-common

(2) 準(zhǔn)備yum安裝軟件擴(kuò)展源信息

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

更新yum源之后,新生成的文件信息:

webtatic-archive.repo / webtatic.repo / webtatic-testing.repo

epel.repo.rpmnew / epel-testing.repo

yum clean al 更新緩存

(3) 利用yum安裝PHP相關(guān)軟件信息

yum install -y 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

(4) 修改php服務(wù)進(jìn)程管理用戶信息(建議修改的用戶和nginx worker進(jìn)程用戶一致)

 vim /etc/php-fpm.d/www.conf

 user = nginx           在第8行進(jìn)行修改

 group = nginx          在第10行進(jìn)行修改   

啟動運(yùn)行php-fpm程序

systemctl start php-fpm

第二步 編寫動態(tài)頁面 測試架構(gòu)

建立nginx和php的通訊

(1) 編寫nginx擴(kuò)展配置文件

server {

 listen 80;

 server_name blog.oldboy.com;

 location / {

 root /html/blog;

 index index.php index.html;

 }

 location ~ \.php$ {                 指定匹配 .php結(jié)尾訪問

 root /html/blog;                    指定php解析的站點(diǎn)目錄

 fastcgi_pass 127.0.0.1:9000;        指定php服務(wù)地址 : 端口

 fastcgi_index index.php;            指定php解析的默認(rèn)網(wǎng)頁文件

 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

  (將站點(diǎn)目錄和網(wǎng)頁文件傳輸信息給PHP服務(wù))

 include fastcgi_params;             指定解析變量使php服務(wù)識別

 }

}

(2) 編寫動態(tài)網(wǎng)頁

vim xxx.php

<? php

  phpinfo()

?>
測試頁面不用理會其內(nèi)容 

讀取服務(wù)器信息 顯示到網(wǎng)頁上

(3) 訪問網(wǎng)頁查看結(jié)果

第3章 部署搭建動態(tài)網(wǎng)站

第一步 下載獲取動態(tài)網(wǎng)站代碼

博客網(wǎng)站開源代碼: wordpress --- blog.oldboy.com
代碼下載地址: [https://cn.wordpress.org/download/](https://cn.wordpress.org/download/)

論壇網(wǎng)站開源代碼: discuz --- bbs.oldboy.com
代碼下載地址:[https://www.discuz.net/thread-3796882-1-1.html](https://www.discuz.net/thread-3796882-1-1.html)

導(dǎo)航網(wǎng)站開源代碼: dedecms / phpcms --- www.oldboy.com
phpcms V9 http://www.phpcms.cn/html/download/phpcms/#content

知乎網(wǎng)站開源代碼: wecenter --- zhihu.oldboy.com

第二步 將代碼信息進(jìn)行上傳

(1) 上傳代碼 進(jìn)行解壓

(2) 修改代碼目錄屬主屬組 修改為nginx服務(wù)woaker進(jìn)程用戶

chmod -R xxx.xxx 目錄

(3) 將原站點(diǎn)目錄刪除 將有index.html的目錄修改為站點(diǎn)目錄

(4) 創(chuàng)建管理數(shù)據(jù)庫用戶信息

在數(shù)據(jù)庫中輸入

grant all on 庫名.* to '管理用戶'@'白名單IP' identified by '密碼'; 用戶最好和庫名一致

select user,host from mysql.user; 查看是否創(chuàng)建成功

(5) 訪問動態(tài)頁面初始化配置

第4章 數(shù)據(jù)庫遷移

(1) 將數(shù)據(jù)庫數(shù)據(jù)進(jìn)行備份

mysqldump -uroot -p123456 -A >/tmp/mysql_bak.sql
-A 將數(shù)據(jù)庫所有信息信息打印

(2) 將數(shù)據(jù)傳輸?shù)綄?yīng)遠(yuǎn)程MySQL服務(wù)器上

rsync -avz /tmp/mysql_bak.sql 172.16.1.51:/tmp/

(3) 將備份數(shù)據(jù)進(jìn)行還原

mysql -uroot -p123456 </tmp/mysql_bak.sql

將數(shù)據(jù)輸入數(shù)據(jù)庫服務(wù)中

(4) 修改web服務(wù)器連接數(shù)據(jù)庫地址信息

(1) 對站點(diǎn)目錄中連接數(shù)據(jù)庫文件進(jìn)行修改

(2) 修改數(shù)據(jù)庫 管理庫文件用戶信息 數(shù)據(jù)庫中輸入
grant all on xxx.* to ‘xxx’@‘172.16.1.%’ identified by ‘123456’;

(3) 數(shù)據(jù)庫服務(wù)dns反向解析問題處理:
修改/etc/my.cnf
在數(shù)據(jù)庫報(bào)錯(cuò)修改地址 [mysqld] 下添加skip-name-resolve 取消反向代理

image.png

(5) 訪問網(wǎng)站進(jìn)行測試

數(shù)據(jù)庫備份恢復(fù)后, root用戶密碼失效了

mysql數(shù)據(jù)庫:
備份數(shù)據(jù)庫過程: 所有數(shù)據(jù)信息轉(zhuǎn)換為 命令信息(SQL語句)

恢復(fù)數(shù)據(jù)庫過程: 執(zhí)行SQL語句 包括但不限于: 創(chuàng)建庫 創(chuàng)建表 添加沒有信息

正常創(chuàng)建用戶用: grant命令 代表: 授權(quán)操作 會立即生效

備份恢復(fù)時(shí)使用: insert 代表: 插入操作 不會立即生效 這時(shí)要是使用: flush privileges(刷新權(quán)限)

恢復(fù)完數(shù)據(jù)之后 --->mysql -e flush privileges(刷新權(quán)限) --> 識別到root用戶的密碼信息

phpcmsV9 mysql配置文件

caches/configs/database.php

Discuz x3數(shù)據(jù)庫遷移修改路徑

修改數(shù)據(jù)庫配置信息,需要修改幾處如下

   bbs/config/config_global.php

   config/config_global_default.php

   config/config_ucenter.php

   config/config_ucenter_default.php

   uc_server/data/config.inc.php

用編程軟件打開修改修改以上幾個(gè)文件的數(shù)據(jù)庫信息即可。
例如:

$_config['db']['1']['dbuser'] = 'root'; /數(shù)據(jù)庫用戶名

$_config['db']['1']['dbpw'] = 'root';    /數(shù)據(jù)庫密碼

$_config['db']['1']['dbname'] = 'shepo'; /數(shù)據(jù)庫名

define('UC_DBUSER', 'root'); /Ucenter數(shù)據(jù)庫用戶名

define('UC_DBPW', 'root');     /Ucenter數(shù)據(jù)庫密碼

define('UC_DBNAME', 'shepo'); /Ucenter數(shù)據(jù)庫名

以上幾個(gè)都是要修改的,用編程軟件打開修改

wordpress數(shù)據(jù)遷移

實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)遷移操作

https跳轉(zhuǎn)配置

在后臺修改URL為https訪問 再把nginx配置文件修改

image.png

wordpress數(shù)據(jù)庫配置路徑
vim /html/blog/wp-config.php

第5章 網(wǎng)站數(shù)據(jù)共享存儲

將web服務(wù)器中的數(shù)據(jù)進(jìn)行共享 實(shí)現(xiàn)數(shù)據(jù)同步 統(tǒng)一管理
(1) 找到web服務(wù)器上存儲網(wǎng)站用戶數(shù)據(jù)信息的目錄

(2) 將web服務(wù)器上存儲目錄內(nèi)數(shù)據(jù)暫時(shí)移動到別的目錄
掛載會導(dǎo)致掛載期間無法找到掛載點(diǎn)原有數(shù)據(jù) 所以要先將數(shù)據(jù)移走

(3) 進(jìn)行掛載 掛載到nfs共享存儲服務(wù)器 nfs存儲目錄
mount -t nfs 172.16.1.1:/data/xxx /xxx

(4) 將數(shù)據(jù)進(jìn)行還原
注意事項(xiàng)
(1) 掛載時(shí)注意掛載點(diǎn)數(shù)據(jù)會被暫時(shí)覆蓋
(2) web實(shí)現(xiàn)共享存儲需要有nfs服務(wù)
(3) nfs服務(wù)器服務(wù)是否開啟 否則掛載時(shí)會卡死
(4) 恢復(fù)數(shù)據(jù)到站點(diǎn)目錄時(shí)需要注意 nfs默認(rèn)對root用戶進(jìn)行映射 映射成為nfs默認(rèn)用戶(nfsnobody) 所以無法存儲
解決 暫時(shí)設(shè)置root用戶不做映射 數(shù)據(jù)導(dǎo)回結(jié)束后再改回來

第6章 動態(tài)網(wǎng)站頁面修改域名

動態(tài)頁面修改域名會涉及到數(shù)據(jù)庫內(nèi)容信息 只修改配置文件無法做到要求 (頁面擴(kuò)展功能會無法使用)

第一步: 修改配置文件域名信息寫入新的域名信息

第二步: 修改網(wǎng)站代碼or數(shù)據(jù)庫信息 一般網(wǎng)站后臺進(jìn)行修改

第三步: 做DNS解析 解析到新的域名

第四步: 重啟nginx服務(wù)

注意 老域名更換時(shí)不要直接刪除 設(shè)置跳轉(zhuǎn) 讓用戶平滑接受新域名

第7章 網(wǎng)站傳輸超過1M數(shù)據(jù)配置方法

在nginx主配置文件內(nèi)輸入
client_max_body_size 100M; 指定傳輸數(shù)據(jù)限制最大100M
官方解釋:

Syntax:     client_max_body_size size;
Default:    client_max_body_size 1m;
Context:    http, server, location
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容