Ubuntu ServerにWordPressをインストールする手順

古いWindowsノートにUbuntu Serverを入れて、その中でWordPressを動かす企画の続きです。

ところがここからWordPressを入れて動かすのに結構苦戦しまして、実機ではなく仮想環境上であれこれ試してからやろうと思って作成した記事が前回でした。

WordPressのインストールはみんなやってるだろうからすぐにやり方を見つけてできるだろうと思ってたら、いくつもサイトを調べた末にようやくできました。おそらくOSのバージョンの違いとかで変わるんでしょうね。環境構築の難しさをまざまざと見せつけられました。

そういうわけで、これが僕が見つけた正解ルートです。仮想環境でも実機でもできたので、現時点ではこれをやっておけば間違いないんじゃないかと思います。

ベースは下記のリンクを参考にしつつ、うまくいかなったところは別のサイトを参考にして成功しました。それぞれ参考リンクは随時紹介していきます。

【2023年最新版】WordPressをサーバーにインストールする方法
Ubuntu LinuxへWordPressのインストール手順を本記事では紹介します。

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」で一旦ログアウトします。

この部分の参考は下記のリンクです。

MySQLのroot@localhostのパスワード設定 - Jaybanuan's Blog
はじめに とあるサンプルプログラムを実行することになったのだが、MySQLへの接続にアカウントがroot@localhostを利用し、なおかつabc123のようなパスワードで接続するようになっていた。 サンプルのあちこちにMySQLへのログ...

データベースの作成

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」に変えます。

Ubuntu上のWordPressでパーマリンクが表示されない。
「Orange Pi PC2 – WordPressをインストールする –」の続き。 ちゃんと表示されて、やれ

viコマンドの操作方法

viコマンドでの編集は最初は独特な操作方法なので、とりあえず使う項目だけピックアップ。

i入力モード
x削除
dd行削除
ESC入力モード解除
:w保存して終了
E45: ‘readonly’ option is set (add ! to override) のエラーが出る場合

ただし、「:w」で保存して終了しようとすると、

E45: ‘readonly’ option is set (add ! to override)

と表示されて終了できない場合があります。というか終了できません。

その場合は下記の手順で終了させます。

  1. ESCキーで入力モードを解除
  2. 下記コマンドを入力
:w !sudo tee %
:q!
E45: 'readonly' option is set (add ! to override) が出た場合に保存する方法 - Qiita
E45: 'readonly' option is set (add ! to override)が出たらパニックになったのでメモ。入力モードをescで抜けるコマンドモードで下記を実行:w …

.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コマンドのやり方です。

WordPressで画像をアップロードした際にアップロードサイズを超えたエラーの対処方法
WordPressでファイルサイズが大きい画像をアップロードした際に、「このファイルはサイトの最大アップロードサイズを超えています。」というメッセージが表示された際の対処方法を記載。 エラー内容 wordpressを使用していると上記エラー

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
php-mbstringをubuntuサーバーにインストールできない

これで一通りの作業が完了です。一旦OSを再起動させておけばなお安心です。

僕がやった環境では再起動後でもPHP、MySQL、Apacheは自動で起動してくれました。

WordPressの設定

今回設置したディレクトリにブラウザでアクセスします。僕の環境では「http://192.168.0.50/wp/」です。

この画面が出ればPHPやApacheは正常に動いていてWordPressも準備できています。

先ほど設定したMySQLの情報を入力します。テーブル接頭辞はデフォルトで入っている「wp_」でいいです。

この画面になればほぼ勝ち確。MySQLの方も問題ないです。あとはWordPressのインストール実行して設定してください。

コメント

コメントする前にお読みください

プログラミングに関する質問について、詳細なコードはお答えしませんのでご了承ください。
また、迷惑コメント防止のために初回のコメント投稿は承認制です。投稿が反映されるまで少し時間がかかります。