【Blogサーバ構築②】nginxでサーバ化してWordPressをインストール

色々なページのブログの立ち上げ方を見ていると、説明不足だったり情報が古くなっているものもあったので、全10回でブログの立ち上げ方をまとめました。

  1. 【Blogサーバ構築①】Ubuntu MATE 20.04 のSSH接続とファイアウォール設定
  2. 【Blogサーバ構築②】nginxでサーバ化してWordPressをインストール ( ← 本記事 )
  3. 【Blogサーバ構築③】WordPressへのログインと初期設定
  4. 【Blogサーバ構築④】”IPアドレス(or ドメイン名)/wordpress” 表示を ”IPアドレス(or ドメイン名)” 表示にしてすっきりさせる
  5. 【Blogサーバ構築⑤】WordPressアドレスを間違えた時の対応
  6. 【Blogサーバ構築⑥】無料/有料ドメインを取得してみる
  7. 【Blogサーバ構築⑦】DDNSサービスでドメイン名とIPアドレスを紐づける
  8. 【Blogサーバ構築⑧】ルーターのポート開放をして、外部からのアクセスを許可する
  9. 【Blogサーバ構築⑨】WordPress アドレス (URL)をIPアドレスからドメイン名に変更する
  10. 【Blogサーバ構築⑩】Certbotでhttps対応(sslの設定) 

今回のまとめ

  • nginxを入れてサーバ化し、Wordpressをインストールするためには、nginx、MySQL(or MariaDB)、Wordpressのインストールが必要です。(※MySQL, MariaDBはデータベース管理クライアント)
  • インストール途中でwifi環境が変わったりするとwordpressが参照するURLがおかしくなってしまい403Fobbidenエラーに悩まされます。同じネットワーク環境で作業することをお勧めします。
  • 導入はそれほど難しくないです。

手順

  1. nginxのインストール
  2. nginxへphpを追加
  3. MySQLのインストール
  4. WordPressのインストール

nginxのインストール

nginxはWebサーバー用のソフトウェアです。インストールするとPCをWebサーバー化してくれるため、インストールしたPCのIPアドレスを入力することで、他のPCからサーバPCへアクセスできるようになります。同じWebサーバソフトとしてApacheも有名ですが、Apacheの方は動画を多く含むページ向けとされています。

早速インストールしていきましょう。Ubuntuではapt-getでインストールすることができます。updateして情報を最新にしてnginxをインストールします。

$ sudo apt-get update
$ sudo apt-get install nginx

nginxではファイルのアップロードサイズ制限の初期設定が1Mbyteになっているため、インストール後にこの値を変更しておきます。.confファイルを編集して、32Mbyteにします。ただこのファイルの変更はsudo コマンドではうまくいかずroot権限に入る必要があります。まずは下記コマンドでroot権限に変更します。

$sudo su

rootに変更できると、ターミナルの$が#に変わっていると思います。

次に.confファイルを編集します。

# vim /etc/nginx/nginx.conf

vimエディターが開くと思いますので「i」を押し、入力します(iは挿入モードです)。太文字のところclient_max_body_sizeを記載します。

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
client_max_body_size 32M;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

「esc」キーで書きこみモードを終了して、「!wq」と入力することで、上書き保存します。間違えた場合は「!q」で上書きせず抜けられます。

設定を反映するためにnginxを再起動します。

# service nginx restart

最後にnginx が正常に起動しているかチェックしましょう。

# service nginx status

上記のコマンドでstatus確認をして、下記のようにactiveの文字が出ればOKです。

nginx 正常な状態

nginxを入れたPCでifconfigと入力し、IPを調べます。

同じネットワークに接続している他のパソコンでブラウザを立ち上げ、nginxを入れたPCのIPアドレスを打ってみましょう。192.168.xxx.xxxといったIPアドレスです。ブラウザに下の絵のような画面がでていれば他のPCから接続できていることになります。なお、192.168.xxx.xxxといたIPは内部IPと言われ、同じネットワーク内でのみ有効で、外部からアクセスできません。

nginxへようこそ画面

nginxにphpの追加

wordpressを使うにはnginxにphpサポートを追加する必要があるとのことでphpを追加します。2021/11時点でのphpのバージョンは7.4でした。 ※既にroot権限になっている前提で書いています。(rootになる為にはsudo su)

# apt-get update
# apt-get install php7.4-fpm

phpインストール後にphp.iniを編集します。php.iniファイルを開いて、先ほどと同様に編集します。このファイルは大きさが大きくて、編集が厄介です。

# vim /etc/php/7.4/fpm/php.ini

下記の記載を探して、編集しました。

