nginx和WordPress的集成
我想做的事情
我想要通过将Nginx与WordPress进行集成,暂时将HTML显示出来。
希望尽可能使用默认设置。
由於以下步驟是事後整理的,所以還沒有進行再確認。
安装
安装 Nginx
$ sudo yum install nginx
$ sudo chkconfig --level 345 nginx on
将DocumentRoot设置为/var/www/html。
为了避免混乱,删除默认选项。
$ sudo rm -rf /usr/share/nginx
以下是 conf 的设置。
将 documentroot 设置为上级路径。
另外,还需要添加 php-fpm 的设置。
diff -u /etc/nginx/conf.d/default.conf.org /etc/nginx/conf.d/default.conf
--- /etc/nginx/conf.d/default.conf.org 2015-06-17 06:34:15.000000000 +0900
+++ /etc/nginx/conf.d/default.conf 2016-05-15 18:26:16.437516988 +0900
@@ -13,20 +13,20 @@
include /etc/nginx/default.d/*.conf;
location / {
- root /usr/share/nginx/html;
- index index.html index.htm;
+ root /var/www/html;
+ index index.php index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
- root /usr/share/nginx/html;
+ root /var/www/html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
- root /usr/share/nginx/html;
+ root /var/www/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
@@ -37,13 +37,13 @@
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
- #location ~ \.php$ {
- # root html;
- # fastcgi_pass 127.0.0.1:9000;
- # fastcgi_index index.php;
- # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
- # include fastcgi_params;
- #}
+ location ~ \.php$ {
+ root /var/www/html;
+ fastcgi_pass 127.0.0.1:9000;
+ fastcgi_index index.php;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ include fastcgi_params;
+ }
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
[root@ik1-303-11969 nginx]#
请确保上述fastcgi_param的部分正确定义为$document_root。
安装php-fpm
$ sudo yum install php-fpm
$ sudo chkconfig --level 345 php-fpm on
conf的配置默认只需要将Apache部分更改为Nginx即可。
$ sudo vi /etc/php-fpm.d/www.conf
$ cat /etc/php-fpm.d/www.conf
[www]
listen = 127.0.0.1:9000
listen.allowed_clients = 127.0.0.1
user = nginx
group = nginx
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
slowlog = /var/log/php-fpm/www-slow.log
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
安装MySQL。
$ sudo yum install mysql-server
$ sudo /sbin/chkconfig --level 345 mysqld on
$ sudo /etc/init.d/mysqld start
$ sudo mysqladmin -u root password 'パスワード'
$ sudo mysql_secure_installation
# root ユーザーのパスワードを変更するか?
Change the root password? [Y/n] n
# 匿名ユーザーを削除するか?
Remove anonymous users? [Y/n] Y
# リモートから root ユーザーのログインを禁止するか?
Disallow root login remotely? [Y/n] Y
# test データベースを削除するか?
Remove test database and access to it? [Y/n] Y
# 権限テーブルをリロードするか?
Reload privilege tables now? [Y/n] Y
继续创建数据库。
$ mysql -u root -p
> create database xxxxxxx;
安装WordPress
$ tar zxvf wordpress-4.5.2-ja.tar.gz
$ sudo cp -r wordpress/* /var/www/html/
$ sudo chown nginx.nginx -R /var/www/html/
$ sudo vi /var/www/html/wp-config.php
# DB_NAME, DB_USER, DB_PASSWORDを上で設定した値にする。
# AUTH_KEY~NONCE_SALTのdefineの設定は
# https://api.wordpress.org/secret-key/1.1/salt/
# にアクセスして取得したものを貼る
启动。
$ sudo /etc/init.d/php-fpm start
$ sudo /etc/init.d/nginx start
以上将应该能够访问WordPress界面了。
顺便提一下,如果你已经设置了iptables,请注意。
确保可以从本地访问9000端口。
$ sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT -s 127.0.0.1
[附言]
为什么主题和插件菜单中没有显示“新建”选项呢?
刪除了db並重置wordpress後問題解決了,直接的原因應該是設定檔案的字符編碼。
$ nkf -g /tmp/wp-config.php.old ./wp-config.php
/tmp/wp-config.php.old:ASCII (LF)
./wp-config.php:UTF-8 (LF)
wp-config.php.old是旧版本。