VPS,オンプレでEvolutionCMSを動かす

公開日:2021年08月17日
最終更新日:2021年09月28日
レベル:★★★☆☆
オンプレミスサーバ、仮想マシン、VPSなどにEvolution CMSをセットアップする方法を紹介します。

「Evolution CMS」というCMS(コンテンツ・マネジメント・システム)があります。
「MODX」の発展形(?)の位置付けなのでしょうか、MODXと同様に非常に扱いやすいCMSです。
「Evolution CMS」としては2017年に1.3.0がリリースされたように比較的新しいCMSに位置付けられます。

また、Evolution CMSには2021年8月現在「1系(バージョン1.x.x.)」と「3系(バージョン3.x.x.)」があります。
「1系」は「MODX Evolution」の流れから発展してきたもの、「3系」はLaravelフレームワークをベースとした新しい構成のもののようです。

今回はEvolution CMS「1系」の基本的なインストール〜セットアップ方法を紹介します。
(以降に表記している「Evolution CMS」はすべて「Evolution CMS 1系」を指しています。)
インストール自体はMODXとほとんど同様ですので、MODXをインストールしたことがある方であれば戸惑う箇所はないでしょう。

本章ではオンプレミスサーバ、仮想マシン、VPSなどにCentOS7をOSとしてLAMPサーバを構築し、その上にEvolution CMSをセットアップしていくことを前提とします。

ベースLAMPサーバのセットアップ

次のページを参考に、CentOS7 をOSとしたLAMPサーバ(Linux, Apache, MySQL, PHP)を構成します。

CMS用にLAMPサーバを構築する(CentOS7編)

上記でセットアップしたPHPに加え、オプションとして下記を追加インストールしておきます。

# yum install php-gmp php-curl php-intl php-xmlrpc php-zip

================================================================================
 Package           アーキテクチャー
                               バージョン                 リポジトリー     容量
================================================================================
インストール中:
 php-gmp           x86_64      7.4.22-1.el7.remi          remi-php74       79 k
 php-intl          x86_64      7.4.22-1.el7.remi          remi-php74      237 k
 php-pecl-zip      x86_64      1.19.3-2.el7.remi.7.4      remi-php74       62 k
 php-xmlrpc        x86_64      7.4.22-1.el7.remi          remi-php74       90 k
依存性関連でのインストールをします:
 libicu65          x86_64      65.1-1.el7.remi            remi-safe       9.2 M
 libzip5           x86_64      1.8.0-2.el7.remi           remi-safe        64 k
 libzstd           x86_64      1.5.0-1.el7                epel            370 k

トランザクションの要約
================================================================================
インストール  4 パッケージ (+3 個の依存関係のパッケージ)

総ダウンロード容量: 10 M
インストール容量: 34 M
Is this ok [y/d/N]: y

Dockerの「php:7.4-apache」を利用する場合、次のようにGDとZIPのオプションを追加するようにDockerfileに追記しておきます。

 :
RUN apt-get update \
  && apt-get install -y less wget \
  libmcrypt-dev openssl \
  mariadb-client \
  libonig-dev \
  iputils-ping net-tools dnsutils \
  libzip-dev \
  # Install GD
  libfreetype6-dev libjpeg62-turbo-dev libwebp-dev \
  && docker-php-ext-install pdo_mysql mysqli iconv zip
RUN pecl install mcrypt-1.0.3
RUN docker-php-ext-enable mcrypt
RUN docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ --with-webp
RUN docker-php-ext-install -j$(nproc) gd
 :

MySQLのSQLモードの確認・変更

MySQLの設定によってはEvolution CMSのインストール時にエラーとなることがあります。この原因の1つに、MySQLのSQLモード(strict mode)の設定状態があります。以下の手順で使用するMySQLの状態を事前に確認してみます。

ターミナルよりMySQLにログインし、以下を実行します。

mysql> SELECT @@GLOBAL.sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@GLOBAL.sql_mode                                                                                                     |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

このような表示になっていたらMySQLが厳格な制限モードになっています。他のシステムへの影響も考慮して適切な状態に変更する必要があります。

他のシステムへの影響がなければ、MySQLの設定ファイル(/etc/my.cnf など)を次のように変更します。

sql_mode='' <---- この行を追加する

MySQLを再起動します。

systemctl restart mysqld

再度MySQLにログインし、SQLモードの状態を確認します。

