こんにちは。今回は、自宅のサーバーにa-blog cmsを導入してみました。
公式ドキュメントにはインストールの方法が詳細に掲載されていましたが、ApacheやMySQLなどミドルウェア周りの設定方法は載っておらず、手探りで設定していました。
つまづいた部分もありますので、手順を共有します。
a-blog cmsとは?という方はこちらをご参照ください。
環境
- OS:Red Hat Enterprise Linux release 9.4
- Apache:Apache/2.4.57
- PHP:v8.0.30
- MySQL:Ver 8.0.36
サーバーは、自宅PCにVirtualBOXをインストールし、その上に建てました。VirtualBOXをインストールしたのは昔過ぎて手順を忘れてしまったので、別の記事をご参照ください。別の方が書かれた記事ですが、以下の記事などが参考になると思います。
また、RHELなのでサブスクリプションマネージャーは登録しておきます。これがないとyumでパッケージがインストールできません。こちらは以下の記事が参考になると思います。
手順
それでは、構築手順を紹介します。以下の手順で行っていきます。
- 必要なパッケージのインストール
- 各種パッケージの設定
- OSの設定
- a-blog cmsのインストール
必要なパッケージのインストール
a-blog cmsを使うには、Webサーバ(Apache or Nginx)・PHP(バージョン指定に注意)・データベース(Mysql or MariaDB)が必要です。今回はApacheとPHPとMySQLを使いました。なお、Ver.3.0以前ではionCube Loaderも必要になるそうなので、バージョンによってはそちらもインストールしてください。
a-blog cmsのバージョンによってミドルウェアのバージョン指定がありますので、詳しくは公式の動作条件をご確認ください。
必要なパッケージを、yumでインストールします。
# yum -y install http* mysql* php*
後述しますがPHPは拡張モジュールが必要なので、ワイルドカードで一気にインストールしてしまいました。インストールしたら起動しましょう。
# systemctl start httpd php-fpm mysqld
# systemctl enable httpd php-fpm mysqld
各種パッケージの設定
インストールした各種パッケージの設定を行っていきます。
Apacheの設定
Apacheではhtaccessを使うため、以下の2つの設定が必要になります。
- RewriteEngineの有効化
- htaccessの利用許可(AllowOverride)
RewriteEngineの有効化
RewriteEngineのモジュールがインストールされているかと、有効化がされているか確認しましょう。
# find / | grep mod_rewrite.so
/usr/lib64/httpd/modules/mod_rewrite.so
もし出力がなければ、yumでインストールしましょう。
モジュールが有効化されているかどうかは、Apacheのコンフィグファイルを確認しましょう。私の環境では、有効化モジュールは00-base.confにまとまていました。
# cat /etc/httpd/conf.modules.d/00-base.conf | grep mod_rewrite.so
LoadModule rewrite_module modules/mod_rewrite.so
もし出力がなければ、本ファイルに追記してください。そもそもこのファイルがなければ、httpd.confに追記しましょう。
htaccessの利用許可(AllowOverride)
続いて、AllowOverrideの有効化です。こちらはhttpd.confを書き換えます。httpd.confに、以下の記載があると思いますので、 "AllowOverride None
" を、 "AllowOverride All" に書き換えましょう。書き換えた後は忘れずにApacheを再起動しましょう。
# vi /etc/httpd/conf/httpd.conf
<Directory "/var/www/html">
~中略~
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All //ここを"None"から"All"に変更
~中略~
</Directory>
# systemctl restart httpd
ここで注意点です。AllowOverrideはディレクトリーごとに分かれています。今回はドキュメントルートである"/var/www/html"を使用するので、<Directory "/var/www/html"> と </Directory> で囲まれたブロックの設定を変更しましょう。
PHPの設定
PHPに特別な設定は不要ですが、いくつかの拡張モジュールが必要です。インストール時にワイルドカードを指定したのですべてインストールされているとは思いますが、念のため確認しておきましょう。
# php -m
[PHP Modules]
apcu
// 以下略
たくさん出力があると思いますが、公式の動作条件に記載のあるモジュールが出力されていればオッケーです。なければyumでインストールしましょう。
MySQLの設定
続いてMySQLです。MySQLでは、いくつかの権限を持ったユーザーを作成しておく必要があります。DBやテーブルは、ユーザーさえ存在すればa-blog cmsインストール時に自動で作成してくれます。実はユーザーもrootを使うようにすれば作成の必要はないのですが、せっかくなので作成しておきましょう。
# mysql -u root -p
mysql> create user ablogcms@localhost identified by '任意のパスワード';
mysql> grant all privileges on *.* to ablogcms@localhost;
mysql> quit;
今回は、ablogcmsというユーザーを作成し、グローバルで全権限を与えました。権限を必要なものに絞ったり、先にDBを作成してDBにのみ権限を与えることもできますので、要件に合わせてやってみてください。
OSの設定
ミドルウェアの設定が終わったら、OSの設定も行います。
やるべきことは、SELINUXの無効化と、ドキュメントルートの権限設定です。
SELINUXの無効化
a-blog cmsのセットアップ中、PHPがインストーラーをダウンロードしてくるのですが、SELINUXが有効化されているとダウンロードできないため、無効化が必要です。コンフィグファイルを修正し、設定反映のためにOSを再起動しましょう。
# vi /etc/selinux/config
SELINUX=disabled //enforcing → disabledに変更
# shutdown -r now
ドキュメントルートの権限
前述の通り、a-blog cmsのセットアップ中にPHPがインストーラーをダウンロードしてきます。ダウンロードされたZIPファイルはドキュメントルートに格納され、解凍やリネームまで自動で行ってくれます。そのため、apacheユーザーにドキュメントルートの書き込み権限が必要です。今回は777権限を与えちゃいましょう。
# chmod -R 777 /var/www/html/
# ll /var/www/
合計 0
drwxr-xr-x. 2 root root 6 8月 6 22:10 cgi-bin
drwxrwxrwx. 2 root root 91 11月 4 17:03 html
a-blog cmsのインストール
設定が終わったので、いよいよインストールです。インストール方法は公式ドキュメントに詳しく載っています。今回は "簡単セットアップ" を使う方法でインストールしました。
こちら(公式ドキュメント)の下部にある"簡単セットアップ"をダウンロードし、ZIPを解凍し、 "setup.php" だけサーバのドキュメントルート(今回は"/var/www/html")に格納します。
"setup.php" の中身は特に編集不要ですが、インストールしたいバージョンを指定する場合は、最上部の変数 "$ablogcmsVersion" のコメントアウトを外し、任意のバージョンに設定すれば良いみたいです。
// ------------------------------
// a-blog cms 3.1.x 簡単セットアップ
// last update 2024/05/17
// ------------------------------
$ablogcmsVersion = '3.1.0'; //ここをダウンロードしたいバージョンにする
// ERROR になる場合や個別に 3.0.x系のバージョンを
// 指定したい場合には、バージョンを設定してください。
//
// 2.x のバージョンについては 2.x系の簡単セットアップをご利用ください。
その後、ブラウザでこのファイルにアクセスします。任意のブラウザで "http://***(サーバのIPアドレス)/setup.php" を入力し、アクセスしましょう。ここまでの設定ができていれば、セットアップの画面が出てくるはずです。
「セットアップ開始」をクリックし、あとは公式ドキュメントのセットアップ手順通り進めていけばOKです。途中、データベースのユーザー・パスワードを指定する欄がありますが、先ほど作成したユーザーの情報を入力しましょう。
ハマったポイント
構築でハマったポイントを2つ共有します。
①SELINUXの無効化
最初、SELINUXを無効化せずに進めていました。そうすると、setup.phpを開いたときに以下のようなエラーが発生しました。
PHPは触ったことがなかったのですが、手探りでソースコードを読んだりしていろいろ調べていくと、PHPがa-blogcmsのインストールパッケージをダウンロードする部分でエラーになっていることが分かりました。
バージョンごとのダウンロードURLを指定してそこからダウンロードするコードになっていたのですが、ダウンロードに失敗しているようです。
- URLが間違ってるのかな?と思いブラウザでアクセスしたら問題なくダウンロード可能
- OSのFWの問題か?と思いcurlを叩いてみるも通信可能。
- wgetしてみても問題なくダウンロードできている。
何が原因なのか・・・と小一時間格闘し、SELINUXがダウンロードを封じていたことに気が付きました。
SELINUXは色々悪さをするという噂を聞いていましたが、、それを身をもって実感できる良い経験でした。
②AllowOverrideの有効化
先ほども記述しましたが、httpd.confの設定項目 "AllowOverride" はディレクトリーごとに分かれています。今回はドキュメントルートである"/var/www/html"を使用するので、<Directory "/var/www/html"> と </Directory> で囲まれたブロックの設定が必要ですが、私はこれを <Directory /> と </Directory> のブロックだけ設定してしまっていました。
そのため、htaccessが有効化されておらず、セットアップ完了後にサイト自体にはつながるけど、/loginのページにつながらないという現象が発生しました。
httpd.confの設定を正しく修正したところ、問題なくログインページにもアクセスできるようになりました。
まとめ
今回は、a-blog cmsのインストールをしてみました。Linuxサーバーにインストールする手順は探しても昔の記事しか見つからず、手探りでしたが何とかインストール完了しました。
この記事が皆さんのお役に立てば幸いです。
最後まで読んでいただき、ありがとうございました。