Ubuntu Nginxでwordpressの環境構築

wordpress環境構築の為に、AzureでVM作成してサーバーを立てました。

サーバのOSはUbuntu 18.04.5 LTSです。

レンタルサーバーなどを使用すれば簡単にできるwordpress環境構築ですが、1からwordpressの環境を構築したら結構難しかったので、やり方をまとめました。
#UbuntuにwebサーバーNginxをインストール
ApacheかNginxかで迷いましたが今回はNginxを使用しました。

まずは、インストール可能なパッケージの「一覧」を更新し、nginxをインストールする下記コマンドを実施。

ちなみに、apt-getコマンドは、Debian系のディストリビューション（DebianやUbuntu）のパッケージ管理システムであるAPT（Advanced Package Tool）ライブラリを利用してパッケージを操作・管理するコマンドです。

centOSの場合は、apt-getの代わりにyumコマンドが使えます。



```
# apt-get update
# apt-get install nginx
```

Nginxがインストールできたら、Nginxの設定が書いてある、nginx.confファイルを編集します。

```
vim /etc/nginx/nginx.conf
```
client_max_body_sizeを追加し、最大アップロードサイズを32めがバイトに設定します。

```
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/*;
}
```
Nginxを再起動します。
Nginxの設定ファイルなどを編集した際は、必ず再起動するようにして下さい。

```
# sudo service nginx restart
# sudo service nginx status
```
再起動後はステータスを確認し、activeになっていればOK。

```
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2018-12-29 04:29:22 UTC; 1h 17min ago
Docs: man:nginx(8)
Process: 2233 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status
Process: 2221 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exite
Main PID: 2238 (nginx)
Tasks: 2 (limit: 1152)
CGroup: /system.slice/nginx.service
├─2238 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2239 nginx: worker process
```

#UbuntuにMySQLをインストールする

wordpressではデータベースMySQLを使用する為インストールする。

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

インストールしたら実際にデータベースを作成する必要があります。

下記のコマンドでMySQLにアクセスします。

```
# sudo mysql -u root -p
```
・今回の場合、wordpressという名前のデータベースを作成
・今回の場合、ユーザー名takeshi123パスワードsample123という名前のMySQLユーザーアカウントを作成します。

```
mysql> CREATE DATABASE wordpress CHARACTER SET UTF8 COLLATE UTF8_BIN;
CREATE USER 'takeshi123'@'%' IDENTIFIED BY 'sample123';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%';
FLUSH PRIVILEGES;
quit;
```

#NginxにPHPサポートを追加する

wordpressはPHPを使用します。

NginxでPHPを使用できるようにPHPサポートを追加する為に、PHPの必須パッケージをインストールし、必要なPHPモジュールをインストールする。

```
# apt-get update
# apt-get install php7.2-fpm
# apt-get install php7.2-xml php7.2-curl php7.2-gd php7.2-mbstring php7.2-readline
# apt-get install php7.2-bz2 php7.2-zip php7.2-json php7.2-opcache
```

インストールが完了したら、PHP設定ファイルのphp.iniを編集します。

```
# updatedb
# vi /etc/php/7.2/fpm/php.ini
```

```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
```

次に、NginxのデフォルトWebサイト設定ファイルを下記のように書き換える。

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

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

PHPサービスを再起動し、Nginxも再起動する。

```
# sudo service php7.2-fpm restart
# sudo service nginx restart
```

#UbuntuにWordpressをインストールする

tmpフォルダにwordpressをインストールする。

webブラウザでwordpress公式サイトにアクセスしてローカル環境にダウンロードしても良い。

その際サーバーにアップロードする場合は、scpコマンドでサーバーにアップロードすれば良い。

今回はサーバー上でコマンド操作でインストールしました。

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

インストールしてファイルを解凍したら/var/www/html/に移動

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

WordPressのデータベースの接続情報などが記載してある設定ファイルであるwp-config.phpを編集します。

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

```wp-config.php
define('DB_NAME', 'wordpress');
define('DB_USER', 'takeshi123');
define('DB_PASSWORD', 'sample123');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
```

これで設定は完了でアクセスできるはずですが下記のエラーが発生しました。

「お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。」

MySQL の拡張機能がインストールされていなかったみたいです。

下記コマンドで拡張機能をインストールすることで解決。

```
sudo apt-get -y install php-mysql
```

これでブラウザにアクセスすればWordpress画面にアクセスすることができるはずです。

nginxの場合パーマリンクの設定がデフォルトでできないので下記コードを/etc/nginx/sites-available/defaultファイルに追加することでパーマリンク設定の変更ができるようになります。

```
try_files $uri $uri/ /index.php?q=$uri&$args;
```

デフォルトの設定だとwordpressでテーマインストールがサイズオーバーでできなかったので、/etc/php/7.2/fpm/php.iniファイルを下記のように修正

```
upload_max_filesize: 10M
post_max_size: 10M
```

これで無事環境構築できました。