Google Cloud 谷歌雲端伺服器設定LNMP環境PHP+Mysql+Nginx 安裝詳解

谷歌雲端伺服器配置工欲善其事,必先利其器,磨刀不誤砍柴功,先把伺服器LNMP環境搭建好,再建立web網站,沒有一個好的PHP環境,後面麻煩會更多。之前講過手動安裝部署php環境,今天說一下在不使用第三方面板的情況下,在Google雲端伺服器上使用dnf 指令,手動安裝PHP+Mysql+Nginx環境的設定方法。

谷歌雲端伺服器配置在Centos8 下安裝LNMP 環境PHP+Mysql+Nginx 安裝詳解

伺服器配置 工欲善其事,必先利其器,磨刀不誤砍柴功,先把伺服器LNMP環境搭建好,再建立web網站,沒有一個好的PHP環境,後面麻煩會更多。之前講過手動安裝部署php環境,今天說一下在不使用第三方面板的情況下,在Google上使用 dnf 指令,手動安裝PHP++環境的配置方法。

本教學適用於:/ 8/ Stream 9/ Red Hat Enterprise (RHEL)

Google Cloud 谷歌雲端伺服器設定LNMP環境PHP+Mysql+Nginx 安裝詳解

谷歌雲端伺服器配置

系統安裝在上,本文測試的機器類型是e2-medium(2 個vCPU,4 GB 記憶體)。

由於CentOS 8 宣布21年底停止支持,升級至CentOS Stream,Google 將先前的Centos8 系統更新為CentOS Stream 8和CentOS Stream 9系統,在操作方面沒有太大改變。添加一下軟體倉庫來源即可。

以下以CentOS Stream 8系統為例,進行

Google 谷歌雲端申請以及虛擬機器配置方法請瀏覽:免費申請谷歌雲
建立好VM伺服器後,連線上SSH,以下開始操作。安裝好Centos8系統後的第一件事情就是修改系統的root密碼。

谷歌雲端伺服器配置在Centos8 下安裝LNMP 環境

使用Google雲端平台上自帶的網頁SSH連線伺服器,登陸後修改SSH連線方式。

谷歌雲端伺服器設定修改伺服器root密碼

使用 sudo -i 或者 sudo su 指令切換到超級管理root用戶,切換到root超級管理員模式後輸入 passwd 命令修改密碼。

sudo -i passwd

輸入你要修改的密碼,然後二次確認密碼,密碼確認完畢後回車設定完成。使用 cd\ 指令切換到root目錄下。
使用 VI 命令修改SSH的設定檔。

vi /etc/ssh/sshd_config
谷歌雲端伺服器配置在Centos8 下安裝LNMP 環境

如果你想修改SSH遠端連接的端口,將Port 前面的#號去掉,然後再後面修改你想修改的端口號。
在sshd_config中修改下面的內容:

  • PermitRootLogin 預設值為no,需要改為yes後才可以使用SSH遠端存取。
  • PasswordAuthentication 預設值為no,改為yes開啟密碼登陸。
  • ClientAliveInterval 預設值420,修改為3600,這個是客戶端連線逾時的時間。
Port 10086 PermitRootLogin yes PasswordAuthentication yes ClientAliveInterval 3600

修改完畢後,使用:wq命令退出VI編輯。

以上是使用Google雲端伺服器開啟SSH登入的方法。更改ssh的連接埠後,需要關閉SElinux,否則無法登入。

永久關閉SElinux

伺服器,首先需要永久關閉SElinux,雖然說SElinux是用來增強Linux安全的,但設定起來非常麻煩。建議永久關閉。

vi /etc/selinux/config

找到SELINUX=enforcing,按i進入編輯模式,將參數修改為SELINUX=disabled。

谷歌雲端伺服器配置在Centos8 下安裝LNMP 環境

修改完成後,按下鍵盤Esc鍵,執行指令:wq,儲存並退出檔案。之後reboot重新啟動伺服器。 SElinux已經成功關閉了,下一步就是修改SSH的端口號,網上自動掃描肉雞的很多,一旦中招,後果不堪設想,谷歌云是按流量收費的,雖然送了300美元,如果被入侵,一天頻寬跑個幾千塊沒有問題。所以說還是先把SSH的遠端埠更改一下!

注意:有些系統是預設開啟防火牆的,需要檢視防火牆狀態

systemctl status firewalld

