入門級VPS上的WordPress搭建與優化過程

內容目錄 隱藏

概要

本文講述了從一台空白入門級VPS完成Wordpress安裝與優化的過程,在一篇文章中包含了通常要在別的地方看數十篇文章的內容。為了提高文章的熵值,文中略去了一些簡單的一看界面就知道怎麼去做的操作過程。在精力允許的情況下,本文可能長期更新。本人水平有限,文中一些東西不是特別嚴謹,也可能會有一些錯誤的地方,若各位發現有不對的地方歡迎指教。

另外這裡所說的入門級VPS是指單核處理器1G內存這樣的VPS。

本站使用了WordPress的子域名多站功能,主站yyr.im是博客,子站k.yyr.im是個人知識庫。

基礎架構

這裡採用Debian+Openresty+PHP+MariaDB

Debian

曾在Debian與CentOS之間猶豫過,兩者都以穩定保守著稱,CentOS有大廠依托對硬件的兼容性更好,相對Debian來說更保守些,在性能與節約資源上略遜於Debian。但想著網站是搭建在VPS上的,CentOS對硬件的兼容性在虛擬機上沒有優勢,所以選擇了Debian。

OpenResty

Nginx是以性能著稱的流行網頁服務器,OpenResty是基於Nginx同時集成一些常用第三方模塊的網頁服務器。因為想要使用Redis數據庫緩存,這需要將若干第三方模塊編譯進Nginx,為了省去這些麻煩,我選擇了默認已經集成好這些模塊的OpenResty。

準備

一台運行Debian的VPS並將需要的域名綁定到這個VPS上。

搭建基本的Wordpress

安裝MariaDB及Wordpress所必要的php擴展

使用mysql_secure_installation命令為MariaDB進行安全設置

安裝OpenResty

這裡安裝的Openersty加入了ngx_pagespeed模塊和ngx_brotli模塊,PageSpeed是Google出品用來優化網站靜態文件的,可大幅提高PageSpeed Insights分數,Brotli同樣是Google出品的開源數據壓縮程序庫,比常見的Gzip有著更高的壓縮效率和更快的速度,已被主流瀏覽器支持。

準備編譯環境

編譯安裝Openresty

設置開機自動啟動Openresty

創建文件/lib/systemd/system/openresty.service

設置開機自動啟動Openresty

配置基本網頁服務器

創建站點目錄

我的網站文件放在/var/www/yyr.im/中的,網站根目錄設置在/var/www/yyr.im/public/wordpress中,先使用下面命令創建目錄

使用Nginx Config生成基本網站配置文件

OpenResty是基於Nginx的,配置文件也與Nginx兼容,所以可用Nginx Config,前面的鏈接點開就是我生成的配置文件,這樣生成的配置文件並不到把所有需求兼顧到位,還需要根據自身情況做進一步改動。我們先把生成的文件放置到自己的主機上對應的文件夾中,然後建立/usr/local/openresty/nginx/conf/sites-enabled/yyr.im.conf軟鏈接到/usr/local/openre sty/nginx/conf/sites-available/yyr.im.conf以啟用站點。

為站點部署Let’s Encrypt通配符ECC/RSA雙證書

Let’s Encrypt是目前應用最廣泛的免費數字證書頒發機構,由英特網安全研究小組(ISRG)、電子前哨基金會、Mozilla基金會、Akamai以及思科提供支持,支持泛域名證書,證書有效期為90天,可以免費續期,配合第三方工具可以實現自動續期。

ECC是指橢圓曲線密碼學(Elliptic Curve Cryptography),ECC證書是指使用ECDSAElliptic Curve Digital Signature Algorithm 椭圆曲线数字签名算法)公鑰的證書;RSA證書是指使用RSA加密算法公鑰的證書。ECC證書比RSA證書安全效能更好,因此目前應優先使用ECC證書。RSA證書歷史悠久,兼容性好。

為了提高網站安全性如果只使用TLS 1.2及以上版本協議,那麼RSA證書只對 Chrome 49 / XP SP3有用,因為支持TLS 1.2的瀏覽器除了Chrome 49 / XP SP3外都支持ECC證書,如果你不打算支持Chrome 49 / XP SP3,可以不申请RSA證書。

申請證書

這裡使用的工具是acme.sh,最流行的certbot在申請ECC證書的時候只能填寫一個域名,通配符證書需要填寫兩個域名yyr.im*.yyr.im,因为*.yyr.im不包含yyr.im,而acme.sh則支持在申請ECC證書時填寫多個域名。

