目次

この記事の目次です。

1. ロリポップ、エックスサーバーに近い環境について
2. VirtualBoxにCentOS7をインストール
3. Apache(Apache 2.4)のインストール
4. PHP(PHP7)のインストール
5. MySQLのインストール
6. SSL対応のためのソフトウェアインストール
7. レンタルサーバ環境と合わせたパス等の設定
8. ドメイン毎の設定
9. WordPressを新規構築する場合
10. WordPressの移行する場合
11. 実メモリの不足を補うスワップの拡張方法

更新履歴

1. ロリポップ、エックスサーバーに近い環境について

WordPressを利用したサイトはレンタルサーバーを契約していることが多いですが、 テストを行う際に、同じレンタルサーバーを契約してもサブドメインになったり、サブディレクトリになったりと、 正確なリリースが求められたり、影響のある修正を行う際にテスト環境として不都合が出てきますね。

ここでは、ローカルに無料でWordPressのテストサイトを構築する方法を紹介いたします。 レンタルサーバーなどを契約せずにレンタルサーバーで構築するよりも実サイトに近い環境でテストが行えると思います。 私の取引経験から、ロリポップとエックスサーバーが多かったので、ロリポップとエックスサーバーを想定したテストサイト環境の作り方を記載しています。

事前調査

2020年7月時点ではロリポップのサーバではOSにLinuxの一つのCentOSを使用していると記載されていました。 また、エックスサーバーは公表はしていませんが、操作した感じからCentOSもしくはCentOSに近い環境を使用していました。

実際には、バージョンを合わせたり、インフラ構成や各ソフトウェアの設定などいろいろ合わせる必要がありますが、 CentOSのテスト環境を構築することで、より実際の環境に近いテストサイトが構築できると思います。

CentOSとは

CentOSとは、CentOSとは、無料で利用できるLinuxです。 商用でメジャーなLinuxであるRedHat Enterprise Linuxと同じソースコードを元にまとめられています。 無料で利用できるだけでなく商用でメジャーなRedHat互換で、自宅サーバや開発用だけではなく、商用環境としても利用されています。

lolipop!(ロリポップ)

lolipop!(ロリポップ)は、利用者が多い共用レンタルサーバーの一つです。 管理画面がやさしく初めての方におすすめです。 lolipop!(ロリポップ)の利用方法をテーマに、無料独自SSL、FTPアクセス制限、SSHの設定などの情報をまとめています。

詳細

Xserver(エックスサーバ)

Xserverは利用者が多いレンタルサーバーの一つです。 WordPressのサイトで100万PVが目指せるだけのリソースを割り当ててくれます。

詳細

レンタルサーバー

レンタルサーバーは、サーバーをレンタルするサービスです。lolipop、heteml、cpi、xserver、sakuraなど、各種レンタルサーバーの利用方法について利用者の立場で解説しています。

詳細

2. VirtualBoxにCentOS7をインストール

この記事では、CentOS7の構築手順を紹介していきます。 CentOSのインストール例として、Oracle VM VirtualBoxにCentOS7をインストールします。

VirtualBoxとは

VirtualBoxとは、Oracle社のクロスプラットフォームな仮想化ソフトウェアです。 VirtualBoxとは何かをテーマに仮想マシン作成からOSのインストールしてホストオンリーでSSL接続する例など簡単な使い方をまとめています。

詳細

3. Apache(Apache 2.4)のインストール

CentOS7にApacheをインストールしていきます。

Apacheのインストール

Apacheをインストールします。rootで作業していきます。

# yum -y install httpd

httpd サービスの自動起動設定

CentOS7を再起動しても自動でApacheが起動されるように設定します。

# systemctl enable httpd

httpd サービスを開始

Apacheを起動します。

# systemctl restart httpd

Firewall穴あけ

外からアクセスできるようにhttpとhttpsのポートを解放します。

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

4. PHP(PHP7)のインストール

CentOS7にPHPをインストールしていきます。

EPELリポジトリのインストール

# yum -y install epel-release

Remiリポジトリのインストール

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

PHP7.xのインストール

PHP7のマイナーバージョン別のインストール手順です。

PHP7.0をインストールする場合

# yum remove php* -y
# yum --enablerepo=remi,remi-php70 install php php-devel pcre-devel php-posix php-ssh2 php-mysqlnd php-gd php-xml php-xmlrpc php-mbstring php-mcrypt php-fpm php-opcache php-apcu -y --skip-broken

PHP7.2をインストールする場合

PHP7.2をインストールする場合の例は以下です。

# yum remove php* -y
# yum --enablerepo=remi,remi-php72 install php php-devel pcre-devel php-posix php-ssh2 php-mysqlnd php-gd php-xml php-xmlrpc php-mbstring php-mcrypt php-fpm php-opcache php-apcu -y --skip-broken