Google Cloud 谷歌雲端伺服器設定LNMP環境PHP+Mysql+Nginx 安裝詳解

如果防火牆是開啟狀態,需要在root使用者權限下,關閉firewalld

#首先需要停止防火牆systemctl stop firewalld #防火牆停止後,進行永久關閉systemctl disable firewalld

後期進入生產環境時,防火牆可以在Google雲端的平台上設置防火牆。

重新啟動伺服器!

 reboot

Google雲端伺服器設定CentOS 7 / CentOS Stream 8/9 安裝軟體來源epel和remi

接下來需要進一步安裝centos8系統所需的軟體,以下開始更新系統,以及安裝系統軟體套件所需的來源。 而remi 是centos8不可或缺的軟體倉庫。

使用RPM方式安裝軟體來源:

CentOS 7 安裝軟體倉庫:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

CentOS Stream 8 安裝軟體倉庫:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-8.rpm

CentOS Stream 9 安裝軟體倉庫:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-9.rpm

使用DNF方式安裝軟體來源:

DNF是下一代的yum軟體套件管理器(Yum的派生)。 dnf和yum的語法類似,有許多相似之處,預設情況下,DNF已安裝在RHEL 8和CentOS Stream 8系統上。

CentOS 7 安裝軟體倉庫:

CentOS7需要先安裝dnf指令。

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm dnf install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

CentOS Stream 8 安裝軟體倉庫:

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

CentOS Stream 9 安裝軟體倉庫:

dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

軟體來源安裝完畢後,安裝 dnf-utils

dnf-utils 在DNF 之上作為CLI 墊片實現的經典YUM 實用程式。這些shim 的主要目的是確保與yum-3 的向後相容性。

安裝之後使用 dnf update 指令更新系統內軟體至最新版本。

dnf install dnf-utils dnf update

查看系統上啟用的資料來源,使用 dnf repolist all 命令可以查看全部的資料來源,包括未啟用的資料來源。

dnf repolist all
谷歌雲端伺服器配置在Centos8 下安裝LNMP 環境

使用 dnf repolist 命令,可以查看目前正在使用的軟體來源。

dnf repolist

使用 dnf repolist disabled 命令查看系統禁用的資料來源。

dnf repolist disabled

軟體來源安裝過後,需要設定優化一下安裝的軟體套件來源。使用 makecache 命令生成來源緩存。

dnf makecache

安裝啟用DNF的自動更新:

dnf install dnf-automatic systemctl start dnf-automatic.timer

安裝「開發工具」軟體包組:

dnf group install 'Development Tools' -y

使用DNF更新系統軟體套件:

 dnf -y update

谷歌雲端伺服器配置SWAP虛擬內存

Google雲端預設安裝作業系統是沒有分配swap空間的,需要手動新增。如果作業系統沒有配置swapfile(分配swap空間)會導致記憶體負載後發生錯誤。下面教你如何加入centos8作業系統的swap空間!
使用 free -m 指令查看記憶體配置,如果Swap後面都是0的話則需要加入swap空間。

 free -m

使用六步驟創建Swap虛擬記憶體:

  1. 建立一個預先分配指定大小空間的檔案;
  2. 以用ls指令檢查檔案大小;
  3. 更改swap檔案的權限;
  4. 格式化swap檔;
  5. 啟用swap交換文件;
  6. 修改fstab檔案來實現重新啟動後自動生效swap。

建立一個8G的SWAP分區,如果想增加或縮小SWAP虛擬內存,請修改count=後面的數值。

sudo dd if=/dev/zero of=/swapfile bs=1024 count=8388608 ls -lh /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /fs

使用 VI 命令在fstab 檔案結尾加入下面內容:

/swapfile swap swap sw 0 0

如果你不想使用 VI 指令,也可以直接使用 echo 指令設定swap開機啟動。

echo '/swapfile swap swap sw 0 0' | sudo tee -a /etc/fstab

伺服器時間同步

安裝伺服器時間同步工具,服務端與客戶端的時間同步非常重要。

查看目前時區,如果時區是UTC,則需要修改伺服器時區。

timedatectl status|grep 'Time zone' #查看伺服器硬體時間hwclock #透過hwclock -w 將作業系統時間同步到硬體時間hwclock -w

修改伺服器時區

timedatectl set-timezone Asia/Shanghai timedatectl set-local-rtc 1 #使用date指令查看一下目前伺服器時間。 date