首先安裝acme.sh

根據官方說明,安裝過程中進行了以下幾步

1. 把 acme.sh 安装到你的 home 目录下
2. 自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书.

申請證書需要驗證域名所有權,有http驗證(在網站根目錄建立指定名稱的文件夾),有DNS驗證。申請通配符證書必須使用DNS驗證域名所有權,DNS驗證是通過向域名的txt記錄添加Let’s Encrypt所返回的字符串,手動向域名DNS添加txt記錄的會無法做到對證書自動續期,因為Let’s Encrypt每次返回字符串都不一樣,因此需要用到DNS API,可以向域名自動添加txt記錄以自動驗證域名所有權,從而實現證書自動續期。

我的域名yyr.im是在name.com註冊的,根據官網的DNS API說明可以到 https://www.name.com/account/settings/api 申請API並取得API的令牌(token)。再通過下面兩條命令設置變量(將user換成你在域名註冊商的用戶名,將token換成你剛剛獲取的API令牌)。

之後便可使用下面兩條命令分別申請ECC證書和RSA證書。

部署證書

為Nginx指定證書位置

已經申請好的證書會放在~/.acme.sh/中,根據acme.sh官方這裡的證書僅供內部使用而且以後目錄結構可能會發生變化,不應讓Nginx/Apache直接使用這裡的證書。應該使用acme.sh --installcert將證書複製到其他位置,這樣acme.sh會記住你複製證書的位置,下次續期證書時會自動更新這裡的文件。

為方便管理,我將證書放在/var/www/yyr.im/certificate/,首先創建文件夾,並將該文件夾擁有者改為之前安裝acme.sh的用戶,以便acme.sh在複製證書和自動續期證書的時候不會遇到權限障礙。

然後編輯/usr/local/openresty/nginx/conf/sites-available/yyr.im.conf# SSL下面的內容改為這樣

 

複製證書

使用acme.sh --installcert命令分別將所申請的ECC證書和RSA證書複製到 /var/www/yyr.im/certificate/中。

 

為Wordpress創建數據庫

 

下載安裝Wordpress

做完上述操作後從瀏覽器訪問你的域名,根據提示完成安裝。

啟用子域名多站支持

也就是在安裝一個Wordpress的前提下,使用子域名同時運行多個網站。此處參考https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

OpenResty配置

首先打開網站配置文件/usr/local/openresty/nginx/conf/sites-available/yyr.im.conf下面代碼中被標記出來的關鍵行是針對WordPress子域名多站的配置。

修改完後執行sudo service openresty force-reload重新加載OpenResty配置。

WordPress配置

編輯Wordpress安裝目錄中的wp-config.php/* That’s all, stop editing! Happy blogging. */ 上面加入define('WP_ALLOW_MULTISITE', true);然後重新進入Wordpress後台-工具-網址網路安裝,根據提示操作即可。之後你就可以加入你想要的子域名站點了。

訪問無效子域名自動跳轉到主域名

默認情況下檔訪問一個不存在的子域名時比如test.yyr.im,會提示註冊該子域建立新的子站,如果你不是Blog服務商的話,這對你是毫無意義的。如果想要在訪問無效子域名時自動跳轉到主域名,可以編輯 wp-config.php/* That’s all, stop editing! Happy blogging. */ 上面加入 define( 'NOBLOGREDIRECT', '%siteurl%' );

之後訪問無效子域名便會跳轉到主域名,但是訪問不存在的頁面時也會跳轉到主域名,也就是說不能顯示404頁面,要解決這個問題,可以在wp-content目錄下創建mu-plugins文件夾,在 mu-plugins文件夾裡創建custom.php,內容如下。

設置網站圖標

關於網站圖標的相關知識參考:https://www.zhangxinxu.com/wordpress/2019/06/html-favicon-size-ico-generator/

如果可以,建議製作矢量的網站圖標,存儲為favicon.svg,再上傳到 https://realfavicongenerator.net/ 根據提示生成圖標文件和XHTML配置代碼,將圖標文件下載解壓縮到網站根目錄中,然後將剛才製作的 favicon.svg 也放到網站根目錄中。

