古いWindowsノートにUbuntu Serverを入れて、その中でWordPressを動かす企画の続きです。
ところがここからWordPressを入れて動かすのに結構苦戦しまして、実機ではなく仮想環境上であれこれ試してからやろうと思って作成した記事が前回でした。
WordPressのインストールはみんなやってるだろうからすぐにやり方を見つけてできるだろうと思ってたら、いくつもサイトを調べた末にようやくできました。おそらくOSのバージョンの違いとかで変わるんでしょうね。環境構築の難しさをまざまざと見せつけられました。
そういうわけで、これが僕が見つけた正解ルートです。仮想環境でも実機でもできたので、現時点ではこれをやっておけば間違いないんじゃないかと思います。
ベースは下記のリンクを参考にしつつ、うまくいかなったところは別のサイトを参考にして成功しました。それぞれ参考リンクは随時紹介していきます。
Ubuntuの初期設定
Ubuntu Serverをインストールしたてホヤホヤの状態から始まります。
前回の記事でも最初にやっておくこととして書いてますが、Ubuntuの更新とタイムゾーンの設定をしておきます。
Ubuntuの更新
sudo apt update
sudo apt upgrade
sudo reboot
「sudo reboot」で一旦再起動しておきます。
タイムゾーンの設定
sudo timedatectl set-timezone Asia/Tokyo
タイムゾーンを日本時刻に設定します。
WordPress, PHP, MySQL, Apacheをインストール
WordPressを動かすには、WordPress本体はもちろん、PHP、MySQL、Apacheが必要ですのでインストールします。
sudo apt update
sudo apt install wordpress php libapache2-mod-php mysql-server php-mysql
WordPressファイルを作成
WordPressファイルを作成します。
cd /var/www/html
sudo wget https://ja.wordpress.org/latest-ja.tar.gz
sudo tar -xzvf latest-ja.tar.gz
cdコマンドで/var/www/htmlに移動し、wgetコマンドでWordPressファイルをダウンロードします。
ダウンロード後、tarコマンドでダウンロードしたファイルを展開します。
これで/var/www/html/の下に「wordpress」というフォルダが作成されます。この「wordpress」がアクセスするときのURLになります。今回はIPアドレス「192.168.0.50」で作成しているので、「http://192.168.0.50/wordpress/」ということですね。
ディレクトリ名の変更
このままでもいいのですが、URLはもう少しわかりやすくしたいということであればディレクトリ名を変更します。
sudo mv wordpress wp
mvコマンドは、「mv hoge fuga」とすることで、hogeをfugaに変更してくれます。
今回は「wp」というディレクトリ名に変更します。よって、「http://192.168.0.50/wp/」がURLとなります。
アクセス権の変更
ディレクトリの中にあるファイルについて、Web上から変更できるようにアクセス権を変更します。
sudo chown -R www-data /var/www/html/wp
chownコマンドでアプリケーションなどにアクセス権を変更することができます。ここではwww-dataを指定します。
もしディレクトリ名を変更している場合は、指定のディレクトリ名に注意です。
MySQLの設定
最初に1番つまづいたのがMySQLの設定。rootのパスワードがわからずさまよった挙げ句、重要なファイルを消してしまってMySQLが起動しなくなって結局OSを入れ直しました。
いろいろ試した結果、とりあえずこの方法でいけることがわかりました。
rootのパスワードを変更
sudo mysql -u root
select user, host, plugin from mysql.user;
update mysql.user set plugin = 'caching_sha2_password' where user = 'root';
flush privileges;
select user, host, plugin from mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED BY '******';
flush privileges;
quit
まずrootのパスワードを変更します。rootはどうやら初期パスワードは何も設定されていない状態で、ただ普通にログインしようとしてもエラーになってしまいます。
そこで「sudo mysql -u root」とsudoであればそのままログインできます。
初期状態ではrootはUNIXソケットを使用したログイン方法らしく、それで普通にクライアントであるmysqlを実行してもログインできないとのこと。そこで普通にパスワードを使ってログインする方式に変更するのが3行目です。変更したら「flush privileges;」で更新します。
以降はrootにパスワードを設定を設定します。6行目の******の部分に設定したいパスワードを入力します。
一通り終わったら「quit」で一旦ログアウトします。
この部分の参考は下記のリンクです。
データベースの作成
WordPress用のデータベースを新規作成します。ここでは「wpblog」という名前で作成します。
mysql -u root -p
CREATE DATABASE wpblog;
ALTER DATABASE wpblog DEFAULT CHARACTER SET=utf8;
FLUSH PRIVILEGES;
先ほど設定したrootのパスワードでログインすることができます。
参考にしたサイトに書かれていたのをそのまま書いているので、さっきは小文字で書いていたのに今回は大文字です。SQL文はどっちでもOKです。
CREATE DATABASEでデータベースを作成し、文字コードをUTF-8に設定、その後更新します。
この後ユーザーを追加するのでログアウトせずにそのまま操作を続けます。
ユーザー作成
rootをそのまま使うのは抵抗があるので今回作成するWordPress用にユーザーを作成します。
ここでは「wp_user」というユーザーを作成します。
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY '******';
GRANT ALL PRIVILEGES ON wpblog.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
1行目の******にパスワードを設定し、2行目で先ほど作成した「wpblog」の権限を付与します。
設定し終えたら更新します。
Apacheの設定
ApacheはWebサーバーを動かすソフトです。こちらもいろいろと設定が必要です。
モジュール有効化
sudo a2enmod rewrite
sudo service apache2 restart
Apacheのモジュールを有効化させ、Apacheを再起動させます。
apache2.confの設定
モジュールを有効化するだけでも動作はしますが、このままだとWordPressのパーマリンク設定で基本以外のときにエラーが出ます。
記事が表示されなくなりますし、投稿画面から保存や公開を行おうとすると下記のようなエラーが出ます。
公開に失敗しました。返答が正しい JSON レスポンスではありません。
そこでapache2.confをviコマンドで編集します。
vi /etc/apache2/apache2.conf
これでapache2.confの内容を編集することができます。
下記の記述の部分を探し編集、もし見つからなければ追記します。
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
デフォルトでは「AllowOverride None」になっているところを、「AllowOverride All」に変えます。
viコマンドの操作方法
viコマンドでの編集は最初は独特な操作方法なので、とりあえず使う項目だけピックアップ。
i | 入力モード |
x | 削除 |
dd | 行削除 |
ESC | 入力モード解除 |
:w | 保存して終了 |
E45: ‘readonly’ option is set (add ! to override) のエラーが出る場合
ただし、「:w」で保存して終了しようとすると、
E45: ‘readonly’ option is set (add ! to override)
と表示されて終了できない場合があります。というか終了できません。
その場合は下記の手順で終了させます。
- ESCキーで入力モードを解除
- 下記コマンドを入力
:w !sudo tee %
:q!
.htaccessの編集
.htaccessを編集します。
これは先ほどのパーマリンク問題を解消するのと、アップロード上限サイズを変更するためです。メディアはもちろんのこと、プラグインをインストールするときにも支障が出ます。
WordPressをインストールしたディレクトリ内に「.htaccess」ができているかと思いますので、viコマンドで開きます。
もし表示されない場合は、一度WordPressの設定を終えてからダッシュボードでパーマリンク設定を適当に切り替えたら作成されるかと思います。
vi /var/www/html/wp/.htaccess
下記のような内容に変更します。RewriteBaseやRewriteRuleはインストールしたディレクトリによって内容が変わるので注意です。
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wp/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [L]
</IfModule>
php_value upload_max_filesize 50m
php_value post_max_size 500m
php_value max_execution_time 300
php_value max_input_time 300
# END WordPress
「php_value upload_max_filesize 50m」以降はアップロードの上限サイズに関する記述です。追記してください。
これで保存して終了させます。先ほどのviコマンドのやり方です。
php-mbstringのインストール
WordPressで日本語を使用するときに基本となるプラグインである「WP Multibyte Patch」ですが、インストールして有効にしようとすると下記のようなエラーが出ます。
お使いの WP Muiltibyte Patch を有効化するには PHP の mbstring 関数が必要です。
というわけでphp-mbstringをインストールします。
sudo apt-add-repository universe
sudo apt update
sudo apt install php-mbstring
これで一通りの作業が完了です。一旦OSを再起動させておけばなお安心です。
僕がやった環境では再起動後でもPHP、MySQL、Apacheは自動で起動してくれました。
WordPressの設定
今回設置したディレクトリにブラウザでアクセスします。僕の環境では「http://192.168.0.50/wp/」です。
この画面が出ればPHPやApacheは正常に動いていてWordPressも準備できています。
先ほど設定したMySQLの情報を入力します。テーブル接頭辞はデフォルトで入っている「wp_」でいいです。
この画面になればほぼ勝ち確。MySQLの方も問題ないです。あとはWordPressのインストール実行して設定してください。
コメント