將伺服器時區修改為Asia/Shanghai,之後可以使用 timedatectl 命令查詢時區。

在CentOS 8 中預設不再支援ntp 軟體包,時間同步將由chrony 來實現。

預設centos8安裝系統後已經存在chrony的軟體包了,可以透過rpm -q chrony 確認是否存在,如果不存在使用dnf安裝即可:dnf install chrony

vi /etc/chrony.conf
server ntp.aliyun.com iburst

將國內阿里雲的時間同步伺服器添加在第一行保存即可。

設定chrony開機運行

systemctl enable chronyd systemctl start chronyd

新增使用者和使用者群組

在配置Centos8之前,需要新增用戶群組和用戶,用於web服務存取相關的權限使用。

groupadd www useradd -g www www

使用者和使用者群組配置完畢後,Centos8的基本環境已經配置的差不多了,下面開始安裝web相關服務。

Centos8設定完成後,安裝Nginx+PHP8+Mysql,安裝的順序一定不要搞錯,先安裝Nginx,之後再安裝PHP8和Mysql。Nginx安裝完畢後,無需配置,安裝好PHP8後再設定Nginx。

開啟CentOS自帶的TCP BBR加速

系統自帶內核高於4.9 則預設已包含BBR

1、使用root 權限運行下面程式碼,核心版本高於4.9 就行。

uname -r

2、開啟BBR

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

3、生效更改

sysctl -p

4.執行下方指令,如果結果中帶有bbr,證明你的核心已開啟bbr。

sysctl net.ipv4.tcp_available_congestion_control

註:也可以執行下面指令,如果結果中有bbr,也可以證明你的核心已開啟bbr。

lsmod | grep bbr

 

Google雲端伺服器設定安裝Nginx

安裝nginx相對簡單的多,安裝後查看一下版本,是1.14.1,使用DNF的軟體包相對來說都是比較穩定的包。有時候版本會略低一點,對於centos官方來源來說,這個很正常。

在安裝Nginx之前,先安裝Nginx所需的依賴套件。

dnf -y install zlib zlib-devel pcre pcre-devel openssl openssl-devel gd-devel make gcc gcc-c++
  • gcc linux編譯器
  • pcre是一個perl函式庫,包含perl相容的正規表示式函式庫,nginx的http模組使用pcre來解析正規表示式
  • zlib函式庫提供了很多種壓縮和解壓縮方式nginx使用zlib對http套件的內容進行
  • openssl是web安全通訊的基石,也就是https相關的依賴

安裝nginx:
Nginx所需的依賴套件安裝好之後,輸入下方指令,安裝nginx。

dnf install nginx nginx -v

安裝後設定開機啟動:

systemctl enable nginx

啟動Nginx,啟動之後查看以下Nginx的目前狀態:

systemctl start nginx systemctl status nginx

查看目前80埠狀態:

netstat -na | grep 80

檢查及設定nginx預設埠是否開啟:

firewall-cmd --query-port=80/tcp

如果回傳值是no,則80埠未開放,需設定防火牆,放行80埠

開啟80埠:

firewall-cmd --add-port=80/tcp --permanent firewall-cmd --reload

在瀏覽器輸入伺服器的IP位址,查看是否能造訪nginx的歡迎頁面。

配置Google雲端伺服器在Centos8 下安裝LNMP 環境

Nginx的安裝已經成功了,接下來查看安裝目錄。手動安裝Nginx目錄一般都是/usr/local/nginx,但使用yum/dnf安裝的目錄跟手動安裝的不太一樣,以下是使用yum/dnf安裝nginx的一些對應目錄:

  • Nginx主設定檔:/etc/nginx/
  • Nginx執行檔目錄:/usr/sbin/nginx
  • Nginx首頁html網頁路勁:/usr/share/nginx/html
  • 代理目錄:/var/cache/nginx/proxy_temp
  • Nginx的快取目錄:/var/cache/nginx/fastcgi_temp
  • scgi目錄:/var/cache/nginx/scgi_temp
  • uwsgi目錄:/var/cache/nginx/uwsgi_temp
  • Nginx的日誌目錄:/var/log/nginx
谷歌雲端安裝PHP+Mysql+Nginx

安裝完畢後使用 nginx -t 命令測試安裝是否正確。正確會傳回下面的內容。