mysql> select @@GLOBAL.sql_mode;
+-------------------+
| @@GLOBAL.sql_mode |
+-------------------+
|                   | <---- 反映されている
+-------------------+
1 row in set (0.00 sec)

Evolution CMS用データベースの作成

Evolution CMSで使用するデータベースを作成します。
以下の例では、MySQLにEvolution CMS用データベースを「evocms_db」の名前で作成します。
Evolution CMS用データベースを作成する前に、専用のMySQLユーザを「evouser」の名前で事前に作成しておきます。

ターミナルよりMySQLに接続します。
今回はMySQLユーザ「root」で接続します。
下の例のように「mysql>」のプロンプトが返ってきたら接続完了です。

  • 下の例で入力するrootユーザのパスワードはMySQLのrootユーザのものです。OSのrootユーザのパスワードではないので注意しましょう。
# mysql -u root -p
Enter password: <------------------- MySQLユーザ「root」のパスワードを入力
Welcome to the MySQL monitor.  Commands end with ; or \g.
 :
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Evolution CMSデータベースを操作するためのMySQLユーザを作成します。
次の例ではユーザ名を「evouser」パスワードを「userevo」としていますが名前・パスワードはお好みで。

mysql> create user 'evouser'@'localhost' identified by 'userevo';
Query OK, 0 rows affected (0.03 sec)

Evolution CMSデータベースを作成します。
次の例ではデータベース名は「evocms_db」としています(名前は任意で可)。
デフォルトの文字コード「utf8mb4」とソート順「utf8mb4_general_ci」を指定しておきます。

mysql> create database evocms_db default character set utf8mb4 COLLATE utf8mb4_general_ci;
Query OK, 1 row affected (0.03 sec)

Evolution CMSデータベースを操作できるユーザへ権限を付与します。
権限は厳密に設定しても良いでしょうが、「all」でも大丈夫です。

mysql> grant all on evocms_db.* to 'evouser'@'localhost' with grant option;
Query OK, 0 rows affected (0.02 sec)

正しく設定されているか確認してみます。

mysql> show databases;
+------------------------+
| Database               |
+------------------------+
| information_schema     |
| evocms_db              | <------ 表示されること
| mysql                  |
| performance_schema     |
| sys                    |
+------------------------+
5 rows in set (0.00 sec)

mysql> select user,host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| evouser          | localhost | <---- 表示されること
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

mysql> show grants for 'evouser'@'localhost';
+---------------------------------------------------------------------------------+
| Grants for evouser@localhost                                                 |
+---------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `evouser`@`localhost`                                  |
| GRANT ALL PRIVILEGES ON `evocms_db`.* TO `evoser`@`localhost` WITH GRANT OPTION |
+---------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

一旦MySQLを切断して、作成したEvolution CMSユーザで再度接続してみます。

mysql> quit <------------------------------ 切断する
Bye

# mysql -u evouser -p <-------------------- 「evouser」で接続
Enter password: <-------------------------- 「evouser」のパスワードを入力
Welcome to the MySQL monitor.  Commands end with ; or \g.
 :
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           | <------------------- 利用できるデータベースのみ表示される
+--------------------+
| information_schema |
| evocms_db          | <------------------- Evolution CMS用データベースが表示されること
+--------------------+
2 rows in set (0.00 sec)

mysql> quit <------------------------------ 切断

さくらのサーバでEvolution CMS用データベースを作成する場合、「レンタルサーバコントロールパネル」にて次のように作成することができます。
その際、データベース文字コードには「UTF-8(utf8mb4)」を指定します。

最新版Evolution CMSの入手

次のページから最新のEvolution CMSのプログラムファイルを入手します。

HOME / Evolution CMS

入手したEvolution CMSのプログラムファイルをサーバに送る方法は省略します。
ローカルでzipファイルを取得〜展開し、FTP/SFTPを利用してサーバへアップロードしても、サーバにSSHでログインしてzipファイルを取得〜展開してもどちらでも構いません。

入手したEvolution CMSのプログラムファイルをウェブサーバの公開ディレクトリへ移動します。

CentOS7 のApacheの初期設定状態であれば、「/var/www/html」がドキュメントルートですが、今回は「/var/www」ディレクトリ直下に「evo」ディレクトリを作成し、その直下にEvolution CMSのファイル類を配置し、「/var/www/evo」を新たなドキュメントルートとします。

VPS,オンプレサーバの場合、「/var/www/evo」ディレクトリの所有者とグループを共に「apache」に変更します。