file_uploads = On
max_execution_time = 300
memory_limit = 256M
post_max_size = 32M
max_input_time = 60
max_input_vars = 4440
upload_max_filesize = 32M

phpのインストール後にnginxのデフォルトのwebサイトの設定ファイルを編集します。

# vim /etc/nginx/sites-available/default

server内の記載、太字のところを修正します。

server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}

上書き保存後に下記のコマンドでnginxの設定ファイルに間違いがないか確認できます。

# nginx -t

間違いがなければ下記のように出力されます。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

OKであればnginxもphpも再起動しましょう。

# service php7.4-fpm restart
# service nginx restart

念の為、ここでphpがきちんと動いているか確認します。私の場合はphp7.4-fpm.sockがうまく生成されておらず、一度phpを再インストールしました。

phpの状態を確認するためにphpの状態を表示するページを作ります。下記入力でinfo.phpというファイルを新規作成し、

# vim /var/www/html/info.php

一行目に下記記載をします。

<?php phpinfo();

変更を保存してファイルを閉じます。(esc -> !wqです)

同じネットワークの他のPCからブラウザを立ち上げ、サーバPCのIPアドレスの後に/info.phpをいれてみます。

info.php

このような画面が表示されるはずです。

MySQLのインストールと設定

データベース管理ソフトであるMySQLをインストールします。下記を入力します。 ※既にroot権限になっている前提で書いています。(rootになる為にはsudo su)

# apt-get update
# apt-get install mysql-server mysql-client

mySQLのインストールが完了したら、mySQLのroot権限でログインし、アカウントとデータベースを作ります。まずはrootログイン

# mysql -u root -p

以下、作成例です。ここで設定したDB名、アカウント名、パスワードはWordpressインストール後に設定ファイルに記述する必要があるため、覚えておいてください。

  • wp_dbというデータベースを作成 (データベース名にハイフンは使用不可でした。2022/4/28訂正)
  • wp-userというアカウントを作成し、WPpassというパスワードを設定
  • wp-userにwp_dbへのすべての権限を設定
  • 権限の再設定
  • 終了
CREATE DATABASE wp_db CHARACTER SET UTF8 COLLATE UTF8_BIN;
CREATE USER 'wp-user'@'%' IDENTIFIED BY 'WPpass';
GRANT ALL PRIVILEGES ON wp_db.* TO 'wp-user'@'%';
FLUSH PRIVILEGES;
quit;

ここでmySQLのインストール・設定は終了です。

WordPressインストールの為のダウンロードと設定

wordpressの最新ファイルをダウンロードして解凍します。まずtmpフォルダに移動した後、そこにwordpressの最新ファイル(latest.tar.gz)をダウンロード、解凍します。

# cd /tmp
# wget https://wordpress.org/latest.tar.gz
# tar -zxvf latest.tar.gz

解凍するとtmpフォルダ内にwordpressというフォルダができていますので、下記スクリプトでwordpressフォルダを移動します。移動先は/var/www/html/です。wordpressの初期ユーザがwww-dataとなっていますので、www-dataというアカウントにwordpressフォルダの権限を与えます。

# mv wordpress /var/www/html/
# chown www-data.www-data /var/www/html/wordpress/* -R

(2022/07/21追記)

chownの権限の設定がうまくいかない場合はこちらもお試しください。www-dataを「コロン」でつないで、最後に「半角スペース」と「ピリオド」をつけます。

# chown www-data:www-data . /var/www/html/wordpress/* -R

WordPressのフォルダの中にはwp-configというconfigファイルのサンプルが用意されています。このサンプルファイルの名前を書き替え、wp-config.phpという実際に参照されるファイル名に変更して、中身の書き換えを行います。

# cd /var/www/html/wordpress
# mv wp-config-sample.php wp-config.php
# vim wp-config.php

wp-config.phpには先ほどmySQLで作成したアカウントとデータベースの情報を入れます。

define('DB_NAME', 'wp_db');
define('DB_USER', 'wp-user');
define('DB_PASSWORD', 'WPpass');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

上書き保存すればwp-config.phpファイルの設定完了です。

WordPressをサーバにインストールする

サーバーPCと同じネットワークにある別のPCからブラウザを立ち上げ、”サーバPCのIPアドレス”/wordpressと検索バーに入力します。

言語選択するとwordpressのインストール画面が表示されるはずです。

install画面。こちらのページから画面をお借りしました。ありがとうございます。http://alphasis.info/2010/09/wordpress-install/

あとは言われたとおりに入力するとWordPressのインストールができます。お疲れ様でした!

参考リンク

参考にさせて頂いたページです。ありがとうございました。

Ubuntu LinuxにNginxでWordpressをインストールする

Ubuntu20.04 Server + nginx + php-fpm 7.4 の動作環境を構築する