CentOS8的預設軟體倉庫內建的nginx版本是1.14.1,最近漏掃提示需要升級至1.17.7以上版本。如果你想安裝更高的nginx版本,請查看:Centos8如何安裝最新版本的Nginx

谷歌雲端伺服器配置安裝PHP8

如果使用 dnf -y install php 指令預設安裝php的話,預設安裝的版本很低,目前PHP版本是PHP8.1,下面看如何安裝PHP8.1

首先查詢系統中,安裝PHP8.1的軟體來源:

dnf list php
谷歌雲端安裝PHP+Mysql+Nginx

Centos8預設倉庫裡的php版本是7.2.24,這個版本太低了,下一步就切換到remi來源,找出php8.1版本。

取得可用的PHP列表:

dnf module list php
谷歌雲端安裝PHP+Mysql+Nginx

下一步需要啟用,remi倉庫的PHP模組,先重置PHP模組。

重置PHP資料來源模組:

dnf module reset php
谷歌雲端安裝PHP+Mysql+Nginx

接下來,設定啟用新的PHP資料來源模組,我們需要安裝php8.1,就啟用remi-8.1。

dnf module enable php:remi-8.1
谷歌雲端安裝PHP+Mysql+Nginx

remi-8.1模組已經啟用了,下面進行安裝php8.1

輸入安裝指令進行安裝:

dnf install php
谷歌雲端安裝PHP+Mysql+Nginx

php安裝成功後,額外安裝一些常用的php擴充軟體包:

dnf install -y php-{mysqlnd,xml,xmlrpc,curl,gd,imagick,mbstring,opcache,soap,zip}

php8.0的擴充安裝

dnf install -y php-{mysqlnd,pecl-imagick,pecl-imagick-devel,gd,intl,cli,mbstring,curl,php-pecl-zip}

使用 dnf search 指令查詢PHP8.1都有哪些擴充軟體包:

dnf search php81*

查詢之後,我們發現php81相關的軟體包太多了,這些都是做什麼用的?哪些該裝哪些不該裝呢?以下是php8.1擴充安裝包的詳細介紹。

PHP8.1已經好了,接下來看看都安裝了哪些擴充軟體套件。

rpm -qa|grep php
谷歌雲端安裝PHP+Mysql+Nginx

也可以使用 php --modules 指令來查詢已經安裝的PHP擴充。

php --modules

如果還需要安裝PHP擴展,只需要使用dnf -y install 指令加上你需要安裝的擴充名稱。

例如安裝PHP的mysqlnd擴充:

dnf install -y php-mysqlnd
谷歌雲端安裝PHP+Mysql+Nginx

以上都安裝完畢後,接下來,設定php的開機啟動。

systemctl enable php-fpm

使用 systemctl 指令來管理方便快速。如果有新的PHP軟體包更新,可以使用下面命令,升級最新的可用版本

dnf upgrade

好了,到這裡PHP8.1的安裝就正式完成了,啟動PHP服務,讓PHP開始運作。

systemctl enable php-fpm --now
伺服器啟動完畢後,請看一下PHP8.1的運作狀態。
systemctl status php-fpm

谷歌雲端安裝PHP+Mysql+Nginx

狀態燈是綠色的,表示PHP已經正常運作了,下面有一些PHP的設定檔需要修改。

PHP8配置

修改php.ini文件

php.ini文件,是php的核心設定文件,謹慎修改!

查找php.ini檔案位置

谷歌雲端安裝PHP+Mysql+Nginx
php -info | grep php.ini

編輯php.ini 文件

使用 VI 指令編輯php.ini 文件,或使用SFTP登陸伺服器,使用記事本編輯修改php.ini 檔案。 SFTP客戶端建議使用Xftp。

vi /etc/php.ini

將檔案內的變數修改成下面的數值。

#列印PHP錯誤:display_errors = on # 將記憶體使用量增加到256M: memory_limit = 256M #檔案上傳大小,預設值太小,建議修改1G大小,也就是1024M:upload_max_filesize = 1024M 1551024M: upload_max_filesize = 1024M 1551024M 485 #每個腳本的最大執行時間,以秒為單位: max_execution_time=600 #可以接受多少個GET/POST/COOKIE 輸入變數: max_input_vars = 3000 #每個腳本花在解析請求資料上的最長時間: max_input_time = 1000

修改完畢後,儲存退出,接下來修改php的www.conf檔。

修改 http://www.conf 文件

http://www.conf是php-fpm的進程服務的設定檔。

