在開始本文前,我假定你已經安裝好了nginx、php-fpm和mariaDB(或mysql)。它們的安裝過程可參考我以前的文章。
1. 安裝EPEL(Extra Packages for Enterprise Linux ):
# yum install epel-release
2. 安裝wordpress:
# yum install wordpress
安裝好的wordpress在/usr/share/wordpress.
(以下步驟參考wordpress官網www.wordpress.org)
3. 配置文件在/etc/wordpress/wp-config.php,在/usr/share/wordpress下也有該文件的link
4. 在修改上述配置之前,我們需要先配置好數據庫。
4.1 開啟mariadb server:
# systemctl enable mariadb
# systemctl start mariadb
4.2 設置mariadb的root密碼:
# mysqladmin -u root password your_mariadb_password
4.3 建立數據庫和操作員:
# create database your_database_name;
# grant all privileges on your_database_name.* to "operator_name"@"localhost" identified by "operator_passwd";
# flush privileges;
# exit
5. 我們使用nginx,因此將wp-config.php的讀權限賦予nginx:
# chgrp nginx wp-config.php
6. 修改wp-config.php:
修改DB_NAME、DB_USER、DB_PASSWORD;
使用wordpress的在線salt generator產生Security Keys,替換原文件里的相應內容;
(salt generator: https://api.wordpress.org/secret-key/1.1/salt/)
9. 將wordpress安裝目錄復制到/usr/share/nginx/blog,原/usr/share/wordpress作為備份。復制完成后,刪除新目錄里wp-config.php的link,以文件形式從原始位置(/etc/wordpress/wp-config.php)重新復制一份。注意該文件權限應該不允許一般用戶進行讀操作(660或640);
10. 將blog目錄的own和group修改為網站文件所有者(一般為上傳網站的FTP賬號)(-R);
說明1:此處假定你的php-fpm按照我前面的blog進行了配置,使用了FTP賬號作為php-fpm的user/group。
11. 執行https://your_web_site/blog/wp-admin/install.php
說明:因為前面我們已經手工修改了wp-config.php,所以此處不需要setup-config.php。
12. 配置blog用戶名和密碼,注意和上面的db用戶不是一回事
13. 如果上一步submit后出現403,可能是沒有將index.php加入nginx的默認首頁,簡單添加一下到location /就好了
14. 然后就可以看到Dashboard了。
15. 安全說明
1) 對於php文件,nginx並不會讀取文件內容,而是將文件位置和名稱直接扔給php-fpm,所以很多博客上說的“nginx需要對php有讀權限”的說法是錯誤的。這是一個影響網站安全的重要的點。只有在nginx不需要php讀權限的基礎上,我們才可以將wp-config.php的權限設置為600,僅將該文件讀權限開放給php-fpm,而nginx只需要文件所在目錄的讀權限就可以了。
16. 更改語言
在wp-content目錄下新建一個目錄languages,將你從wordpress.org下載得到的中文語言包解壓后的文件放到該目錄。回到browser,在dashboard里選擇語言並save。
17. 低配置服務器上的優化
17.1 /etc/my.cnf
在[mysqld]下增加一行:
performance_schema=off
17.2 /etc/my.cnf.d/server.cnf
在[mysqld]下增加:
innodb_buffer_pool_size = 32M
key_buffer_size = 4M
# 說明:很多文章都會讓你把innodb_buffer_pool_size 設置為服務器內存的80%,但這是以訛傳訛的做法。按mariadb官方wiki/FAQ,僅當服務器內存>4G時,將innodb_buffer_pool_size設置為空閑內存(跑了其他所有服務,單單沒有開maridb的情況下的free memory,而不是服務器配置內存!)的80%。對於低配置服務器,該值應該比默認值(128M)更小。key_buffer_size的值沒有查到建議值,這里我按同等比例減小。
17.3 /etc/php-fpm.d/www.conf
pm.max_children = 10
pm.start_servers = 2
pm.max_spare_servers = 5