PHP7.3をインストールする場合

PHP7.3をインストールする場合の例は以下です。libargon2を先にインストールしておきます。

# yum install --disablerepo=* --enablerepo=epel libargon2
# yum remove php* -y
# yum --enablerepo=remi,remi-php73 install php php-devel pcre-devel php-posix php-ssh2 php-mysqlnd php-gd php-xml php-xmlrpc php-mbstring php-mcrypt php-fpm php-opcache php-apcu -y --skip-broken

確認

PHP7がインストールされているか確認します。

# php -v

php-fpmの自動起動設定

php-fpmの自動起動の設定を行います。

# systemctl enable php-fpm

php-fpmの再起動

php-fpmの再起動を行います。

# systemctl restart php-fpm

php-fpmプロセスの確認

# ps -aef | grep php-fpm

5. MySQLのインストール

CentOS7にMySQLをインストールしていきます。

MariaDBの削除

MariaDBの削除します。

# yum remove mariadb-libs
# rm -rf /var/lib/mysql/

yumリポジトリ追加

mysql公式のリポジトリを追加します。

MySQLのYumリポジトリを使用するための方法

Yumを使用してLinuxにMySQLをインストールするにはMySQLのYumリポジトリを使用します。MySQLのYumリポジトリを使用するための方法をまとめています。

詳細

MySQLインストール

MySQLをインストールします。

# yum -y install mysql-community-server

自動起動設定

自動起動設定を行います。

# systemctl enable mysqld.service
MySQL起動

MySQLを起動します。

# systemctl start mysqld.service
初期のrootパスワード確認

初期のrootパスワードは/var/log/mysqld.logに出力されます。

[Note] A temporary password is generated for root@localhost: <初期のrootパスワードの出力>
基本的なセキュリティ設定

mysql_secure_installationを使用して基本的なセキュリティ設定を行います。

# mysql_secure_installation

6. SSL対応のためのソフトウェアインストール

SSL対応のためのソフトウェアインストールします。 インターネットに公開されないテストサイトのため、ブラウザにエラーが表示されますが、httpsのURLに対応できるようにしていきます。

# yum -y install mod_ssl

7. レンタルサーバ環境と合わせたパス等の設定

エックスサーバーやロリポップなどレンタルサーバーに合わせたディレクトリパスでテストサイトが表示できるようにしていきます。

OSのユーザ/グループ作成

OSアカウントを作成します。

# useradd -g apache -m <追加OSアカウント名> -d <ホームディレクトリのパス>
# passwd <追加OSアカウント名>
# chmod 750 <ホームディレクトリのパス>

PHP用のディレクトリ作成

PHP用のディレクトリを作成します。

su <OSアカウント名>
mkdir -p <ホームディレクトリのパス>/log/php-fpm
mkdir -p <ホームディレクトリのパス>/lib/php/session
mkdir -p <ホームディレクトリのパス>/tmp

Apacheの設定

/etc/httpd/conf/httpd.confの最下部あたりに以下を追記します。