接下來需要在佈景主題中的header.php中插入剛才生成的配置代碼,手動加入的話每次更換主題都要修改header.php,使用Insert Headers and Footers插件的話可以一勞永逸,安裝並啟用該插件後在設定中就能看到Insert Headers and Footers進入之後在“填入首頁指令碼”的位置粘帖上剛才生成的代碼,再在第二行插入<link rel="icon" type="image/svg+xml" sizes="any" href="/favicon.svg"/>,以啟用文件尺寸更小的SVG格式圖標,完整內容如下:

 

 

安全性優化

配置加密套件

加密套件的作用是保障服務器與客戶端之間數據傳輸的保密性和準確性。一套加密套件包括了密鑰交換算法、認證算法、批量加密算法、完整性檢驗算法。例如ECDHE-ECDSA-AES256-GCM-SHA384表示使用了ECDHE密鑰交換算法、ECDSA認證算法、AES256-GCM批量加密算法、SHA384完整性檢驗算法的加密套件。

目前主流的密鑰交換算法有ECDHE(Elliptic Curve Diffie–Hellman key Exchange 橢圓曲線迪菲-赫爾曼密鑰交換)和DHE(Diffie–Hellman key exchange 迪菲-赫爾曼密鑰交換)兩種,ECDHE比DHE安全效能更好,支持TLS 1.2的瀏覽器都支持ECDHD,因此只使用ECDHE作為密鑰交換算法。

加密套件是在 /usr/local/openresty/nginx/conf/nginx.conf中配置的,因為只使用 ECDHE沒使用DHE,所以不需要 dhparam.pem,應在/etc/nginx/nginx.conf删除ssl_dhparam /etc/nginx/dhparam.pem;,具體加密套件配置如下:

修改完執行sudo service openresty force-reload重新加載配置後,SSLLabs評分應該能達到A+

SSLLabs

唯一的Cipher Strength沒有滿分是因為TLS 1.3協議中綁定了TLS_AES_128_GCM_SHA256加密套件,使用低於AES256的加密套件會被扣分,若一定要追求全部滿分,可以取消TLS 1.3支持。

HTTP response headers安全配置

詳細介紹可以看這裡 https://segmentfault.com/a/1190000018463035

配置文件放在/usr/local/openresty/nginx/conf/nginxconfig.io/security.conf

針對WordPress我的配置如下

主要需要注意的是Content-Security-Policy的配置,如果你的網站需要引用外站的東西,就得同時更新Content-Security-Policy配置,在Chrome可以按F12檢查哪些內容被CSP阻止加載。

上面配置中包含了HSTS(HTTP Strict Transport Security HTTP嚴格傳輸安全)要使其生效的話,還需要在 https://hstspreload.org/ 提交你的域名。

按照上面的配置可以

securityheaders.com評分A

Security Headers

websecurity.is評分96

websecurity.is

Mozilla Observatory 評分80(B+)

Mozilla Observatory

上述三個網站安全性檢測網站的扣分原因都是Content-Security-Policy規則中的script-src和style-src使用了'unsafe-inline' 'unsafe-eval'這兩個參數,去掉這兩個參數就能得到滿分,但是WordPress的主題商店和插件商店就無法正常使用了。 

限制HTTP請求類型

作為WordPress網站,通常只使用使用以下HTTP請求

  • GET
    GET 方法請求展示指定資源。使用 GET 的請求只應用於取得資料。
  • HEAD
    HEAD 方法請求與 GET 方法相同的回應,但它沒有回應主體(response body)。
  • POST
    POST 方法用於提交指定資源的實體,通常會改變伺服器的狀態或副作用(side effect)。

開放其他請求會造成安全隱患,因此只開放這幾個請求就好,在網站配置文件中插入以下代碼

通過一些插件增加網站安全性

  • Akismet Anti-Spam – 減少垃圾評論
  • NoSpamNX – 減少垃圾評論
  • WPS Hide Login – 修改默認登錄網址
  • Limit Login Attempts Reloaded – 限制登錄密碼錯誤重試次數,防止網站登錄帳號被暴力破解
  • Search Limiter & Blocker – 限制搜索使用頻率,防止濫用搜索功能造成網站崩潰

性能優化

使用jsDelivr公共CDN免費加速js和css文件

jsDelivr是全球性的公共CDN服務,罕見的在中國大陸也部署有節點。對於WordPress可以通過安裝並啟用commonWP這個插件,無需額外任何設置,就可以將所有頁面上可加速的js、css文件更換為jsDelivr的地址。注意如果設置了Content-Security-Policy需保證允許加載來自cdn.jsdelivr.net的文件。