修改使用者群組和使用者名稱,設定 http://www.conf 文件的使用者群組權限。將 http://www.conf 的存取權限設定-R,使用者與使用者群組設定成nginx

chown nginx:nginx -R /etc/php-fpm.d/www.conf

編輯 http://www.conf 文件,修改使用者與使用者群組變數。

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

http://www.conf 文件內的變數 usergroup 都修改成 nginx

修改完畢後,查看 listen 變數:

注意:變數 listen,預設的是 listen = /run/php-fpm/www.sock 如果你想在Nginx中使用127.0.0.1:9000 存取PHP的話,那麼需要將 listen 變數改成listen = 127.0.0.1:9000 否則在Nginx中使用127.0.0.1:9000 無法存取PHP。

接下來,修改請求超時時間數值,修改單一請求的超時時間,去掉前面的分號,將數值改成600。

request_terminate_timeout = 600

修改完畢後,:wq 儲存檔案退出,www.conf 檔案修改完畢。

修改session 權限

例如修改/var/lib/php/session 的使用者群組以及權限。

cd /var/lib/php chown nginx:nginx ./session chmod -R 777 ./session
systemctl reload php-fpm

到這裡php已經安裝設定完成了,重新啟動php服務,或是reboot 重新啟動伺服器。

注意:如果Nginx不支援PHP訪問,檢查listen的變數是否與Nginx設定一致,如果使用127.0.0.1:9000 方式訪問,查看防火牆中9000埠是否開啟。

netstat -lntp

PHP操作台命令

#啟動PHP: systemctl start php-fpm #停止:systemctl stop php-fpm #重啟: systemctl restart php-fpm #重啟使修改後的設定生效: systemctl reload php-fable 1pm #重啟使修改後的設定生效: systemctl reload php-fable 1 status php-fpm

解除安裝PHP

如果想要卸載使用dnf安裝的php服務,可以執行卸載指令:

注意:如果你是手動編譯安裝的php,remove 卸載指令無效,先卸載php主程序,再移除系統自帶的php-common。

dnf remove php dnf remove -y php-common

禁用SELinux

CentOS 8 上永久禁用 SELinux

vi /etc/selinux/config

SELinux 屬性設定為 Disabled 後重新啟動伺服器。

谷歌雲端伺服器設定配置Nginx

以下以nginx1.20.1版本為例:

編輯nginx.conf

如果想讓web網站正常訪問,需要編輯修改Nginx 的設定檔nginx.conf,nginx.conf 是Nginx 的核心設定檔。使用 VI 指令編輯/etc/nginx/nginx.conf。

vi /etc/nginx/nginx.conf

以下是一個簡單的nginx.conf檔案的實例,僅供參考:

user nginx; #配置使用者或群組,預設為nobody nobody。 worker_processes auto; #允許產生的程序數,預設為1 pid /run/nginx.pid; #指定nginx程序執行檔案存放位址error_log /var/log/nginx/error.log error; #制定錯誤日誌路徑,等級。這個設定可以放入全域區塊,http區塊,server區塊,等級依序為:debug|info|notice|warn|error|crit|alert|emerg,等級越高,記錄越少,一般設定error #載入動態模組。 include /usr/share/nginx/modules/*.conf; #工作模式及連接數上限-events全域設定events { accept_mutex on; #設定網路連線序列化,防止驚群現象發生,預設值on multi_accept on #網路設定一個行程#事件驅動模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport worker_connections 4096; #單一work程序允許的最大連線數,預設為512 } #http伺服器設定檔區塊http { log_format myFormat '1cal4–114–114 月$request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自訂日誌格式access_log /var/log/nginx/accesslog/nginx/access.log Form combined為日誌格式的預設值。 rewrite_log on; #access_log off; #取消服務存取日誌sendfile on; #允許sendfile方式傳輸文件,預設為off,可以在http區塊,server區塊,location區塊。 sendfile_max_chunk 0; #每個程序每次呼叫傳輸數量不能大於設定的值,預設為0,即不設上限。 keepalive_timeout 1000; #連線逾時時間,預設為75s,可以在http,server,location區塊。 client_max_body_size 1024m; types_hash_max_size 4096; tcp_nodelay on; tcp_nopush on; default_type application/octet-stream; #預設檔類型,預設為text/plain fastcout_connect_00000 #fastcgi連線逾時時間,預設60秒fastcgi_send_timeout 3000; #nginx 程序向fastcgi 程序發送請求程序的逾時時間,預設值60秒fastcgi_read_timeout 3000; #fastcgi 程序向輸出值#gzip壓縮開關,on開啟Gzip壓縮,預設off 關閉gzip_min_length 1k; # 啟用gzip壓縮的最小文件,小於設定值的檔案將不會壓縮gzip_comp_level 9; # gzip 壓縮級別,1-9,佔用越壓縮。設定壓縮所需的緩衝區大小gzip_http_version 1.1; # 設定gzip壓縮針對的HTTP協定版本,沒做負載的可以不用gzip_types text/plain application/scriptscript application/x-javascript text/css appli/xml text application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml; # 進行壓縮的檔案類型。 javascript有多種形式。其中的值可以在mime.types 檔案中找到。數字1440m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers off; ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA3 84:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"; include /etc/nginx/mime.types; #檔案副檔名與檔案類型對應表。設定mime類型(郵件支援類型),類型由mime.types檔案定義。 include /etc/nginx/conf.d/*.conf; # 從/etc/nginx/conf.d 目錄載入模組化設定檔。 }

 

