LNMP==Linux+Nginx+Mysql(mariabd)+PHP
Linux:
Linux是一套免費(fèi)使用和自由傳播的開源程序,是一個(gè)基于POSIX和UNIX的多用戶、多任務(wù)、支持多 線程和多CPU的操作系統(tǒng)。被廣泛的用于服務(wù)器、安卓系統(tǒng)等其它各種設(shè)備系統(tǒng)中所使用。
nginx:
Nginx 是異步框架的網(wǎng)頁(yè)服務(wù)器,也可以用作反向代理、負(fù)載平衡器和 HTTP 緩存。 Nginx 是免費(fèi) 的開源軟件,根據(jù)類 BSD 許可證的條款發(fā)布。
mysql:
MySQL 在 Web 托管應(yīng)用程序中非常流行,因?yàn)樗哂写罅康?Web 優(yōu)化功能,如 HTML 數(shù)據(jù)類型,并 且因?yàn)樗敲赓M(fèi)提供的。它是 Linux,Apache,MySQL,PHP(LAMP)架構(gòu)的一部分,這是一種經(jīng) 常用于交付和支持高級(jí) Web 應(yīng)用程序的平臺(tái)組合。MySQL 運(yùn)行著一些著名網(wǎng)站的后端數(shù)據(jù)庫(kù),包括 維基百科,谷歌和 Facebook–盡管它具有分散的,免費(fèi)的哲學(xué),但它的穩(wěn)定性和穩(wěn)健性的證明。
php:
(一)開源性和免費(fèi)性
由于PHP的解釋器的源代碼是公開的,所以安全系數(shù)較高的網(wǎng)站可以自己更改PHP的解釋程序。另外, PHP 運(yùn)行環(huán)境的使用也是免費(fèi)的。
(二)快捷性
PHP是一種非常容易學(xué)習(xí)和使用的一門語言,它的語法特點(diǎn)類似于C語言,但又沒有C語言復(fù)雜的地址操 作,而且又加入了面向?qū)ο蟮母拍?,再加上它具有?jiǎn)潔的語法規(guī)則,使得它操作編輯非常簡(jiǎn)單,實(shí)用性 很強(qiáng)。
(三)數(shù)據(jù)庫(kù)連接的廣泛性
PHP可以與很多主流的數(shù)據(jù)庫(kù)建立起連接,如MySQL、ODBC、Oracle等,PHP是利用編譯的不同函數(shù) 與這些數(shù)據(jù)庫(kù)建立起連接的,PHPLIB就是常用的為一般事務(wù)提供的基庫(kù)。
(四)面向過程和面向?qū)ο蟛⒂?
在PHP語言的使用中,可以分別使用面向過程和面向?qū)ο螅?而且可以將PHP面向過程和面向?qū)ο髢烧咭?起混用,這是其它很多編程語言是做不到的。
2、LNMP原理lnmp架構(gòu)簡(jiǎn)介
2.1 LNMP架構(gòu)的基本定義
LAMP=Linux+Apache+Mysql+PHP
LNMP=Linux+Nginx+Mysql+PHP
LAMP的架構(gòu)LAMP是一個(gè)多C/S架構(gòu)的平臺(tái),最初級(jí)為web客戶端基于TCP/IP通過http協(xié)議發(fā)起傳送, 這個(gè)請(qǐng)求可能是靜態(tài)的也可能是動(dòng)態(tài)的。所以web服務(wù)器通過發(fā)起請(qǐng)求的后綴來判斷,如果是靜態(tài)的就 由web服務(wù)器自行處理,然后將資源發(fā)給客戶端。如果是動(dòng)態(tài)的web服務(wù)器會(huì)通過CGI(Common Gateway Interfence)協(xié)議發(fā)起給php。這里但是如果php以模塊形式與web服務(wù)器聯(lián)系,那么它們是 通過內(nèi)部共享內(nèi)存的方式,如果是php與單獨(dú)的放置與一臺(tái)服務(wù)器,那么它們是以sockets套接字的方式 進(jìn)行通信(這又是一個(gè)C/S架構(gòu)),這時(shí)php會(huì)相應(yīng)的執(zhí)行一段程序,如果在程序執(zhí)行時(shí)需要一些數(shù)據(jù), 那么php就會(huì)通過 mysql協(xié)議發(fā)送給mysql服務(wù)器(這也可以看作是一個(gè)C/S架構(gòu)),由mysql服務(wù)器處 理,將數(shù)據(jù)供給php程序。
2.2 LNMP架構(gòu)的深層剖析
NGINX
NGinx是一款高性能的web服務(wù)器,本身是不能處理php請(qǐng)求的,當(dāng)接收到請(qǐng)求時(shí),判斷如果是 php請(qǐng)求就會(huì)將請(qǐng)求交給php解析器處理然后將結(jié)果返回給client。Nginx一般把請(qǐng)求轉(zhuǎn)發(fā)給fast-cgi管理 進(jìn)程進(jìn)行處理,fast-cgi管理進(jìn)程再選擇cgi子進(jìn)程處理請(qǐng)求,然后把結(jié)果返回給Nginx。
Apache+php和nginx+php的區(qū)別:
apache一般是把php當(dāng)作自己的一個(gè)模塊來啟動(dòng);而nginx則是把http請(qǐng)求變量轉(zhuǎn)發(fā)給php進(jìn)程,即 php獨(dú)立進(jìn)程,與Nginx通信,這種方式叫做fast-cgi運(yùn)行方式,所以apache編譯的php不能用于 nginx。
Fast-Cgi:
Fast-Cgi是一個(gè)可伸縮的,高速的HTPP server和動(dòng)態(tài)腳本語言間通信的接口。多數(shù)流行的HTTP server都支持fast-cgi,包括apache,nginx和lighttpd等。同時(shí)fast-cgi也被許多腳本語言支持,其中就 有php。Fast-CGI是從CGI發(fā)展改進(jìn)而來的。傳統(tǒng)的CGI接口方式的主要缺點(diǎn)是性能很差,因?yàn)槊看?HTTP服務(wù)器遇到動(dòng)態(tài)程序時(shí)都需要重新啟動(dòng)腳本解析器來進(jìn)行解析,然后將結(jié)果返回給http服務(wù)器。 這里在處理高并發(fā)訪問時(shí)幾乎是不可用的。另外傳統(tǒng)的CGI接口接口方式的安全性也很差,現(xiàn)在已經(jīng)很 少使用了。
Fast-CGI接口方式采用C/S結(jié)構(gòu),可以將http服務(wù)器和腳本解析服務(wù)器分開,同時(shí)在腳本解析服務(wù) 器上啟動(dòng)一個(gè)或者多個(gè)腳本解析器守護(hù)進(jìn)程。當(dāng)HTTP服務(wù)器每次遇到動(dòng)態(tài)程序時(shí),可以直接將其交給 Fast-CGI進(jìn)程來執(zhí)行,然后將的得到的結(jié)果再返回給瀏覽器。這種方式可以讓HTTP服務(wù)器專一的處理靜 態(tài)請(qǐng)求或者將動(dòng)態(tài)腳本服務(wù)器的結(jié)果返回給客戶端。這再很大程度上提高了應(yīng)用程序的性能。
Nginx+Fast-CGI的運(yùn)行原理:
Nginx不支持對(duì)外部程序的直接調(diào)用或者解析,所有的外部程序(包括PHP)必須通過fast-cgi接口 來調(diào)用。Fast-cgi接口在Linux下是socket(這個(gè)socket可以是文件socket,也可以是ip socket)。
wrapper:為了調(diào)用CGI程序,還需要一個(gè)Fast-cgi的wrapper(wrapper也可以理解為用于啟動(dòng)另外一 個(gè)程序的程序),這個(gè)wrapper綁定在某個(gè)固定的socket上,如端口或者文件socket。當(dāng)Nginx將CGI請(qǐng) 求發(fā)送給這個(gè)socket的時(shí)候通過Fast-CGI的接口,wrapper接收到一個(gè)請(qǐng)求,然后fork派生出一個(gè)新的 線程,這個(gè)線程調(diào)用解析器或者外部程序處理腳本并讀取返回?cái)?shù)據(jù);接著,wrapper再將返回的數(shù)據(jù)通 過Fast-cgi接口,沿著固定的socket傳遞給Nginx;最后Nginx將返回的數(shù)據(jù)(html頁(yè)面或者圖片)發(fā)送 給客戶端。
下圖為Nginx+Fast-CGI的整個(gè)運(yùn)行過程:
因此,首先需要一個(gè)wrapper,這個(gè)wrapper需要完成的工作:
(1)通過調(diào)用Fast-CGI(庫(kù))的函數(shù)通過socket和Nginx通信(讀寫socket是fast-cgi內(nèi)部實(shí)現(xiàn)的功 能,對(duì)wrapper是非透明的)
(2)調(diào)度thread,進(jìn)行fork和application進(jìn)行通信
php-fpm簡(jiǎn)述:
PHP-FPM是一個(gè)PHP FastCGI管理器,是只用于php的,它其實(shí)是php源代碼的一個(gè)補(bǔ)丁,旨在將FastCGI進(jìn)程管理整合進(jìn)PHP包中。必須將它patch到你的源代碼中,在編譯安裝php后才可以使用。新版的 PHP已經(jīng)集成了php-fpm,在./configure的時(shí)候帶–enable-fpmp參數(shù)即可開啟PHP-FPM。
fastcgi的特點(diǎn)。
HTTP服務(wù)器和動(dòng)態(tài)腳本語言間通信的接口或工具。 可把動(dòng)態(tài)語言解析和HTTP服務(wù)器分離開。 Nginx,Apache,Lighttpd,以及多數(shù)動(dòng)態(tài)語言都支持FastCGI。 FastCGI接口方式采用C/S結(jié)構(gòu),分為客戶端(HTTP服務(wù)器)和服務(wù)器端(動(dòng)態(tài)語言解析服務(wù)器) PHP動(dòng)態(tài)語言服務(wù)器端可以啟動(dòng)多個(gè)FastCGI的守護(hù)進(jìn)程(例如php-fpm(fcgi process mangement))HTTP服務(wù)器通過(例如Nginx fastcgi_pass)FastCGI客戶端和動(dòng)態(tài)語言FastCGI服務(wù)器端通信 (例如php-fpm)LNMP架構(gòu)工作流程
LNMP的工作原理
首先由瀏覽器發(fā)送http request請(qǐng)求給到服務(wù)器(Nginx),服務(wù)器響應(yīng)并處理web請(qǐng)求,將一些 靜態(tài)的資源(CSS,圖片,視頻)保存到服務(wù)器上,然后將php腳本通過接口傳輸協(xié)議(網(wǎng)關(guān)協(xié)議) PHP-FCGI(fast-cgi)傳輸給php-fpm(進(jìn)程管理程序),PHP-FPM不做處理,然后PHP-FPM調(diào)用php 解析器進(jìn)程,php解析器解析php腳本信息,php解析器進(jìn)程可以啟動(dòng)多個(gè),進(jìn)行并發(fā)執(zhí)行。然后將解 析后的腳本返回到PHP-FPM,PHP-FPM通過fast-cgi的形式將腳本信息傳送給Nginx。服務(wù)器在通過 http reponse的形式傳送給瀏覽器。瀏覽器再進(jìn)行解析與渲染后進(jìn)行呈現(xiàn)。
LNMP的工作流程
用戶發(fā)送http請(qǐng)求到達(dá)http服務(wù)器
httpd解析URL獲取需要的資源的路徑,通過內(nèi)核空間來讀取硬盤資源,如果是靜態(tài)資源,則構(gòu)建響應(yīng)報(bào)文發(fā)回給用戶。
如果是動(dòng)態(tài)資源,將資源地址發(fā)送給php解析器,解析php程序文件,解析完畢將內(nèi)容發(fā)回給httpd, httpd構(gòu)建響應(yīng)報(bào)文,發(fā)回給用戶。
如果涉及到數(shù)據(jù)庫(kù)操作,則利用php-mysql驅(qū)動(dòng),獲取數(shù)據(jù)庫(kù)數(shù)據(jù),返回給PHP解析器。
LNMP架構(gòu)與LAMP架構(gòu)
Lnmp架構(gòu)與Lamp架構(gòu)相似,只不過一個(gè)用的是Apache一個(gè)用的Nginx。Nginx和Apache一樣都是web服務(wù)器。
LNMP架構(gòu)里php會(huì)啟動(dòng)服務(wù)php-fpm,而LAMP中php只是作為Apache的一個(gè)模塊存在。Nginx會(huì)把 用戶的動(dòng)態(tài)請(qǐng)求交給php服務(wù)去做處理,這個(gè)php服務(wù)就會(huì)去和數(shù)據(jù)庫(kù)進(jìn)行交互。用戶的靜態(tài)請(qǐng)求 Nginx會(huì)直接處理,Nginx處理靜態(tài)請(qǐng)求的速度要比Apache快很多性能上要好,所以apache和Nginx在 動(dòng)態(tài)請(qǐng)求處理上區(qū)別不大,但是如果是靜態(tài)處理的話就會(huì)發(fā)現(xiàn)Nginx要快于apache,而且Nginx能承受 的并發(fā)量要比apache大,可以承受好幾萬的并發(fā)連接量,所以大一些的網(wǎng)站都會(huì)使用Nginx作為web服 務(wù)器。
3、LNMP搭建3.1、搭建WEB服務(wù)器
3.1.1、二進(jìn)制部署nginx
nginx下載地址:http://nginx.org/download/
范例:
1、下載相關(guān)依賴包[13:29:31 root@WEB ~]#yum install -y gcc gcc-c++ glibc glibc-devel pcre pcredevel openssl openssl-devel systemd-devel net-tools iotop bc zip unzip zlibdevel bash-completion nfs-utils automake libxml2 libxml2-devel libxslt libxsltdevel perl perl-ExtUtils-Embed2、創(chuàng)建nginx用戶[13:31:45 root@WEB ~]#useradd -s /sbin/nologin nginx -u 20003、進(jìn)入/usr/local/src/目錄并下載nginx[13:32:06 root@WEB ~]#cd /usr/local/src/;wget http://nginx.org/download/nginx1.18.0.tar.gz4、解壓nginx[13:40:26 root@WEB src]#tar xf nginx-1.18.0.tar.gz5、進(jìn)入nginx解壓好之后的目錄,并生成編譯環(huán)境。[13:46:29 root@WEB src]#cd nginx-1.18.0/[13:47:36 root@WEB nginx-1.18.0]#./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --withhttp_realip_module --with-http_stub_status_module --with-http_gzip_static_module--with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module6、編譯&安裝[13:50:58 root@WEB nginx-1.18.0]#make -j 4 && make install7、修改nginx配置文件使其支持php-fpm服務(wù)。[13:51:54 root@WEB nginx-1.18.0]#vim /apps/nginx/conf/nginx.confuser nginx;worker_processes 1;events { worker_connections 1024; }http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65 65;server_tokens off; server {listen 80;server_name 10.0.0.27;charset utf-8; location / { error_page 500 502 503 504 404 /50x.html; root /apps/nginx/html/; index index.php index.html index.htm;}location = /50x.html { root html; }location ~ \.php$ { root /apps/nginx/html/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}}8、啟動(dòng)nginx服務(wù)、查看端口80已打開[13:55:29 root@WEB nginx-1.18.0]#/apps/nginx/sbin/nginx[13:56:27 root@WEB nginx-1.18.0]#ss -ntl | grep 80LISTEN 0 128 *:80 *:*3.1.2、nginx配置文件解析
#因?yàn)槲覀冊(cè)谏删幾g環(huán)境的時(shí)候--prefix=/apps/nginx 參數(shù)制定了nginx的安裝目錄,所以我們?cè)诰庉嬙趎ginx的配置文件就直接到/apps/nginx目錄下。#nginx配置文件詳解:user nginx; #全局配置端,對(duì)全局生效,主要設(shè)置nginx的啟動(dòng)用戶/組,啟動(dòng)的工作進(jìn)程數(shù)量,工作模式,Nginx的PID路徑,日志路徑等。worker_processes 1; #啟動(dòng)工作進(jìn)程數(shù)數(shù)量 ,這個(gè)值默認(rèn)是1(正常情況下是我們events { #events設(shè)置塊,主要影響nginx服務(wù)器與用戶的網(wǎng)絡(luò)連接,比如是否允許同時(shí)接受多個(gè)網(wǎng)絡(luò)連接,使用哪種事件驅(qū)動(dòng)模型處理請(qǐng)求,每個(gè)工作進(jìn)程可以同時(shí)支持的最大連接數(shù),是否開啟對(duì)多工作進(jìn)程下的網(wǎng)絡(luò)連接進(jìn)行序列化等。worker_connections 1024; #設(shè)置單個(gè)nginx工作進(jìn)程可以接受的最大并發(fā),作為web服務(wù)器的時(shí) 候最大并發(fā)數(shù)為worker_connections * worker_processes,作為反向代理的時(shí)候?yàn)?要除以2(worker_connections * worker_processes)/2 因?yàn)樽鳛榉聪虼淼臅r(shí)候是自身來處理,所以本身扛得住。}http { #http塊是Nginx服務(wù)器配置中的重要部分,緩存、代理和日志格式定義等絕大多數(shù)功能和第三方模塊都可以在這設(shè)置,http塊可以包含多個(gè)server塊,而一個(gè)server塊中又可以包含多個(gè)location塊,server塊可以配置文件引入、MIME-Type定義、日志自定義、是否啟用sendfile、連接超時(shí)時(shí)間和單個(gè)鏈接的請(qǐng)求上限等。 include mime.types; #支持的mime類型,MIME(Multipurpose Internet MailExtensions)多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型,MIME消息能包含文本、圖像、音頻、視頻以及其他應(yīng)用程序?qū)S玫臄?shù)據(jù),是設(shè)定某種擴(kuò)展名的文件用一種應(yīng)用程序來打開的方式類型,當(dāng)該擴(kuò)展名文件被訪問的時(shí)候,瀏覽器會(huì)自動(dòng)使用指定應(yīng)用程序來打開。多用于指定一些客戶端自定義的文件名,以及一些媒體文件打開方式。default_type application/octet-stream; #默認(rèn)類型應(yīng)用程序/八進(jìn)制 sendfile on; #作為web服務(wù)器的時(shí)候打開sendfile加快靜態(tài)文件傳輸,指定是否使用sendfile系統(tǒng)調(diào)用來傳輸文件,sendfile系統(tǒng)調(diào)用在兩個(gè)文件描述符之間直接傳遞數(shù)據(jù)(完全在內(nèi)核中操作),從 而避免了數(shù)據(jù)在內(nèi)核緩沖區(qū)和用戶緩沖區(qū)之間的拷貝,操作效率很高,被稱之為零拷貝,硬盤 >>kernel buffer (快速拷貝到kernelsocket buffer) >>協(xié)議棧。 keepalive_timeout 65 65; #長(zhǎng)連接超時(shí)時(shí)間,單位是秒 通常加兩個(gè),讓客戶端和服務(wù)器的持續(xù)鏈接時(shí)間相同server_tokens off; #安全優(yōu)化-隱藏版本號(hào) server { #設(shè)置一個(gè)虛擬機(jī)主機(jī),可以包含自己的全局塊,同時(shí)也可以包含多個(gè)location模塊。比如本虛擬機(jī)監(jiān)聽的端口、本虛擬機(jī)的名稱和IP配置,多個(gè)server 可以使用一個(gè)端口,比如都使用80端口提供web服務(wù)、本身可以多次監(jiān)聽同一個(gè)端口listen 80; #配置server監(jiān)聽的端口默認(rèn)監(jiān)聽所有80server_name 10.0.0.7; #本server的名稱,當(dāng)訪問此名稱的時(shí)候nginx會(huì)調(diào)用當(dāng)前serevr內(nèi)部的配置進(jìn)程匹配nginx可以有多個(gè)虛擬主機(jī),只要使用域名區(qū)分即可。charset utf-8; #設(shè)置編碼格式,默認(rèn)是俄語格式,可以改為utf-8 讓他支持全球標(biāo)準(zhǔn)語法location / { #location其實(shí)是server的一個(gè)指令,為nginx服務(wù)器提供比較多而且靈活的指令,都是在location中提現(xiàn)的,主要是基于nginx接受到的請(qǐng)求字符串,對(duì)用戶請(qǐng)求的UIL進(jìn)行匹配,并對(duì)特定的指令進(jìn)行處理,包括地址重定向、數(shù)據(jù)緩存和應(yīng)答控制等功能都是在這部分實(shí)現(xiàn),另外很多第三方模塊的配置也是在location模塊中配置。 error_page 500 502 503 504 404 /50x.html; #出現(xiàn)這幾個(gè)狀態(tài)即可跳轉(zhuǎn)到50x.html文件 root /apps/nginx/html/; #定義錯(cuò)誤頁(yè)面的時(shí)候做的處理,這個(gè)50x.html其實(shí)是一個(gè)文件。 index index.php index.html index.htm; #nginx配置默認(rèn)首頁(yè)} location = /50x.html { root html;} ocation ~ \.php$ { #以http的方式轉(zhuǎn)發(fā)php請(qǐng)求到指定web服務(wù)器 root /apps/nginx/html/; #php文件存放路徑 fastcgi_pass 127.0.0.1:9000; #指明后端php-fpm服務(wù)器主機(jī)及端口 fastcgi_index index.php; #默認(rèn)使用的php文件 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #這個(gè)配置的意思是 在瀏覽器中訪問的.php文件,實(shí)際讀取的是 $document_root(網(wǎng)站根目錄)下的.php文件 -- 也就是說當(dāng)訪問127.0.0.1/index.php的時(shí)候,需要讀取網(wǎng)站根目錄下面的index.php文件,如果沒有配置這一配置項(xiàng)時(shí),nginx不回去網(wǎng)站根目錄下訪問.php文件,所以返回空白include fastcgi_params; #這里面寫的是一堆變量3.1.3、測(cè)試web服務(wù)
搭建好了nginx之后我們就去通過瀏覽器訪問測(cè)試
3.2、二進(jìn)制搭建php服務(wù)
編譯好了nginx之后我們開始解決nginx的php問題。
php官方下載:https://xintu.php.net/downloads.php
范例:
1、進(jìn)入/usr/local/src/目錄[13:56:31 root@WEB nginx-1.18.0]#cd /usr/local/src/ 2、解決php依賴關(guān)系[14:01:15 root@WEB src]#yum install libxml2-devel bzip2-devel libmcrypt-develsqlite-devel -y3、php-fpm官方下載安裝包[14:04:09 root@WEB src]#wget https://xintu.php.net/distributions/php-7.4.7.tar.gz4、解壓php安裝包[14:04:37 root@WEB src]#tar xf php-7.4.7.tar.gz5、進(jìn)入php目錄,并生成編譯環(huán)境[14:06:36 root@WEB src]#cd php-7.4.7/[14:07:21 root@WEB php-7.4.7]#./configure --prefix=/app/php --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-freetype-dir--with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --with-configfile-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainer-zts --disablefileinfo --disable-mbregex6、編譯安裝[14:10:56 root@WEB php-7.4.7]#make -j 4 && make install7、系統(tǒng)使用php.ini中的設(shè)置拷貝在/etc/目錄下[14:12:26 root@WEB php-7.4.7]#cp -f php.ini-production /etc/php.ini8、拷貝啟動(dòng)腳本到systemd中、使用systemd啟動(dòng)服務(wù)[14:12:28 root@WEB php-7.4.7]#cp -f sapi/fpm/php-fpm.service/usr/lib/systemd/system/ 9、拷貝xintu.conf.default配置文件為xintu.conf[14:13:32 root@WEB php-7.4.7]#cp /app/php/etc/php-fpm.d/xintu.conf.default/app/php/etc/php-fpm.d/xintu.conf[14:14:56 root@WEB php-7.4.7]#ll /app/php/etc/php-fpm.d/total 40-rw-r--r-- 1 root root 19675 Jun 19 14:14 xintu.conf-rw-r--r-- 1 root root 19675 Jun 19 14:10 xintu.conf.default10、修改xintu.conf配置文件內(nèi)容、主要修改user、group、listen這三項(xiàng)[11:15:31 root@a7 etc]#vim /app/php/etc/php-fpm.d/xintu.conf22 ; will be used.23 user = nginx #改為用戶為nginx、讓nginx啟動(dòng)php24 group = nginx #組也改為nginx2526 ; The address on which to accept FastCGI requests.27 ; Valid syntaxes are:28 ; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on29 ; a specific port;30 ; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on31 ; a specific port;32 ; 'port' - to listen on a TCP socket to all addresse s33 ; (IPv6 and IPv4-mapped) on a specific port ;34 ; '/path/to/unix/socket' - to listen on a unix socket.35 ; Note: This value is mandatory.36 listen = 0.0.0.0:9000 #網(wǎng)段寫為0.0.0.0主要是為了好讓nginx監(jiān)聽該端口11、將php的配置文件目錄下拷貝為php-fpm.conf[14:18:02 root@WEB php-7.4.7]#cp /app/php/etc/php-fpm.conf.default/app/php/etc/php-fpm.conf啟動(dòng)php:
范例:
1、重新加載系統(tǒng)服務(wù),并啟動(dòng)php-fpm、和查看9000端口[14:20:03 root@WEB php-7.4.7]#systemctl daemon-reload[14:21:16 root@WEB php-7.4.7]#systemctl enable --now php-fpm.service[14:21:23 root@WEB php-7.4.7]#ss -ntl | grep 9000LISTEN 0 128 *:9000 *:*3.2.1 測(cè)試PHP
在nginx的html目錄下編一個(gè)php測(cè)試頁(yè)面
范例:
[14:21:53 root@WEB php-7.4.7]#vim /apps/nginx/html/test.php<?phpphpinfo();?>打開http://10.0.0.27/test.php顯示php測(cè)試頁(yè)面、說明nginx現(xiàn)在已經(jīng)支持PHP服務(wù)
3.3、二進(jìn)制安裝數(shù)據(jù)庫(kù)
mariadb數(shù)據(jù)庫(kù)下載地址:https://mirrors.tuna.tsinghua.edu.cn/mariadb/
安裝10.5.3范例:
1、通過在清華源上下載10.5.3版本的mariadb數(shù)據(jù)庫(kù)[13:29:50 root@MYSQL ~]#wgethttps://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.5.3/bintar-linuxsystemd-x86_64/mariadb-10.5.3-linux-systemd-x86_64.tar.gz2、創(chuàng)建mysql用戶并創(chuàng)建家目錄[14:29:49 root@MYSQL ~]#useradd mysql -s /sbin/nologin -M3、創(chuàng)建自定義數(shù)據(jù)庫(kù)目錄[14:30:00 root@MYSQL ~]#mkdir /data/mysql/mysql3306/{data,binlog,logs,tmp} -p4、對(duì)mysql3306這個(gè)目錄進(jìn)行授權(quán),授權(quán)給mysql用戶chown -R mysql.mysql /data/mysql/mysql3306/ 5、安裝相關(guān)依賴包[14:30:58 root@MYSQL ~]#yum install libaio.x86_64 libaio-devel.x86_64 novacomserver.x86_64 libedit -y6、解壓mariadb安裝包、指定解壓到/usr/local[14:32:07 root@MYSQL ~]#tar xf mariadb-10.5.3-linux-systemd-x86_64.tar.gz -C/usr/local/ 7、進(jìn)入到/usr/local/src目錄下添加一個(gè)mysql的軟連接[14:33:36 root@MYSQL ~]#cd /usr/local/[14:33:52 root@MYSQL local]#ln -s mariadb-10.5.3-linux-systemd-x86_64/ mysql8、提示:初始化時(shí)要在/usr/local/mysql/ 目錄下創(chuàng)建一個(gè)空的影藏文件.my.cnf文件,否則會(huì)提示文件不存在,導(dǎo)致初始化失敗。這是新版mariadb的特性[14:34:11 root@MYSQL local]#cd /usr/local/mysql/;touch .my.cnf9、初始化命令[14:34:51 root@MYSQL mysql]#./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/mysql3306/data --defaultsfile=./.my.cnf10、修改/etc/my.cnf配置文件、指定數(shù)據(jù)庫(kù)存放目錄、和socket文件路徑。[14:35:18 root@MYSQL mysql]#vim /etc/my.cnf[mysqld]datadir=/data/mysql/mysql3306/datasocket=/tmp/mysql.sock11、初始化好了就配置mariadb啟動(dòng)方式為systemd啟動(dòng)[14:36:15 root@MYSQL mysql]#cp support-files/systemd/mariadb.service/usr/lib/systemd/system/mariadb.service12、設(shè)置為開機(jī)啟動(dòng)、檢查3306端口已開啟[14:37:21 root@MYSQL mysql]#systemctl enable --now mariadb[14:37:12 root@MYSQL mysql]#ss -ntl | grep 3306LISTEN 0 80 [::]:3306 [::]:* 13、做軟連接,通過mysql命令來進(jìn)入交互模式[14:37:55 root@MYSQL mysql]#ln -s /usr/local/mysql/bin/mysql /usr/bin/ 14、登錄mysql服務(wù)[14:39:03 root@MYSQL mysql]#mysqlWelcome to the MariaDB monitor. Commands end with ; or \g.Your MariaDB connection id is 3Server version: 10.5.3-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]>3.3.1、授權(quán)wordpress用戶權(quán)限和數(shù)據(jù)庫(kù)
范例:
1、創(chuàng)建一個(gè)為wordpress網(wǎng)頁(yè)提供服務(wù)的WEB數(shù)據(jù)庫(kù)MariaDB [(none)]> create database WEB;Query OK, 1 row affected (0.001 sec)2、創(chuàng)建一個(gè)zgy用戶來對(duì)WEB數(shù)據(jù)庫(kù)的所有操作、并且指定IP為10.0.0.27 web服務(wù)器IP密碼為12345MariaDB [(none)]> grant all on WEB.* to zgy@'10.0.0.27' identified by "12345";Query OK, 0 rows affected (0.001 sec)3.4、安裝wordpress wordpress
下載地址:https://cn.wordpress.org/download/
web服務(wù)器主機(jī)上下載并安裝wordpress
范例:
1、進(jìn)入到/usr/local/src通過wget下載wordpress[14:23:16 root@WEB php-7.4.7]#cd /usr/local/src/[14:47:17 root@WEB src]#wget https://cn.wordpress.org/latest-zh_CN.tar.gz2、解壓wordpress安裝包[14:48:43 root@WEB src]#tar xf latest-zh_CN.tar.gz3、進(jìn)入wordpress文件,然后拷貝php文件,并將wordpress動(dòng)到nginx的html文件下[14:49:17 root@WEB src]#cd wordpress/[14:49:50 root@WEB wordpress]#cp wp-config-sample.php wp-config.php[14:50:10 root@WEB wordpress]#cd ..[14:50:16 root@WEB src]#mv wordpress/ /apps/nginx/html/ 4、編輯wordpress調(diào)用數(shù)據(jù)配置文件[14:50:25 root@WEB src]#vim /apps/nginx/html/wordpress/wp-config.php/** WordPress數(shù)據(jù)庫(kù)的名稱 */define( 'DB_NAME', 'WEB' );/** MySQL數(shù)據(jù)庫(kù)用戶名 */define( 'DB_USER', 'zgy' );/** MySQL數(shù)據(jù)庫(kù)密碼 */define( 'DB_PASSWORD', '12345' );/** MySQL主機(jī) */define( 'DB_HOST', '10.0.0.37' );/** 創(chuàng)建數(shù)據(jù)表時(shí)默認(rèn)的文字編碼 */define( 'DB_CHARSET', 'utf8' );/** 數(shù)據(jù)庫(kù)整理類型。如不確定請(qǐng)勿更改 */define( 'DB_COLLATE', '' );5、修改nginx配置文件把html顯示頁(yè)面的根改為wordpress目錄[14:54:54 root@WEB src]#vim /apps/nginx/conf/nginx.confuser nginx;worker_processes 1;events {worker_connections 1024;}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65 65;server_tokens off;server {listen 80;server_name 10.0.0.27;charset utf-8;location / {error_page 500 502 503 504 404 /50x.html;root /apps/nginx/html/wordpress; #因?yàn)橐獙ordpress作為網(wǎng)絡(luò)目錄index index.php index.html index.htm;}location = /50x.html {root html;}location ~ \.php$ {root /apps/nginx/html/wordpress; #因?yàn)橐獙ordpress作為網(wǎng)絡(luò)目錄fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}}}4、瀏覽器訪問測(cè)試wordpress已經(jīng)搭好瀏覽器訪問我們的web服務(wù)器IP: http://10.0.0.27
創(chuàng)建wordpress信息
登錄wordpress
登錄儀表盤
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由信途科技轉(zhuǎn)載于網(wǎng)絡(luò),如有侵權(quán)聯(lián)系站長(zhǎng)刪除。
轉(zhuǎn)載請(qǐng)注明出處http://macbookprostickers.com/xintu/21190.html