テーマを変更中でお見苦しい点があると思います。ご迷惑をおかけいたします。

誰でも出来るWordPressのインストール手順!

この記事では、LinuxにいちからWordPressをインストールする手順を詳しく解説していきます。インストールは一番原始的な方法で行います。つまりサーバーに必要なパッケージをインストールしてデータベースも自分でセットアップします。

最近のレンタルサーバーでは簡単にWordPressをセットアップできるようになっていますが、このようなツールは詳細を隠してしまいます。原始的な方法でインストールすることは、WordPressが実際どうのように構成されているのか知ることができ、より一層理解が深まります。

原始的な方法と聞くと難しそうに思えるかもしれませんが、誰でもできるように詳しく解説していきますので心配しないでください。

目次

サーバーの要件を確認する

WordPressをインストールするにあたり、インストールするサーバーの要件を確認しておきましょう。WordPressのバージョンによって要件は異なりますので、インストールするときに必ず確認します。

今回インストールするWordPress 6.2.2 の要件は次のとおりでした。

サーバーの要件
  • PHP 7.4 以上
  • MySQL 5.7 以上または MariaDB 10.3 以上

Webサーバ(ApacheまたはNginx)は要件に含まれていませんが、通常は利用します。バージョンは特に指定されていないので、PHPが動作するバージョンであれば問題ないでしょう。

なお、この記事では次の環境でWordPressをインストールします。

サーバーの要件
  • WordPress 6.2.2(日本語版)
  • AlmaLinux 9.2
  • PHP 8.0
  • MySQL 8.0
  • Apache 2.4

ここではLinuxとしてCentOSの後継として有力なAlmaLinuxを使います。CentOSは今後、新しいバージョンがリリースされないので、将来性のあるLinuxディストリビューションを使います。AlmaLinuxは、CentOS同様にRed Hat Enterprise Linux(RHEL)互換のOSです。

厳密には、今後CentOSはCentOS Streamがへ移行されます。CentOSはRHELの安定版のクローンという位置付けでしたが、CentOS StreamはRHELの開発版という位置付けになります。CentOS Streamでテストされた機能がRHELの安定版に取り込まれるという流れとなります。

OSとミドルウェアのセットアップ

OSの設定変更やミドルウェアのインストールなどを実施していきます。用意したサーバーで既に実施済みのものがあれば読み飛ばしてください。ここではrootユーザーでセットアップを実施します。一般ユーザーで実施する場合は、適宜sudoコマンドなどで実行してください。

OSはあらかじめインストールを済ませておいてください。

OSの設定変更

はじめにOSの設定をいくつか変更します。

SELinuxの無効化

SELinuxが有効のままだと予期せぬ問題が起こりやすいので、これを無効化します。私が携わった商用サーバーでも有効のまま運用していることはありませんでしたので、一般的に無効のまま運用されていることが多いと思います。有効化する場合でも、WordPressをインストールして正常に動作していることを確認してから、有効化の対応をする方が良いでしょう。

SELinuxを無効化する手順は次のとおりです。/etc/selinux/config ファイルの「SELINUX=enforcing」という行を vi エディタなどで編集します。

# vi /etc/selinux/config

変更する内容は次のとおりです。

# 変更前
SELINUX=enforcing
    ↓
# 変更後
SELINUX=disabled

変更したら保存してOSを再起動します。

# reboot

OSが起動したら、ログインしてSELinuxが無効になっていることを確認します。次のコマンドを実行して「Disabled」と表示されれば無効になっています。

# getenforce 
Disabled

ファイヤーウォールの設定

ファイヤーウォールを設定をします。WordPressを運用する場合は、最低限SSH、HTTP、HTTPSの通信ができる必要があります。これらの通信ができるようにファイヤーウォールを設定します。

一旦、ファイヤーウォールを停止して、すべての通信が通るようにしておいても構いません。ただし、運用時には忘れずにファイヤーウォールを起動しておきましょう。

ファイヤーウォールの現在の状態を確認します。

# systemctl status firewalld
○ firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
     Active: inactive (dead)
       Docs: man:firewalld(1)