連接FastCGI

如果你想使用PHP腳本來搭建web網站,還需要設定Nginx支援PHP。

以下介紹PHP服務連接模組,進入 /etc/nginx/default.d 目錄,查看 php.conf 文件。此檔案是安裝PHP時候自動產生的檔案無需改動,用於將PHP 腳本傳遞給FastCGI 伺服器。

# pass the PHP scripts to FastCGI server # # See conf.d/php-fpm.conf for socket configuration # index index.php index.html index.htm; location ~ \.(php|phar)(/.*)?14T. ^(.+\.(?:php|phar))(/.*)$; $fastcgi_path_info; fastcgi_pass php-fpm; }

進入 /etc/nginx/conf.d 目錄,目錄中的 php-fpm.conf 文件無需更改, php-fpm.conf 是安裝PHP8.1時自動生成,是php.conf的一部分,用於將PHP 腳本傳遞給FastCGI 伺服器。

# PHP-FPM FastCGI server # network or unix domain socket configuration upstream php-fpm { server unix:/run/php-fpm/www.sock; }

 

/etc/nginx/conf.d 目錄中新建 default.conf 文件,或新建一個自訂的.conf檔。 server{...}內是網站設定內容。

這只是一個測試用的例子,生產環境下的server配置要複雜的多。

server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name XXX.com; root /home/www; index index.php index.html index.htm; ssl_certificate "/etc/letsencrypt/運動/***/fullilive. "/etc/letsencrypt/live***/privkey.pem"; # ssl憑證位址ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; #快取有效期限ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密演算法ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3 連結的加密協定; #使用伺服器端的首選演算法# Config for 0-RTT in TLSv1.3 ssl_early_data on; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security "max-4age=315360001"; # 從/etc/nginx/default.d 載入預設伺服器區塊的設定檔。 #偽靜態頁location / { try_files $uri $uri/ /index.php?$args ; } #反向代理location /update32/ { proxy_redirect off; proxy_read_httpout 1200s; 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proConnectioned_forder xyConnection" # Config for 0-RTT in TLSv1.3 proxy_set_header Early-Data $ssl_early_data; } }

新增web存放目錄的存取權限:

chown nginx:nginx -R /home/www

配置完成之後,在/home/www 目錄下,新index.php文件,貼上下面程式碼:

<?php
phpinfo();
?>

這是一個PHP的探針程式碼,將程式碼貼到index.php後,儲存文件,然後root重新啟動伺服器。
訪問Nginx官方PHP FastCGI 範例
Nginx中遇到的問題
出現「nginx: [emerg] unknown directive " " in /etc/nginx/conf.d/」錯誤,是Windows中使用SFTP上傳時的空格轉換問題,在Linux下使用VI編輯,不會產生此問題。

卸載Nginx

如果想要卸載所有使用dnf安裝的nginx,可以執行卸載指令:

dnf remove nginx

Nginx操作台指令

啟動:systemctl start nginx 停止:systemctl stop nginx 重新啟動(不停止nginx,使修改配置生效):systemctl reload nginx 重新啟動:systemctl restart nginx 設定開機啟動:systemctl enable nginx 停用開機啟動:systemctl disablecx stgindable:disablex

到這裡Nginx的安裝就告一段落了,下面開始安裝MYSQL資料庫服務。

