Nginx を WordPress 用に設定する
PHP の動作が確認できたら、早速 WordPress 用の設定に移ります。WordPressを参照します。このページの Abridged basic setup では、upstream コンテキストを利用しています。
# Upstream to abstract backend connection(s) for php
upstream php {
server unix:/tmp/php-cgi.socket;
server 127.0.0.1:9000;
}upstream はhttpコンテキストの中で使用され、fastcgi_pass や uwsgi_pass から参照できるバックエンドを提供します。上記の場合には、fastcgi_pass php;という形で参照することができます。これを利用して WordPress 用の設定を nginx.conf に追加します。
location /blog {
root c:\srv\www\blog;
try_files $uri $uri/ index.php?$args;
}設定を変更したら、nginx -s reload して新しい設定を読み込ませます。ここで何らかのエラーがあれば、それに応じて設定を修正します。上記のディレクティブは、
http://localhost/blog 以下のアクセスは実際のファイルシステム上は c:\srv\www\blog 以下にあるのでそこをルートとして参照する、という内容です。try_files は、URL が '/' で終わっていないけれどディレクトリ名で終わっていた場合に、末尾に '/' をつけてファイル名を補完して試す、というディレクティブです。最終的に nginx.conf は以下のようになりました。コメントなどは省いています。
# vim:fenc=utf-8 ff=unix ts=4 sw=4 sts=4 si et fdm fdl=99 tw=72:
worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
# upstream for php-cgi
upstream php {
server 127.0.0.1:9123;
}
server {
listen 80;
server_name localhost;
root c:\srv\www;
location / {
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?$args;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location /blog {
root c:\srv\www\blog;
fastcgi_split_path_info ^(/blog)(/.*)$;
try_files $uri $uri/ /blog/index.php?$args;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9123
#
location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found on;
}
}
}
サーバのドキュメントルートを c:\srv\www に設定していますので、 c:\Apps\Nginx\html にはアクセスしなくなります。逆に、こうしないと c:\Apps\Nginx\html をドキュメントルートとしてファイルを探していたようで、ちゃんと動きませんでした。
nginx.conf を変更したら、
nginx -s reload でリロードします。ただ、これは c:\Apps\Nginx ディレクトリでやらないとエラーになるようです。reload したら http://localhost/blog/wp-admin/install.php にアクセスします。ちゃんとアクセスできました。ところで、WordPress用のデータベースはまだ作成していません。早速作ります。
MariaDBにWordPress用データベースを用意する
MariaDB をインストールした際に、GUI フロントエンドの HeidiSQL もインストールされていると思いますので、これを起動して、ローカルホストの MariaDB に接続します。左側のデータベースとテーブルが表示されているペインで右クリックをし「新規作成」→「データベース」を実行します。
ここでは "wp_database" という名前のデータベースを作成します。
次にユーザを作成し、アクセス権を設定します。HeidiSQL のユーザのアイコンをクリックして「ユーザーマネージャー」を開きます。
アカウントの追加ボタンを押し、ユーザ名、ホスト名、パスワードを入力して、さらに「オブジェクトの追加」を押します。オブジェクトとしていま作成した "wp_database" を追加し、すべての権限を付与します。
これでデータベースの準備はできましたので、WEBブラウザに戻って先に進みます。
今作成したデータベース名などを入力して、「送信」ボタンを押します。するとエラーが出ました。
Nginx のエラーログを参照すると、次のようなエラーが記録されていました。
2019/04/13 10:54:26 [error] 15768#10284: *55 FastCGI sent in stderr: "PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\srv\www\blog\wp-includes\wp-db.php:1645
Stack trace:
#0 C:\srv\www\blog\wp-admin\setup-config.php(305): wpdb->db_connect()
#1 {main}
thrown in C:\srv\www\blog\wp-includes\wp-db.php on line 1645" while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "POST /blog/wp-admin/setup-config.php?step=2 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9123", host: "localhost", referrer: "http://localhost/blog/wp-admin/setup-config.php?step=1&language=ja"
スタックトレースを見ると、データベースへの接続で失敗しているようです。このようなときにまず疑うのは php.ini です。確認してみたところ、 "Extension" 節で mysqli と pdo_mysql がコメントアウトされ、mysql が有効になっていました。途中で別の PC で作業を続けたのがいけなかったようです。これを修正して、mysqli と pdo_mysql(実際には mysqli を使用している様子)を有効にして、php-cgi.exe を再起動すると、ちゃんと次に進みました。
次のページでは、サイト名、ユーザ名、メールアドレスなどを入力します。
次に進むと、背後で MariaDB のデータベースに適切にテーブルを作成し、WordPress のインストールが終わります。
ちゃんとアクセスできて、テーマも Twenty Seventeen に変更できました。











0 件のコメント:
コメントを投稿