自動起動の設定が無効の場合(上記の赤字部分が disabled の場合)は有効化します。

# systemctl enable firewalld

ファイヤーウォールが起動していない場合(上記の緑字部分が inactive (dead) の場合)は起動します。

# systemctl start firewalld

アクティブゾーンがpublicであるか確認します

# firewall-cmd --get-active-zones
public
...

publicで許可されている通信を確認します。

# firewall-cmd --list-service
cockpit dhcpv6-client ssh

SSH(ssh)はデフォルトで許可されているはずです。HTTPとHTTPSの通信を許可されていなければ(httpとhttpsが表示されなければ)、HTTPとHTTPSの通信を許可します。

# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-service=https

設定を反映させるためにファイアーウォールの設定を再読み込みします。

# firewall-cmd --reload

HTTPとHTTPSの通信を許可されているか確認します

# firewall-cmd --list-service
cockpit dhcpv6-client http https ssh

タイムゾーンの確認

OSのタイムゾーンの設定を確認します。OSのインストール時にタイムゾーンを正しく設定していれば、ここは読み飛ばしても構いません。

タイムゾーンを確認するにはtimedatectlコマンドを使います。

# timedatectl
               Local time: Wed 2023-06-21 04:13:00 UTC
           Universal time: Wed 2023-06-21 04:13:00 UTC
                 RTC time: Wed 2023-06-21 04:12:59
                Time zone: UTC (UTC, +0000)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

もしタイムゾーンが想定していたものと異なっていたら、次のコマンドで変更します。次の例はタイムゾーンを「Asia/Tokyo」に設定します。

# timedatectl set-timezone Asia/Tokyo

ミドルウェアのセットアップ

WordPressの実行に必要なApache、PHP、MySQLをセットアップします。

Apacheのインストール

Apacheがインストールされていなければインストールします。Apacheは、dnfコマンドでインストールします。

# dnf install httpd

Apacheの状態を確認します

# systemctl status httpd
○ httpd.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; preset: disabled)
     Active: inactive (dead)
       Docs: man:httpd.service(8)

自動起動の設定が無効の場合(上記の赤字部分が disabled の場合)は有効化します。

# systemctl enable httpd

Apache が起動していない場合(上記の緑字部分が inactive (dead) の場合)は起動します。

# systemctl start httpd

続いてサイトで「.htaccess」を利用できるようにします。

WordPressのパーマリンク設定は、WordPressインストールディレクトリの .htaccess ファイルを利用します。インストールディレクトリの .htaccess はデフォルトで利用できないないので、Apacheの設定ファイル(httpd.conf)を修正して利用できるようにします。これによって、パーマリンク設定が機能するようになります。

viなどのエディタで /etc/httpd/conf/httpd.conf を修正ます。

# vi /etc/httpd/conf/httpd.conf

次の記述場所を探して、「AllowOverride none」の行を「AllowOverride All」に修正します(コメント行は省略しています)。

# 修正前
<Directory "/var/www/html">
    Options Indexes FollowSymLinks

    AllowOverride none

    Require all granted
</Directory>
  ↓
# 修正後
<Directory "/var/www/html">
    Options Indexes FollowSymLinks

    AllowOverride All

    Require all granted
</Directory>

修正してファイルを保存したら、設定を読み込むためにリロードします。

# systemctl reload httpd

以上で、Apacheのセットアップは完了です。

PHPのインストール

PHPをdnfコマンドでインストールします。

# dnf install php php-devel php-mysqlnd php-mbstring php-pdo php-gd

PHPをインストールを実施したら、「post_max_size」と「upload_max_filesize」の設定を変更しましょう。これらの設定は、メディアやテーマなどのファイルをWordPressサイトにアップロードする際のファイルサイズを制限します。デフォルトでは実用的なサイズではないので修正します。

それには、/etc/php.ini を編集します。

vi /etc/php.ini

「post_max_size」と「upload_max_filesize」の行を探して次のように修正します。修正が完了したらファイルを保存します。

変更する前のサイズは異なるかもしれません。また、この例では128Mに変更していますが、サイトの要件に合わせて修正してください。