谷歌雲端伺服器設定安裝MySQL

Centos8使用dnf安裝mysql,先檢查一下系統裡有沒有安裝過mysql。

rpm -qa |grep -i mysql

如果伺服器上之前沒有安裝MySQL,那麼現在就開始安裝。如果之前安裝過MySQL,請使用remove指令解除安裝!

先查找一下資料來源裡面都有什麼版本。

dnf list mysql*
谷歌雲端安裝PHP+Mysql+Nginx
安裝MySQL

安裝MySQL8.0

Centos官方的軟體來源中只找了8.0.26版本的,如果想安裝更高的版本,需要使用其它的資料來源。

dnf -y install mysql-server
谷歌雲端安裝PHP+Mysql+Nginx
安裝MySQL

安裝成功之後,啟動MySQL,然後設定開機啟動MySQL。

#啟動MySQL systemctl start mysqld #設定開機啟動systemctl enable mysqld #查看MySQL安裝版本mysqladmin --version

最後查看一下已經安裝的MySQL8.0 狀態。

systemctl status mysqld
谷歌雲端安裝PHP+Mysql+Nginx

OK,綠燈亮,一切正常!接下來設定MySQL 伺服器。

谷歌雲端伺服器設定MySQL

運行 mysql_secure_installation 腳本,該腳本會執行一些與安全性相關的操作並設定MySQL根密碼:

 sudo mysql_secure_installation
谷歌雲端安裝PHP+Mysql+Nginx

VALIDATE PASSWORD COMPONENT 可用於測試密碼並提高安全性。 它檢查密碼的強度並允許用戶只設定那些密碼
夠安全。 您想設定VALIDATE PASSWORD 元件嗎?

輸入:Y ,回車進入該配置。

谷歌雲端伺服器設定谷歌雲端安裝PHP+Mysql+Nginx

選擇密碼驗證原則等級, 輸入: 0 (low)

輸入新的密碼,密碼要求大於8位,包含大寫字母,小寫字母數字以及特殊符號,之後再確認輸入設定的密碼。

谷歌雲端安裝PHP+Mysql+Nginx

確認是否繼續使用提供的密碼,輸入:Y

谷歌雲端安裝PHP+Mysql+Nginx

預設情況下,MySQL 安裝有一個匿名用戶,允許任何人無需登入就可以登入MySQL為他們建立的用戶帳戶。 這僅用於測試,並使安裝更順暢。你應該在進入生產之前刪除它們環境。

是否移除匿名使用者? 輸入: Y

谷歌雲端安裝PHP+Mysql+Nginx
通常,只允許root 連線'本地主機'。 這確保了有人無法猜測來自網路的root密碼。

禁止使用root遠端登陸MySQL 輸入: N

谷歌雲端安裝PHP+Mysql+Nginx

預設情況下,MySQL 附帶一個名為「test」的資料庫,任何人都可以存取。 這也僅用於測試,並且應該在進入生產之前被移除環境。

移除MySQL自帶的test測試資料庫輸入:Y

谷歌雲端安裝PHP+Mysql+Nginx

重新載入權限表,將確保所有變更到目前為止所做的將立即生效。

重新載入權限表, 輸入:Y

MySQL8.0預設已經是字符集,所以字符集不再修改。 MySQL到這一步已經設定成功了!

配置mysql遠端登陸

注意:如果需要設定root帳號遠端登陸,重複上一步驟中,再允許root遠端登陸這一步,設定為Y。

接下來使用 mysql -u root -p 指令登入MySQL,將root使用者的host欄位設為'%',意為接受root所有IP位址的登入要求。

UPDATE USER SET host='%' WHERE user='root';

設定之後重啟mysql服務:

systemctl restart mysqld

MySQL操作台指令

啟動:systemctl start mysqld 停止:systemctl stop mysqld 重新啟動:systemctl restart mysqld 設定開機啟動:systemctl enable mysqld 停用開機啟動:systemctl disable mysqld 查看服務狀態:systemctl status mysqld

到這裡,就全部安裝完畢! php+mysql+nginx 的Linux環境已經搭建成功了。

1/5 - (1 vote)

1 留言

  1. Unknown Unknown Unknown Unknown

    強烈推薦: 谷歌雲端伺服器是目前已知的真正的功能強大的免費雲端伺服器可以滿足大多數網站的實際需求!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *