Windows10でNginx+MariaDB+Wordpressをインストールする。その3

Windows10でNginx+MariaDB+Wordpressをインストールする。その2の続きです。

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 件のコメント:

コメントを投稿

Windowsでシンボリックリンクを試してみる。

きっかけは、1つのファイルを別の名前で起動したら違う動きになるようなスクリプトを書く、でした。  busybox なんかでは、同じ実行形式ファイルの名前を、lsにすればlsと同じ、cpとすればcpと同じ動作をするようにしてますが、Pythonスクリプトでそれと同じように argv...