baserCMS 4.3.3を新規サーバに入れるメモ(MySQL8.0使用)

baserCMS を初めてインストールしたのですが、細かいところで色々ハマったので、記録として書いておきます。
basercms.net

環境

 さくらインターネットで借りているVPS に、Ubuntu 18.04 amd64 をインストール。
 ドメイン名は別途持っているものがあったので、予めこのサーバにDNS設定で向けておく(ここでは svr1.example.com とする)。
 準備が出来たら、ubuntuユーザでログインして、いざ Go!

基本設定

 rootユーザで作業せずに コマンドごとに sudo で実行するのが流儀っぽいけど、ここではroot作業が続くので
sudo su - しちゃう。 よい子のみなさんは、上品な行動を心がけてくださいね。

ファイアウォール
# ufw status
Status: inactive

 で確認して、inactiveだったので、有効化して、22,80,443番を開けておく。

# ufw enable 
# ufw allow 22
# ufw allow 80
# ufw allow 443

 結果、良い感じ。22が開いているのでもう大丈夫と思うけど、念のため、いま作業中とは別のsshセッションをもうひとつ、新たに張れることを確認(その後の作業でも使うので、そちらのコネクションも開けっぱなしで)。

# ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere                  
80                         ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
22 (v6)                    ALLOW       Anywhere (v6)             
80 (v6)                    ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)        
アップデート
# apt update
# apt upgrade -y 
その他基本的なもののインストール
# apt install nmap zip postfix -y 

Apache インストール

# sudo apt install apache2 apache2-bin apache2-data libapache2-mod-wsgi -y
# sudo a2enmod ssl 
# sudo a2enmod headers
# sudo systemctl restart apache2

Apacheの設定をしておく。

~# vi /etc/apache2/sites-available/000-default.conf 

        DocumentRoot /var/www/html の下に以下のブロックを追加
        <Directory /var/www/html>
          Options FollowSymlinks
          AllowOverride All
          AddType text/html .html
          AddType text/html .htm
          Require all granted
        </Directory>

 設定に書き誤りがないことを確認。

# apachectl configtest
Syntax OK

 ドメイン用の設定

# cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/svr1.example.com.conf 
# vi !$
                DocumentRoot /var/www/html の下に先ほどと同じブロックを追記
/etc/apache2/sites-available# a2ensite svr1.example.com
Enabling site svr1.example.com.
To activate the new configuration, you need to run:
  systemctl reload apache2
# systemctl restart apache2 

ssl

# apt install software-properties-common certbot python-certbot-apache -y
# apt update
# systemctl restart apache2  

 以下、色々質問に答えていく。重要なポイントは httpをhttpsにリダイレクトする(2)と答えるところ。

#certbot --apache -d study01.wazawosi.com 

MySQL

 MySQLの最新リポジトリのURLを確認しておく。それを wget
https://dev.mysql.com/downloads/repo/apt/

# wget https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb
# sudo dpkg -i ./mysql-apt-config_0.8.15-1_all.deb 
# apt update
# apt install mysql-server

いよいよ baserCMS

 必要なツールとライブラリ群のインストール。

# apt install php libapache2-mod-php php-mysql -y
# apt install php7.2-mbstring php7.2-gd php7.2-xml -y

 MySQLの設定。baserが使うデータベースとユーザを作成。baserの現バージョンではゼロ日付を使用している部分が残っているようなので、NO_ZERO_DATE 系のSQLモードを外しておくべし。あと、MySQL 8.0 の強力な(新しい)パスワードシステムだと php からアクセスできないので、 native_password でユーザを作ることもポイント。

$ mysql -uroot -p 
mysql> CREATE DATABASE baser;
mysql> CREATE USER baseruser@localhost IDENTIFIED WITH mysql_native_password by 'baserpass';                                  
mysql> GRANT ALL ON baser.* TO baseruser@localhost;

mysql> SHOW VARIABLES LIKE 'SQL_MODE';
+---------------+-----------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                                                 |
+---------------+-----------------------------------------------------------------------------------------------------------------------+
| sql_mode      | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+---------------+-----------------------------------------------------------------------------------------------------------------------+

 ※ NO_ZERO_IN_DATE,NO_ZERO_DATE を抜いた残りのモードをセット

mysql> SET GLOBAL sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';           

 ようやく baser を取ってきて、展開、配置。

$ wget https://basercms.net/packages/download/basercms/latest_version -O baser_latest.zip
$ unzip baser_latest.zip
# cp basercms/ /var/www/html/baser -r


 今回、実際はあとから変更したのだけど(忘れていた)、オーナーも変えておくが吉。

# pwd
/var/www/html
# sudo chown -R www-data.www-data baser/

ブラウザで https://study01.wazawosi.com/baser/ にアクセス

インストーラを進めると、フォルダのパーミッション設定について指示されるので対応する。

# cd /var/www/html/baser/                                                                                    
# chmod 777 app/Config/ app/Plugin/ app/tmp app/View/Pages/ files theme img css js

 めでたく baserCMS がインストールされました。あとはブラウザから baserの各種管理機能を使ってあれこれ遊べますね。

ポイント

 

  • baserCMSは、phpのmbstringが入っていないと、ブラウザで開いても最初のインストール画面すら出て来ない(今回はサブフォルダに配置しましたが、そこにアクセスすると、ドメインのトップページに飛ばされてしまった)。予め必要なライブラリは分かっている(この日記に書いている)ので、apt で入れておくのが吉
  • MySQL 8.0 は以前のバージョンに比べていろいろストリクトになっています。ゼロ日付を入れられないとか、ユーザ認証が堅牢になったとか。この日記に書いているとおり、SQLモードを変更することと、ユーザ作成の際にnative_password で作るようにすることさえ守ればOK。
  • うまく動かない時に、いろいろ検索して、いくつかのファイルを書き換えたりしてみたけど、結局、どこも書き換える必要はなかった。baserは 2,3,4 と色々な情報が混在しているので、検索したときには注意。

お礼

 ブラウザで最初の画面すら出ないときに、キャッチアップの江頭さんには大変お世話になりました。手取り足取り、だけでなく、手も足も出してくださって、mbstring がない場合に発生する事象であることを突き止めて頂きました。私じゃぁ絶対こんな短時間でたどり着けなかったです。心より御礼申し上げます。 こんど東京いらした時に、お肉、ご招待します!

追記 2020/08/13

 別の環境にインストールしようとしたときに、rewrite モジュールが必要になったので、もしかしたら最初から必要だったのかも(詳細は今回追っていない)。

# a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
systemctl restart apache2<<