IncludeOptional conf.site/*.conf

上記で個別サイトの設定を別ファイルで定義できるようにします。

PHP-FPMの設定

次にサイト用のPHPの設定を行います。 デフォルトの/etc/php-fpm.d/www.confをコピーして/etc/php-fpm.d/<追加OSアカウント名>.confを作成し、ポート番号9001、OSアカウント名(<追加OSアカウント名>)でPHPを実行する例です。

[example]
:
user = <追加OSアカウント名>
:
group = apache
:
listen = 127.0.0.1:9001
:
php_admin_value[error_log] = <ホームディレクトリのパス>/log/php-fpm/www-error.log
:
php_value[session.save_path]    = <ホームディレクトリのパス>/lib/php/session
:

8. ドメイン毎の設定

レンタルサーバーのようにアカウントにぶら下がるイメージでドメインの設定を行っていきます。

ホームページ公開領域の設定

サイトのWeb公開領域を作成します。 ホームディレクトリからアクセスしやすいようにシンボリックリンクも作っておきます。 以下ではエックスサーバーのパス構成を例に設定していきます。

su <追加OSアカウント名>
mkdir -p <ホームディレクトリのパス>/<ドメイン名>
mkdir -p <ホームディレクトリのパス>/<ドメイン名>/public_html

自己証明のSSLサーバ証明書の設定

httpsで表示できるように自己証明のSSLサーバ証明書を作成していきます。

秘密鍵の作成

秘密鍵を作成します。

# mkdir /etc/httpd/conf.site
# mkdir /etc/httpd/conf.site/ssl
# openssl genrsa 2024 > /etc/httpd/conf.site/ssl/<ドメイン名>.key

CSR作成

CSRを作成します。ドメイン名を合わせることだけ意識すれば後は適当で大丈夫です。

# openssl req -new -key /etc/httpd/conf.site/ssl/<ドメイン名>.key > /etc/httpd/conf.site/ssl/<ドメイン名>.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Chuo-Ku
Organization Name (eg, company) [Default Company Ltd]:test
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:<ドメイン名>
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

サーバ証明書の作成

サーバ証明書を作成します。

openssl x509 -req -days 3650 -signkey /etc/httpd/conf.site/ssl/<ドメイン名>.key < /etc/httpd/conf.site/ssl/<ドメイン名>.csr > /etc/httpd/conf.site/ssl/<ドメイン名>.crt

Apacheの設定

個別ファイルの例は以下です。 常時https化やレスポンスヘッダの設定は.htaccessでも設定できるようになっています。

ここでは、/etc/httpd/conf.site/<ドメイン名>.confファイルを作成しています。 PHPをポート番号デフォルトとは異なる9001で連携する設定になっているところがポイントになります。

<VirtualHost *:80>
    ServerName <ドメイン名>
    DocumentRoot <ホームディレクトリのパス>/<ドメイン名>/public_html/
    CustomLog /var/log/httpd/<ドメイン名>_access_log common
    ErrorLog  /var/log/httpd/<ドメイン名>_error_log
    RewriteEngine on
    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
    RewriteRule .* - [F]

    <Directory <ホームディレクトリのパス>/<ドメイン名>/public_html/>
        Options  FollowSymLinks
        AllowOverride All
        Require all granted

        <FilesMatch "\.php$">
            SetHandler application/x-httpd-php
            SetHandler "proxy:fcgi://127.0.0.1:9001"
        </FilesMatch>
    </Directory>
</VirtualHost>

<VirtualHost *:443>
    ServerName <ドメイン名>
    DocumentRoot <ホームディレクトリのパス>/<ドメイン名>/public_html/
    CustomLog /var/log/httpd/<ドメイン名>_ssl_access_log common
    ErrorLog  /var/log/httpd/<ドメイン名>_ssl_error_log

    SSLEngine on
    SSLProtocol -all +TLSv1.2
    SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS:!3DES
    SSLHonorCipherOrder On
    SSLCertificateFile /etc/httpd/conf.site/ssl/<ドメイン名>.crt
    SSLCertificateKeyFile /etc/httpd/conf.site/ssl/<ドメイン名>.key

    RewriteEngine on
    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
    RewriteRule .* - [F]

    <Directory <ホームディレクトリのパス>/<ドメイン名>/public_html/>
        Options  FollowSymLinks
        AllowOverride All
        Require all granted

        <FilesMatch "\.php$">
            SetHandler application/x-httpd-php
            SetHandler "proxy:fcgi://127.0.0.1:9001"
        </FilesMatch>
    </Directory>
</VirtualHost>

PHPとApacheの再起動

PHPとApacheを再起動して設定反映します。

systemctl restart php-fpm
systemctl restart httpd

※SELINUXを利用している場合は別途設定が必要です。SELINUXを設定しない場合は/etc/selinux/configで「SELINUX=disabled」にしてゲストOSを再起動する必要があります。

ApacheとPHPの動作確認

ApacheとPHPの動作確認を行っていいきます。

ホストOSのhostsファイルの編集

本来はインターネット上のDNSサーバでドメインとサーバを紐づけていますが、ホストOS内で完結した検証環境になりますので、hostsファイルにて、ドメイン名と検証環境の紐づけを行います。 hostsファイル利用時は検証環境でのみドメインが利用できるようになりますので、本番環境を表示する場合はhostsファイルをもとに戻す必要があります。

Windowsの場合はhostsファイルは「C:\Windows\System32\drivers\etc\hosts」にあります。 あらかじめプロパティで編集権限を設定する必要があります。 本手順を進めた場合、ゲストOSのIPは「192.168.56.101」になりますので、設定例は以下になります。

192.168.56.101 <ドメイン名>

ドメインのpublic_htmlにテストコンテンツ配置

たとえば、以下のコードを記述したtest.phpを配置して、表示確認していきます。

<?php
echo "ドメイン名"
?>

ブラウザでhttpsにアクセスした場合のエラー解除方法

自己証明書を使用しているためhttpsでアクセスした場合、証明書エラーが発生します。 詳細を開いて危険を承知して表示するを選択する操作を行ってエラーを解除します。 以下はFirefoxの解除の例です。

ブラウザでhttpsにアクセスした場合のエラー解除方法

詳細を開いて「危険性を承知で続行」をクリックします。

詳細を開いて「危険性を承知で続行」

9. WordPressを新規構築する場合

WordPressの新規構築方法について見ていきます。

WordPressの新規構築の概要

WordPressの新規構築の概要は以下です。

  1. WordPress パッケージをダウンロードして、解凍
  2. サーバー上に、WordPress 用のデータベースと、そのデータベースへの全アクセス権・編集権を持つ MySQL ユーザーを作成
  3. wp-config-sample.php ファイルの名前を wp-config.php に変更
  4. テキストエディタでwp-config.phpを開き、wp-config.phpファイルの編集記事の説明に従いデータベース情報と秘密鍵の値を記入
  5. サーバー上の希望の場所に、WordPress ファイルを設置
  6. ドメインルート (http://example.com/ など) に WordPress を置きたいときは、解凍した wordpress ディレクトリの中身 (wordpress ディレクトリ自体を除く全ファイル) をサーバーのルートディレクトリへアップロード
  7. ウェブサイト上の WordPress 用サブディレクトリ (http://example.com/blog/ など) に WordPress を設置したいときは、解凍した wordpress フォルダを好きなサブディレクトリ名に変更し、丸ごとサーバーのルートにアップロード
  8. ブラウザで wp-admin/install.php へアクセスし、インストールスクリプトを実行
  9. ルートディレクトリに設置したなら: http://example.com/wp-admin/install.php
  10. blog というサブディレクトリに設置したなら: http://example.com/blog/wp-admin/install.php

参考URL)http://wpdocs.osdn.jp/WordPress_のインストール

インストール方法の詳細は以下の記事にまとめています。

WordPressのインストール方法

WordPressのインストール方法についてまとめています。

詳細

10. WordPressの移行する場合

WordPressの移行方法についてです。 SSHに対応したサーバで、mysqldumpを使用してWordPressのデータベースをバックアップする例です。

mysqldumpとは

mysqldumpは、MySQL(もしくはMariaDB)のデータベースをバックアップするコマンドです。 MySQL内に保存されたデータベース定義やデータをSQL文の形式で出力してくれます。

WordPressのデータベースをバックアップする例

WordPressは、MySQLのデータベースに投稿などのデータを保管します。

以下はSSHに対応したサーバで、mysqldumpを使用してWordPressのデータベースをバックアップする例です。

SSHでWordPressが動作するサーバーへ接続

まずはTeratermなどのSSHクライアントを使用して、WordPressが動作するサーバーへSSHで接続します。

WordPressが使用するデータベースの確認

以下のようにしてWordPressが使用するデータベースの接続先が確認できます。

cat <wp-config.phpの配置パス> | grep DB

mysqldumpでバックアップを出力しファイルに保存

以下のようにしてmysqldumpでバックアップを出力しファイルに保存できます。

mysqldump -h <DB_HOST> -u <DB_USER> -p <DB_NAME> > <保存ファイルのパス(例 xxx.dump)>

WordPressのデータベースを移行(リストア)する例

今度はWordPressのデータベースを移行(リストア)する例です。 mysqldumpで出力されたダンプはMySQLのデータベースを操作するSQL文で出力されますので、mysqlコマンドでSQL文を実行することで移行(リストア)が行えます。

リダイレクトを使用してインポートする例

コマンドライン(シェル)のリダイレクト(<)を使用してインポートが行えます。

mysql -h <DB_HOST> -u <DB_USER> -p <DB_NAME> < <保存ファイルのパス(例 xxx.dump)>

sourceを使用してインポートする例

mysqlコマンドでmysqlに接続してsourceを使用してインポートが行えます。

mysql -h <DB_HOST> -u <DB_USER> -p <DB_NAME>
MySQL> source <保存ファイルのパス(例 xxx.dump)>

URLやパスが異なる場合

テストサイトと本番サイトでURLやパスが異なる場合はデータベースの変更が必要です。 Search-Replace-DB-masterというツールでデータベースの変更が行えます。

Search-Replace-DB-master

Search-Replace-DB-masterは、WordPressのデータベースのURLやパスの文字列を別のものに置き換えてくれるツールです。

詳細

11. 実メモリの不足を補うスワップの拡張方法

実メモリの不足を補うスワップの拡張方法について紹介いたします。

スワップ領域

作業PC内のテスト環境など少ないリソース環境でメモリが不足する場合があります。 その際の対処方法の1つにスワップの拡張があげられます。 スワップ領域とは何か、centos7のswap拡張方法(mkswap、swaponコマンド)について解説しています。

詳細

更新履歴

更新履歴になります。

トップ手順・方法WordPressテストサイト