網站已經調用來自JsDelivr的文件

優化function.php,取消加載不必要的功能

function.php是位於主題目錄下的一個功能函數文件,因此每次更換主題後,都要重新修改function.php,為了消除這種不便我們可以使用Code Snippets這個插件來修改function.php。

function.php的優化代碼參考了
https://www.mf8.biz/use-function-make-wp-fast/
https://yungke.me/speed-wordpress-optimization/
我主要加入了如下代碼:

强制jquery库文件底部载入

将 JS 放到最后加载,有利于提高网站加载效率

删除 wp_head 中无关紧要的代码

禁用Emoji功能

屏蔽文章 Embed 功能

移除頭部 wp-json 標籤和 HTTP header 中的 link

移除 wlwmanifest, RSD, Shortlink 的鏈接

是由 Windows Live Writer / RSD 所使用的。利用 XML-RPC 第三方應用程序請求使用,在大多數情況下,這都是不必要的代碼。

另外,WordPress 內附頁面的縮網址。如果你已經設置了固定鏈接,例如:domain.com/post,那麼沒有理由使用縮網址,這只是不必要的代碼。

禁用 Self Pingbacks 鏈接

pingback 是一個自動鏈接,當另一個部落格鏈接到你的文章時就會創建一個 Pingback,基本上只是個垃圾郵件,浪費主機資源,建議將他禁用。

禁用REST API

移除 jQuery Migrate

大多數的佈景主題的前端代碼和外掛都不需要 jquery-migrate.min.js 文件,只有一些較舊的網站會用到 jQuery 函數,這只會為您的網站增加不必要的加載。

關閉XML-RPC功能

這個功能主要用於WordPress客戶端連接,同時一些攻擊者也會利用這個功能嘗試破解管理密碼,如果你不使用WordPress客戶端可以關閉它。

 

緩存優化

眾所周知WordPress是個PHP動態建站程序,默認情況下所有操作包括頁面訪問都需要後台進行計算,再將所需結果呈現出來,緩存的作用就是將計算結果存儲起來,下次需要相同的內容時直接從緩存中調取,而不必重新計算耗費系統資源,緩存優化是WordPress最重要的優化手段。

在這裡,緩存優化包括了頁面緩存、對象緩存

頁面緩存優化

頁面緩存的實現方式可分為插件和後端工具,

插件是指利用諸如WP Super Cache、W3 Total Cache、WP-Rocket這樣的插件來實現頁面緩存功能。

緩存調用流程為:瀏覽器-網頁服務器-WordPress-插件-緩存

後端工具實現方式則是直接配合網頁服務器來實現頁面緩存。

緩存調用流程為:瀏覽器-網頁服務器-緩存

很顯然通過後端工具實現頁面緩存是更有效率的方式,目前WordPress的後端頁面緩存優化方案主要有:

  • Memcached
  • Redis
  • FastCGI Cache
  • Pika

其中Memcached和Redis是將緩存內容存儲在內存中,但考慮到入門級主機內存不大,只能放棄這樣的方案,如果為了性能一定要使用內存級頁面緩存,對於入門主機建議使用內存利用率更高的Mencached。FastCGI Cache和Pika都是將緩存數據存儲在硬盤中,FastCGI  Cache是Nginx自帶的功能,Pika可以看作是Redis的硬盤版,兼容Redis相關工具,功能更為強大。Pika存取緩存需要走TCP/IP協議,這樣也可以存取其他的主機的緩存實現強大的集群功能,但單機性能上不如直接通過Unix socket存取緩存的FastCGI Cache快,實際測試下來也是Pika比FastCGI Cache載入相同的頁面略慢幾十毫秒。對於入門主機FastCGI Cache實現頁面緩存更為合適,但可能由於我使用的是OpenResty的原因,雖然可以成功的存取緩存,但是不能利用WordPress的Nginx Helper插件刷新和清除過時的緩存。考慮到實際Pika和FastCGI Cache性能差距並不算太大通常就,所以就暫時用Pika來實現頁面緩存,下次換主機的時候再試試Nginx+FastCGI Cache來實現WordPress頁面緩存。

安裝pika 

參考:https://github.com/Qihoo360/pika/wiki/%E5%AE%89%E8%A3%85%E4%BD%BF%E7%94%A8

https://blog.csdn.net/weixin_34396103/article/details/92592243/

http://liyangliang.me/posts/2015/06/using-supervisor/

