この世界の基盤はWordPressによって支えられています。せっかくWordPressを導入したので、導入する一連の流れを記録したいと思います。owner203はUbuntu信者なのでOSは当然Ubuntu 18.10になります。もしUbuntuにこだわりもなく、そしてサーバーでWordPressだけを使いたいのであれば、手動で導入する必要もなく、ConoHaで用意されたWordPressのテンプレートイメージを使えばすぐに導入できるのでお勧めです。
WordPressの導入に必要な環境、いわゆる「LAMP」環境の構築から、WordPressの導入及び設定まで記録していきたいと思います。まずLAMPのL、つまりLinux環境はすでに構築済みなので、省略します。
Apacheの導入とufwの設定
LAMPのAというのは、HTTPサーバーとして機能するに必要なソフトウェア「Apache」のことです。これも簡単に導入できます。
sudo apt update
sudo apt install apache2
これだけです。後はufwで必要なポートを開けるだけです。
sudo ufw app list
sudo ufw app info 'Apache Full'
sudo ufw allow 'Apache Full'
ブラウザからサーバーのドメインまたはIPアドレスを入力してアクセスして、テストページが表示されたら問題ないです。
MySQLの導入
LAMPのMというのは、データベースであるMySQLのことです。まずaptでMySQLをインストールします。
sudo apt install mysql-server
次に、MySQLのパスワードなどのセキュリティ設定を行います。次のコマンドを実行します。
sudo mysql_secure_installation
これでMySQLのrootパスワードを設定します。途中でVALIDATE PASSWORD PLUGINを有効にするかが聞かれるので、もしYと答えたら、パスワードの複雑度などのポリシーを選択する必要があります。LOW、MEDIUM、STRONGの3つのレベルから設定できます。ここで設定したら後で設定するすべてのパスワードがこのポリシーを満たさないといけません。
MySQLのrootユーザーはデフォルトでauth_socketという認証方法を使います。このままでもいいけど、phpMyAdminなどでパスワード認証で接続したいときは一苦労なので、ここでrootユーザーのパスワードによる認証を許可する設定をします。もちろんrootユーザーが強いパスワードを使うことが大前提になります。次のコマンドでMySQLを開きます。
sudo mysql
すべてのMySQLユーザーの認証方法を確認します。
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
pluginの欄でrootユーザーはデフォルトでauth_socketとなっています。次のコマンドでrootユーザーをパスワード認証にします。「ROOT_PASSWORD」の部分はさっき自分が設定したパスワードにします。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ROOT_PASSWORD';
設定の変更を適用します。
mysql> FLUSH PRIVILEGES;
もう一回確認します。
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
rootユーザーもmysql_native_passwordになったら大丈夫です。これでMySQLを閉じます。
mysql> exit
PHP環境の導入
LAMP最後のPはPHP環境のことです。次のコマンドでPHPをインストールします。
sudo apt install php libapache2-mod-php php-mysql
デフォルトでHTTPのアクセスがあったら、Apacheはindex.htmlを優先的に探しますが、WordPressの場合はhtmlではなくphpなので、index.phpを優先的に探してもらいたいです。ここでApacheの設定を変更して、phpを優先にします。
sudo vi /etc/apache2/mods-enabled/dir.conf
/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
--DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
++DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
Apacheを再起動して、設定を適用します。
sudo systemctl restart apache2
ここまで、WordPressの導入に必要なLAMP環境の整備は完了しました。
WordPressを導入するための準備
WordPress用データベースを作成する
まずMySQLでWordPress用のデータベースを作成します。rootユーザーでMySQLをアクセスします。
mysql -u root -p
wordpressというWordPress専用のデータベースを作成し、同時にwordpressuserという一般ユーザーを作成して、パスワードをWPUSER_PASSWORDにします。
mysql> CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
mysql> GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost' IDENTIFIED BY 'WPUSER_PASSWORD';
変更を適用して、確認します。
mysql> FLUSH PRIVILEGES;
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
問題なければ、MySQLを閉じます。
mysql> exit
PHP拡張機能をインストールする
インストールするだけです。特に注目することはありません。インストールしたら、Apacheを再起動して、適用します。
sudo apt update
sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
sudo systemctl restart apache2
Apacheを設定して.htaccessの上書きを許可する
いろんなWordPressのプラグインで、.htaccessの上書きを許可する必要があります。Apacheを設定して、上書きを有効にします。
sudo vi /etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-available/000-default.conf DocumentRoot /var/www/html #以下の行を追記する <Directory /var/www/html/> AllowOverride All </Directory> #追記はここまで
WordPressのパーマリンク機能を使うために、mod_rewriteを有効にします。
sudo a2enmod rewrite
設定の確認を行います。Syntax OKが出たら問題ないです。
sudo apache2ctl configtest
Apacheを再起動して、設定を適用します。
sudo systemctl restart apache2
Apacheのデフォルトページを削除する
Apacheのデフォルトページを削除します。使わないので邪魔になるだけです。
sudo rm /var/www/html/index.html
WordPressの導入と設定
WordPressをダウンロードする
いよいよ本番WordPressの導入になります。/tmpで最新版のWordPressをダウンロードしてから解凍して、丸ごとhttpフォルダにコピーします。WordPressのページをこの世界のホームページにしたいので、メインフォルダである/var/www/htmlにコピーします。
cd /tmp
curl -O https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
touch /tmp/wordpress/.htaccess
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
mkdir /tmp/wordpress/wp-content/upgrade
sudo cp -a /tmp/wordpress/. /var/www/html
ディレクトリの権限を設定する
WordPressのフォルダの権限を正しく設定しないとダメなので、権限の設定を行います。
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html/ -type d -exec chmod 750 {} \;
sudo find /var/www/html/ -type f -exec chmod 640 {} \;
WordPressを設定する
まずセキュリティ向上させるためにsaltキーを設定します。内部で使うものなので、長くてランダムなものがいいでしょう。覚える必要はありません。WordPress公式ではsaltキーを作成してくれるツールを提供しているので、それを使います。SSH接続の場合は、出力された内容を一時的にメモする必要があります。まず次のコマンドを実行して、内容を取得します。
curl -s https://api.wordpress.org/secret-key/1.1/salt/
そして画面に表示された以下のような内容をメモします。saltキーはランダムで生成されたものです。
#以下の行を記録する
define('AUTH_KEY', 'my unique phrase');
define('SECURE_AUTH_KEY', 'my unique phrase');
define('LOGGED_IN_KEY', 'my unique phrase');
define('NONCE_KEY', 'my unique phrase');
define('AUTH_SALT', 'my unique phrase');
define('SECURE_AUTH_SALT', 'my unique phrase');
define('LOGGED_IN_SALT', 'my unique phrase');
define('NONCE_SALT', 'my unique phrase');
#記録はここまで
これからWordPressの設定ファイルを編集する。
sudo vi /var/www/html/wp-config.php
まずはさっき作成したデータベースの情報を記入します。
/var/www/html/wp-config.php #前略... define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'wordpressuser'); /** MySQL database password */ define('DB_PASSWORD', 'WPUSER_PASSWORD'); #後略...
次に、メモしたsaltキーの内容で以下の部分を書き換えます。
/var/www/html/wp-config.php
#前略...
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');
#後略...
最後に、次の内容を追記します。
/var/www/html/wp-config.php
#次の行を追記する
define('FS_METHOD', 'direct');
以上でWordPressの設定がすべて終わりです。ブラウザでサーバーにアクセスして、WordPressを使い始めましょう。