WordPressサーバー構築

CentOS 8.2

構築時点で最新のバージョンを選択。

今までもCentOSを使ってて、安定しているし、特に不満もないので引き続きCentOSを採用。

Ubuntuも候補には挙がったんだけど、仕事でもCentOSに触れることがしばしばあるし、なんとなくUbuntuはクライアントデスクトップ用という先入観があって、「ま、個人で使うならどっちもそんなに変わらないでしょう」ということで外した。

とにもかくにもWordPressでサイトを立ち上げる

インストール手順概要

CentOSのインストール時に大抵のパッケージはインストールされている。

httpd(apache2.4)、vsftpd、php(ただし7.2だったので用アップデート)
で、なぜかmysqlは入っていなかったような・・・?

apache

Webサーバーがなければ当然WordPressも動かすことなんてできないので設定、設定。

/etc/httpd/conf/httpd.conf

上記ファイルの ServerName をとりあえず変更する程度で、動作確認。

また、デフォルトのファイアウォールの設定ではhttp通信が許可されていないので下記のようにして登録

# firewall-cmd --permanent --add-service=http
# firewall-cmd --reload

httpdの自動起動の登録と、自動起動になったか確認、そしてとりあえず起動してみる。

# systemctl enable httpd
# systemctl is-enable httpd
# systemctl start httpd
php

この記事作成時点(2020/11/21では)WordPressの5.5.3が最新で、phpは7.4が必須。
であるにもかかわらず、CentOS8.2ではphp7.2の状態なのでアップデートが必要。

チョット手間が必要で、リポジトリの追加、php本体のインストール、php-fpmのインストール、モジュールのインストール、設定ファイルの修正、辺りの作業が必要となる。

てことで、まずはリポジトリの追加

# dnf install epel-release
# dnf install http://rpms.famillecollet.com/enterprise/remi-release-8.rpm

続いて本体、モジュール類各種をインストールする。

# dnf module install php:remi-7.4
# dnf install php
# dnf install php-mysqlnd
# dnf install php-fpm

このままサービスを有効化しても使えるには使えるけど、WordPressのテーマを手動でアップロードする際や各種メディアのアップロードなどで、そのファイルサイズによってはphp側のサイズ制限に引っかかる。
というか、初期設定が2MBなのでまず引っかかっるでしょ、今時は。

/etc/php.ini

このファイルでそのサイズが設定されているので下記のように変更する。

upload_max_filesize= 30M
post_max_size= 30M

どのくらいのサイズにするのかは、まぁ、適当?
100MBでも、1024MBでもいいんじゃないかな、ストレージ容量も昔ほど気にしなくてもよくなってるから。

そして、サービスの自動起動設定と有効化。

# systemctl enable php-fpm
# systemctl start php-fpm

あ・・・そういえばapacheを先に起動してたから、apacheのリスタートも必要だったかな?

# systemctl restart httpd
vsftpd

サーバ側で色々ファイル作って編集して、ということも多いけど、クライアントPC側で作ってまとめて送りたいなんて事もあるので、ftpサーバを立てる。
・・・別にTeraTermならSSH-SCPも簡単なんでそっちでもいいんだけど・・・

/etc/vsftpd/vsftpd.conf

上記設定ファイル内の下記部分がYesになっているのでNoに変更。
次にユーザーリストファイルの編集をするけど、ここがYesの場合ってブラックリスト方式ということになるから、Noにしてホワイトリスト方式にする。(という認識であってるのか?)

userlist_deny=NO

続いて

/etc/vsftpd/user_list

このファイルにアクセスを許可したいユーザーを書く。

apacheの時と同じようにファイアウォールで通信を許可する。

# firewall-cmd --permanent --add-service=ftp
# firewall-cmd --reload

SELinuxを無効にしていない場合には下記コマンドの事項も必要

setsebool -P ftpd_full_access on

自動起動に関する部分もapacheと同様に。

# systemctl enable vsftpd
# systemctl start vsftpd
mysql

php同様、mysqlもWordPressに必須。
ただ、mariaDBの方が今では有利かな、性能的に。次はmariaDBしようと思うけど、今はとりあえずmysqlでいっとくことに。


パッケージのインストールコマンドがyumからdnfに変わったようで下記の通りに実行。
8.0はバージョンなので適宜最新値に置き換えて。

# dnf install @mysql:8.0

WordPress用のデータベース作成やらユーザー作成やらは後で行うとして、自動起動設定とサービスを開始させておく。

# systemctl enable mysqld
# systemctl start mysqld
WordPress

まずはWordPressを配置するディレクトリが、WordPressが編集出来るように権限を設定する。

# chown -R apache:apache /var/www
# chmod -R 775 /var/www

mysqlのrootユーザーに対して、パスワードを設定。

# mysql -u root

mysql> update mysql.user set password=password('rootのパスワード') where user = 'root';
mysql> flush privileges;
mysql> exit;

# mysql -u root -p
Enter Password

といった流れ。

続いて、WordPress用のデータベースを作成する。

# mysql -u root -p

mysql> create database '作成したいデータベース名' default character set utf8;
mysql> create user 'ユーザー名'@localhost identified by 'ユーザーのパスワード';
mysql> grant all on '作成したデータベース名'.* to 'ユーザー名'@localhost with grant option;
mysql> flush privileges;
mysql> exit;

流れとしては、WordPress用のデータベースを作成、それを管理するユーザーを作成、作成したユーザーに権限を付与、反映、exit。

https://ja.wordpress.org
ここからWordPressの最新版を取得し、ftpでもSSH-SCPでもなんでもいいので、/var/www/htmlに保存する。

保存したものを解凍すると wordpress というディレクトリができあがるので、必要に応じてそのディレクトリ名を変える。

また、事前に wp-config-sample.php を wp-config.php にコピーして内容を整えておこう。
少なくとも下記の編集を行っておくと良い。

尚、後半は
https://api.wordpress.org/secret-key/1.1/salt/
にアクセスすると自動生成してくれるので、それをコピペした方が楽。

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define( 'DB_NAME', 'xxxxx' );/** MySQL データベースのユーザー名 */
define( 'DB_USER', 'xxxxx' );
/** MySQL データベースのパスワード */
define( 'DB_PASSWORD', 'xxxxx' );

(中略)

define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );

ここまで済んだら、ブラウザで http://IPアドレス/wordpress/ にアクセスすればインストールがウィザード形式で開始される。
あとは指示通りに設定を進めていけば完了。

この記事にコメントしてみる