# 変更前
post_max_size = 8M
  ↓
# 変更後
post_max_size = 128M

# 変更前
upload_max_filesize = 2M
  ↓
# 変更後
upload_max_filesize = 128M

次にインストールしたPHPを読み込むためWebサーバーを再起動します。

# systemctl restart httpd

最後に動作確認をします。以下のコマンドを実行して「phpinfo.php」ファイルを作成します。

# echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

Webブラウザから次のURLにアクセスします。

http://<IPアドレスまたはホスト名>/phpinfo.php

次のような画面が表示されれば、正常に動作しています。

phpinfo.phpの表示画面

確認できたらphpinfo.phpを削除します。PHPの情報が誰でも参照できてしまうのはセキュリティ上問題があるからです。

# rm /var/www/html/phpinfo.php

以上でPHPのインストールは完了です。

MySQLのインストール

MySQLのインストールについて、次の記事で詳しく説明していますので、そちらを参照してインストールを実施してください。

WordPressのインストール

さて、ここまで少し長かったですが、WordPressをインストールする下準備が出来ました。ここからがWordPress本体のインストールです。

データベースとユーザーの作成

はじめに、WordPressが利用するデータベースと、そのデータベースを操作するユーザー(アカウント)を作成します。

ユーザーとアカウントは同義の意味で使われることがありますが、この記事では今後、 ‘user_name’@’host_name’ の形式を「アカウント」、アカウントの user_name 部分を「ユーザー名」と呼び明確に区別します。

実際に作成する前に、あらかじめ次の事柄について決めておきましょう。ここでは次のような設定にします。

決めておく項目この例の設定
データベースの名前wordpress
データベースを操作するアカウント‘wpadmin’@’localhost’
アカウントのパスワードWpAdmin^2468$
アカウントの権限データベースwordpressに対するすべての操作を実行できる権限

mysql クライアントでMySQLサーバーへ接続して、WordPress用のデータベースを作成します。

# mysql -u root -p
mysql> CREATE DATABASE wordpress;

データベースが作成できたか確認します。

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+

アカウント(パスワードは’WpAdmin^2468$’)を作成し、データベースwordpressに関するすべての操作を実行できる権限を付与します。

mysql> CREATE USER 'wpadmin'@'localhost' IDENTIFIED BY 'WpAdmin^2468$';
mysql> GRANT ALL ON wordpress.* TO 'wpadmin'@'localhost';

MySQLサーバーとの接続を切ります。

mysql> exit

WordPressの配置

WordPressのパッケージをサーバーに配置していきます。

サイトを公開するURLの決定

WordPressを配置するにあたり、WordPressサイトをどのURLで公開するかを決める必要があります。それによってファイルを配置する場所が異なります。

サイトのルートで公開する場合は、ウェブサーバーのドキュメントルートにファイルを配置します。つまり、この場合は次のURLでWordPressサイトが公開されます(ドメインがexample.comの場合)。

http://example.com/

サブディレクトリでWordPressサイトを公開する場合は、ドキュメントルートにサブディレクトリ(この例の場合はblog)を作成して、そのディレクトリにファイルを配置します。この場合は次のURLでサイトが公開されます。

http://example.com/blog/

ここではWebサイトのルートで公開することにします。

パッケージのダウンロード

WordPressのパッケージを WordPress.org(日本語)のダウンロードページ からダウンロードします。ファイルは次のような「.tar.gz」形式のファイルをダウンロードします。

wordpress-X.X.X-ja.tar.gz

パッケージの配置

ダウンロードしたWordPressのパッケージをインストールするサーバーのディレクトに転送します。

ここではWebサイトのルートで公開するので、Apacheのドキュメントルートにファイルを転送します。Apacheのデフォルトのドキュメントルートは「/var/www/html/」です。FTPやSFTPなどを使って/var/www/html/ディレクトリにダウンロードしたWordPressのパッケージファイルを転送します。

ファイルを転送したらWebサーバーにログインし、ログインしたらドキュメントルートに移動します。ファイルがあることを確認して展開します。

