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 がない場合に発生する事象であることを突き止めて頂きました。私じゃぁ絶対こんな短時間でたどり着けなかったです。心より御礼申し上げます。 こんど東京いらした時に、お肉、ご招待します!