先去Pika的releases頁面查看最新版本

在Pika配置文件中配置相關路徑

設置Pika開機自動啟動

首先安裝supervisor

Superviosr是一个进程管理工具,可以保证你的程序在服务器开机时自动启动以及程序意外终止时重新启动。当你的项目有多个并且需要同时启动或关闭,使用Supervisor一行命令都可以同时重启,而不是一个一个命令地重启。

參考:
https://zhuanlan.zhihu.com/p/92154179
http://frankchen.xyz/2017/07/06/Use-supervisor-support-Python3-program/
http://liyangliang.me/posts/2015/06/using-supervisor/

建立Pika開機啟動配置文件/etc/supervisor/conf.d/pika.conf內容如下

根據最新配置文件啟動進程

測試Pika是否正常工作

安裝Redis-tools

連接到Pika

寫入並讀取數據

如果可以正常寫入讀取數據則說明Pika工作正常。

驗證完成後清空數據庫

 

配置OpenResty在Pika中存取頁面緩存

參考:https://www.mf8.biz/nginx-redis-cache-make-wordpress-fast/

创建連接Pika服務器的配置文件/usr/local/openresty/nginx/conf/nginxconfig.io/heaer_redis.conf

創建頁面緩存存取規則配置文件/usr/local/openresty/nginx/conf/nginxconfig.io/redis.conf

創建頁面緩存忽略規則配置文件/usr/local/openresty/nginx/conf/nginxconfig.io/skipcache.conf

將上面三個新創建的文件嵌入到網站配置文件/usr/local/openresty/nginx/conf/sites-available/yyr.im.conf

完後在重新加載配置文件使其生效

使用Chrome打開網站,退出登錄,按F12打開如下視圖,按幾次F5刷新頁面,若看到x-cache: BYPASS則說明已經在使用緩存了。

Redis Cache BYPASS

使用Nginx Helper清除過時緩存

完成前面的步驟,網站已經可以從緩存中調取內容呈現給前台用戶,但頁面內容若有更新,應當清除過時緩存,再重新緩存新的內容,這就需要使用WordPress的Nginx Helper插件了。安裝該插件後進入設置頁面,如下圖所示,填入剛剛搭建的Pika服務的主機ip和端口。其他選項默認就好,或根據自己需求調整。設置完成後該插件在滿足條件的情況下將自動清除過時的緩存。

Nginx Helper

對象緩存優化

我的理解對象緩存是數據庫查詢結果緩存,前面已經在前端做了頁面緩存,那麼再做對象緩存優化理論上只對網站後台操作和搜索功能有效果,所以做了頁面緩存優化再做對象緩存優化通常不是很有必要。但作為一個追求極致的人,我還是把這步優化做了。前面已經安裝配置好Pika,PHP程序存取Pika中的對象數據需安裝php的redis擴展。

安裝php的redis擴展

建議使用pecl工具安裝php的redis擴展,使用apt安裝似乎需要一些額外的配置才能正常使用。首先安裝pecl工具。參考http://yzone.net/blog/153

如果你前面沒有裝過build-essential那麼就需要獨立安裝g++以確保pecl可以正確安裝php擴展。

接下來使用pecl安裝php的redis擴展。

WordPress配置

安裝Redis Object Cache插件。並將如下代碼加入到wp-config.php文件中/* That's all, stop editing! Happy publishing. */的上方,並根據實際情況修改。

進入Redis Object Cache設定界面,檢查服務器信息是否正確,若正確,則點擊“啟用物件快取”當出現“已連接”則說明設置成功。

Redis Object Cache

自動刷新緩存

在functions.php加入下面代碼實現自動刷新緩存。

參考:https://www.phpsong.com/2917.html

配置PageSpeed

前面已經把PageSpeed Nginx Module編譯進OpenResty。下面直接開始它的配置。

參考:https://sufob.com/lnmp-nginx-add-google-pagespeed-module-combine-compress-js-css-convert-webp-async-loading/

配置PageSpeed優化選項

建立/usr/local/openresty/nginx/conf/pagespeed/main.conf

建立/usr/local/openresty/nginx/conf/pagespeed/pagespeed.conf

建立/usr/local/openresty/nginx/conf/pagespeed/filters.conf

建立/usr/local/openresty/nginx/conf/pagespeed/dashboard.conf

配置PageSpeed緩存文件夾

為OpenResty啟用PageSpeed

