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

コメントを投稿

Vimの補完プラグインをインストール。その4

Vimの補完プラグインをインストール。その3 で、 ddc-tabnine が使えそうです、などと書いたのですが、早速やってみました。 まず、tabnineのバイナリを用意しないといけません。がどうにもTabNineのサイトがわかりにくいので、 tabnine-nvim にあるダ...