# cd /var/www/html/
# ls
wordpress-6.2.2-ja.tar.gz
# tar xzvf wordpress-6.2.2-ja.tar.gz
wordpress/
wordpress/wp-login.php
wordpress/wp-cron.php
...

ファイルを展開するとwordpressディレクトリができ、その中に必要なファイルがあります。

# ls wordpress
index.php        wp-admin              wp-content         wp-load.php      wp-signup.php
license.txt      wp-blog-header.php    wp-cron.php        wp-login.php     wp-trackback.php
readme.html      wp-comments-post.php  wp-includes        wp-mail.php      xmlrpc.php
wp-activate.php  wp-config-sample.php  wp-links-opml.php  wp-settings.php

今回はWordPressサイトをルートで公開するので、wordpressディレクトリの中のすべてのファイルをドキュメントルートに移動します。

# mv wordpress/* /var/www/html/

Apacheのプロセスが適切にこれらのファイルにアクセスできるように、所有者と権限を修正します。

# chown -R apache:apache /var/www/html/
# chmod -R 755 /var/www/html/

Apacheをdnfコマンドでインストールした場合、Apacheのプロセスはapacheユーザーで実行されます。Apacheの設定ファイルを確認すれば、どのユーザーで実行されるか確認することができます。確認するには次のコマンドを実行します。

# grep -i '^User' /etc/httpd/conf/httpd.conf
User apache
# grep -i '^Group' /etc/httpd/conf/httpd.conf
Group apache

最後に、不要なファイルやディレクトリを削除します。

# rmdir wordpress
# rm wordpress-6.2.2-ja.tar.gz

wp-config.php

wp-config.php ファイルを作成して編集します。

この手順をスキップして、インストールスクリプトを実行して、WordPressにwp-config.php を作成させることもできます。

最初に wp-config.php ファイルを作成します。wp-config.phpを作成するためのサンプルファイル(wp-config-sample.php)が提供されているので、そのファイルをリネームして作成します。

# mv wp-config-sample.php wp-config.php

wp-config.php ファイルを編集していきます。

# vi wp-config.php

まず、ファイルの次の赤字部分を修正します。

// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name_here' );

/** Database username */
define( 'DB_USER', 'username_here' );

/** Database password */
define( 'DB_PASSWORD', 'password_here' );

/** Database hostname */
define( 'DB_HOST', 'localhost' );

/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );

/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

項目の意味と、この例で設定する値を次の表に示します。

項目説明設定値
DB_NAMEデータベースの名前wordpress
DB_USERデータベースを操作するユーザー名。アカウント(’wpadimin’@’localhost’)のユーザー名の部分を指定する。wpadmin
DB_PASSWORDデータベースを操作するアカウントのパスワード。WpAdmin^2468$
DB_HOSTデータベースサーバへ接続するアカウントの接続元ホスト名。アカウント(’wpadimin’@’localhost’)のホスト名の部分を指定する。localhost
DB_CHARSETデータベースの文字コード(文字セット)。utf8mb4
DB_COLLATE文字列を比較するときのルール(照合順序)。例えばソートするときに、文字列を比較して順序を決めるような場合に使用される。明示的に指定しない場合は、文字セット(DB_CHARSET)のデフォルトの照合順序が使用される。空文字列

DB_CHARSETについて補足します。MySQLインストールの参考リンクを紹介しましたが、その通りにMySQL 8.0 をインストールした場合、そのMySQLサーバーのデフォルトの文字コードは「utf8mb4」です。古いバージョンのMySQLは、デフォルトの文字コードが「utf8」でした。「utf8mb4」は「utf8」で使用できる文字に加えて、いわゆる4バイト文字もサポートします。そのため、この記事では「utf8mb4」を使用します。

編集後の内容は次のようになります。

// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );

/** Database username */
define( 'DB_USER', 'wpadmin' );

/** Database password */
define( 'DB_PASSWORD', 'WpAdmin^2468$' );

/** Database hostname */
define( 'DB_HOST', 'localhost' );

/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );

/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