將下列代碼加入到/usr/local/openresty/nginx/conf/nginx 的 http { }

完後重新加載OpenResty配置文件使配置生效。

設置PageSpeed管理界面密碼

之後就可以在https://yyr.im/pagespeed_global_admin/ 輸入上面設置的用戶名密碼進入PageSpeed管理界面了

開啟BBR、TCP Fast Open

BBR(Bottleneck Bandwidth and RTT),是一種由Google推出的拥塞控制算法,可以起到降低網絡延遲,增加寬帶利用率的效果。

TFO(TCP Fast Open TCP快速打開)是TCP 連接的一種簡化握手手續的拓展,用於提高兩端點間連接的開啟速度。

BBR和TFO使用下面的命令開啟

查看BBR是否開啟

出現tcp_bbr字樣說明開啟成功。

查看TCP Fast Open是否開啟

出現net.ipv4.tcp_fastopen = 3說明開啟成功

使TCP Fast Open對網站生效

要使TCP Fast Open對網站生效還需編輯網站配置文件 /usr/local/openresty/nginx/conf/sites-available/yyr.im.conflisten那行後面加入fastopen=3

優化內核引導參數

編輯/boot/grub/grub.cfb找到/boot/vmlinuz所在行,在後面加入 nohz=off transparent_hugepage=never numa=off

  • nohz表示CPU在空閒時不產生不必要的時鐘中斷,用於節能,VPS用戶沒有必要考慮節能問題,為了穩定高效的需要可以關閉。
  • transparent_hugepage表示透明大葉功能,對內存4G以上的主機有意義,詳情在 http://www.jinbuguo.com/kernel/longterm-linux-kernel-options.html 搜索 Transparent Hugepage Support。
  • numa(Non-uniform memory access)非統一內存訪問架構,一種為多處理器電腦設計的內存架構,單核主機可以關閉它。

關閉TSO、GSO、GRO

TSO(TCP Segmentation Offload),是一种利用网卡对TCP数据包分片,减轻CPU负荷的一种技术,有时也被叫做 LSO (Large segment offload) ,TSO是针对TCP的,UFO是针对UDP的。如果硬件支持 TSO功能,同时也需要硬件支持的TCP校验计算和分散/聚集 (Scatter Gather) 功能。

GSO(Generic Segmentation Offload),它比TSO更通用,基本思想就是尽可能的推迟数据分片直至发送到网卡驱动之前,此时会检查网卡是否支持分片功能(如TSO、UFO),如果支持直接发送到网卡,如果不支持就进行分片后再发往网卡。这样大数据包只需走一次协议栈,而不是被分割成几个数据包分别走,这就提高了效率。

LRO(Large Receive Offload),通过将接收到的多个TCP数据聚合成一个大的数据包,然后传递给网络协议栈处理,以减少上层协议栈处理 开销,提高系统接收TCP数据包的能力。

GRO(Generic Receive Offload),基本思想跟LRO类似,克服了LRO的一些缺点,更通用。后续的驱动都使用GRO的接口,而不是LRO。

這些功能都是針對實體網卡,但是對於VPS這些功能反而會損耗性能,所以關閉他們吧。

查看性能優化效果

PageSpeed Insigsth

PageSpeed Insights

GTmetrix

GTmetrix

Pingdom

PingDom

其他優化

下面的優化在網站訪問量巨大的情況下可能才會看到效果,對於一般個人網站來講提升非常有限,所以這部分優化對個人網站來講不是特別必要,有興趣的可以試試調整。

設置ulimit参数

首先使用 ulimit -n 1048576 命令測試系統是否支持最大數值 1048576,若支持則可以編輯 /etc/security/limits.conf 加入

nofile為最大文件打開數,memlock為最大內存使用數,nproc為最大進程數-1表示不做限制。

調整ip_vs參數

ip_vs參數用於決定服務器的最大連接數

优化sysctl.conf

待補充……

總結

這些優化只能說達到極致優化的90%,比如因為技術原因沒有啟用性能更好的FastCGI Cache,以及Nginx/OpenResty、PageSpeed、sysctl.conf還有更深的優化空間。FastCGI Cache大概會在下次換主機的時候嘗試使用。雖然WordPress有時被稱為傻瓜建站程序,但對其進行優化並不是一件簡單的事情,這也是一些專業WordPress虛擬主機的存在價值所在,但對個人網站來講使用專業WordPress虛擬主機顯得有些奢侈了。

發佈留言

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