# chown -R apache:apache /var/www/evo

.htaccessの設定

Evolution CMSのディレクトリに入り、サンプルとして入っている.htaccessファイル「ht.access」を正規の名前に変更します。

# mv ht.access .htaccess
  • Evolution CMSをドキュメントルートにインストールするのではなく、サブディレクトリにインストールする場合、.htaccessファイルに「RewriteBase /サブディレクトリ名」を設定する必要があります。

SELinuxの設定

CentOS 7 ではSELinuxがデフォルトで有効になっています。このままではコピーしたRevolution CMSファイルへのSELinuxの書き込み権限がないためインストールがうまくいきません
次の例では、「var/www/evo」ディレクトリにSELinuxの書き込み権限を付与する例を示します。

  • ファイルの書き込み権限は上記手順で「apache」ユーザ・グループに付与済みです。
  • セキュリティ上SELinuxを無効にすることはなるべく避けましょう。

 semanageコマンドがインストールされているかどうかを確認。
インストールされていなければ「CentOS 7 の基本設定:基本ソフトウェアのインストール」を参考にインストールしておきます。

# which semanage
/usr/sbin/semanage

現在の「/var/www/evo」のSELinuxファイル権限を確認します。
操作前は「/var/www/evo」ディレクトリのファイル権限は「httpd_sys_content_t:s0」になっているはずです。

# ls -Z /var/www
 :
drwxr-xr-x. apache apache system_u:object_r:httpd_sys_content_t:s0 evo

「/var/www/evo」ディレクトリのファイル権限を「httpd_sys_rw_content_t」(httpdデーモンが当該コンテンツの読み書きを可能にする)に変更します。

# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/evo(/.*)?"

設定を反映します。反映結果が以下に表示されます。

# restorecon -RFv /var/www/evo*
 :
pd_sys_content_t:s0->system_u:object_r:httpd_sys_rw_content_t:s0

再度「/var/www/evo」のSELinuxファイル権限を確認。
今度は「httpd_sys_rw_content_t:s0」になっていることを確認。

# ls -Z /var/www
 :
drwxr-xr-x. apache apache system_u:object_r:httpd_sys_rw_content_t:s0 evo

DocumentRootの変更

今回、「http://サーバ名/」でアクセスすることでEvolution CMSのコンテンツが参照できるように設定しますので、ApacheのDocumentRootをEvolution CMSをインストールしたディレクトリに変更します。

  • 「http://サーバ名/evo/」でアクセスできるようにしたい場合は、現在のドキュメントルート(初期設定では「/var/www/html」)以下にEvolution CMSプログラムファイルを配置するか、Apacheでエイリアスを設定します。

以下の例では。Apacheの設定ファイル「/etc/httpd/conf/httpd.conf」を編集してDocumentRootを「/var/www/evo」に変更します。
※.変更箇所は4箇所あります。

# vi /etc/httpd/conf/httpd.conf
----------------------------------------------------------------------
 :
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
#DocumentRoot "/var/www/html" <---------------- 先頭に「#」をつけてコメントアウト
DocumentRoot "/var/www/evo" <----------------- 「/var/www/modx」に設定
 :
# Further relax access to the default document root:
#>>> Edited by K'z Style
#<Directory "/var/www/html"> <----------------- 先頭に「#」をつけてコメントアウト
<Directory "/var/www/evo"> <------------------ 「/var/www/modx」に設定
 :
    #AllowOverride None <------------------------------ 先頭に「#」をつけてコメントアウト
    AllowOverride AuthConfig Limit Options FileInfo <-- 追記(AllowOverreide Allでも可)
 :
<IfModule dir_module>
    #DirectoryIndex index.html <----------------------- 先頭に「#」をつけてコメントアウト
    DirectoryIndex index.php index.html <-------------- 追記(index.phpを追加)
</IfModule>
 :
----------------------------------------------------------------------

設定ファイルをチェックします

# httpd -t
Syntax OK <------------------------- これが返ってきたらOK

Apacheをリロードします(再起動でも可)。

# systemctl reload httpd

セットアップの実行

ブラウザで「http://サーバ名/」にアクセスしてみます。

次のページが表示されればOKです。
install now?」をクリックしてEvolution CMS自体のセットアップを開始しましょう。

言語が「Japanese」であることを確認し、[進む]をクリックします。

[進む]をクリックします。