次にいくつかのキーを設定します。これには長くて複雑なランダムな値を設定します。安全なキーを作成するために オンラインジェネレータ が用意されているので、これを利用するのがいいでしょう。ここで設定するキーはWordPressが内部的に利用するので、覚えておく必要はありません。

/**#@+
 * Authentication unique keys and salts.
 *
 * Change these to different unique phrases! You can generate these using
 * the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.
 *
 * You can change these at any point in time to invalidate all existing cookies.
 * This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
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' );

次のようにキーを設定します。

ここでの設定値は例ですので、ご自身で設定する場合はオンラインジェネレータで生成された値を設定してください。

define('AUTH_KEY',         'a;r^;Nuj2f,~J@L^TiEMDhoqirRgT-h`i77|013;{Pj6Wc kRTs/<28*etrvQXUg');
define('SECURE_AUTH_KEY',  'wUtPsqsHY(p_!}9k$?tgdM7G{Zhie=*qwDi+qjP>oUwIWx~?|PNeURm35r_>Q391');
define('LOGGED_IN_KEY',    'Q=kggRYZYEHwW`N80LHiia;pDZDr+-_dD_vNiIXHNm|/;UP&n%VM](--NdCRr;&b');
define('NONCE_KEY',        'm:3 ub3[+v&15zewF1iO$AvUn;{}q5hbNscdh4caMg5oMwpaw~b`y~LBVlM|dAU8');
define('AUTH_SALT',        '54!$fN$.Y_fJ|/%51ry R_=C4wiM5BM5kiOWx!6a+GE9?J2X*,I(m*Xcio4-a![v');
define('SECURE_AUTH_SALT', ' $t9^x/6}Db&k+A5Ez++Q+Tn!)g0Mw!|iFd;P8^A<gywrk.?Ct2P5sZ|0g|&+-HM');
define('LOGGED_IN_SALT',   ',3=[yU37wWE)8L|/i& Ofk2Z:BK0mqw;:xNp2sW-ZJ|^j:+qn6hn6]fZjP!]>mBh');
define('NONCE_SALT',       'w$/-4 %i/HqCgry29Xy5HuTu-Xb!0uCtR9vI(ca%4/2Ff?Y~WUh,9fp 5!c]C.c8');

以上で、wp-config.php ファイルの編集は終了ですので、ファイルを保存します。

インストールスクリプトを実行する

最後にインストールスクリプトを実行します。それにはブラウザで次のURLへアクセスします。

http://<IPアドレスまたはホスト名>/wp-admin/install.php

wp-config.php ファイルの作成をスキップした場合は、最初に次のページが表示されます。

wp-config.phpの作成画面

入力する項目のいくつかは前述のwp-config.phpのところで説明した内容と同じです。「テーブル接頭辞」は通常、デフォルトから変更する必要はありません。

表示された画面で値を入力していきます。

インストールスクリプトのWordPress情報入力画面

これらの項目はWordPressサイトで使用する情報です。後で変更することもできます。ただし、変更するにはログインできる必要がありますので、パスワードはメモしておきましょう。項目の意味は次のとおりです。

項目説明
サイトのタイトルサイトのタイトル
ユーザー名サイトのユーザー
パスワードユーザーのパスワード(ログインの際に必要)
メールアドレスサイトの管理者メールアドレス
検索エンジンでの表示チェックを入れると検索エンジンの検索結果に表示されなくなる

必要事項を入力したら「WordPress をインストール」ボタンをクリックします。すると次のような画面が表示されます。

インストールの完了画面

以上で、WordPressのインストールは完了です。「ログイン」ボタンをクリックすると、WordPressのログイン画面が表示されますので、先ほど入力したユーザー名とパスワードでログインします。

おわりに

WordPress本体のインスール自体は、それほど難しくは無かったと思います。しかし、本当に難しいのは、サーバー全体のセキュリティの設計です。この記事ではWordPressが動く最低限の設定しか施していませんが、インターネットに公開する場合は、十分な対策を実施しましょう。

WordPressのセキュリティについては次のサイトが参考になるでしょう。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

・PM、SE、SIなどを20年以上経験
・ネットワークスペシャリスト、セキュリティスペシャリストなど複数のIT国家資格を保有

目次