「セキュリティの高いCMSを探している」
「WordPress以外のCMSでサイト制作を行いたい」
このような場合には、baserCMSがオススメです。
この記事では、国産CMSのbaserCMSのインストールを解説しています。
本記事の内容
- baserCMSとは?
- baserCMSのシステム要件
- baserCMSのダウンロード
- baserCMSのインストール
- baserCMSの動作確認
- Not Foundが出た場合の対策
それでは、上記に沿って解説していきます。
baserCMSとは?
baserCMS(ベーサーシーエムエス)とは、国産のCMSです。
CMSと言えば、WordPressで十分だという意見があるでしょう。
実際、私もそう思います。
しかし、そのWordPressには大きなデメリットがあります。
人気過ぎるがゆえに、世界レベルで脆弱性が発生するという点です。
WordPress本体に加えて、プラグインでも脆弱性がしばしば見つかります。
その脆弱性を突かれて、サイトがハッキングされることもあります。
上記記事では、実際にサイトが乗っ取りにあったことを説明しています。
その場合の脆弱性は、問い合わせフォーム用のプラグインにあったと思われます。
まだまだ探せば、WordPressのセキュリティリスクはたくさん見つかるでしょう。
そのような状況だからこそ、baserCMSのようなCMSが重要になってくるのです。
baserCMSは、ドキュメントもコメントも日本語で書かれています。
その時点で海外からのセキュリティリスクを軽減できます。
そもそも、baserCMSは知名度や影響力の点から狙われないということもあるでしょう。
つまり、海外のハッカーからすると狙う価値がないということです。
さきほど出てきたフォームについては、baserCMSでは基本機能として備わっています。
わざわざ、WordPressのようにプラグインで導入する必要性がありません。
これだけでもセキュリティリスクを下げることができています。
フォームは、情報を書き込む時点でセキュリティホールになりやすいです。
その機能が、本体に備わっているのはセキュリティの側面からも好ましいと言えます。
ながながと書きましたが、最も言いたいのは以下です。
「セキュリティを重視するなら、baserCMSは選択肢の一つである」
あと、baserCMSはCakePHPで開発されています。
そのため、CakePHPの経験があるなら、カスタマイズはやりやすいでしょう。
以上、baserCMSについて説明しました。
次は、baserCMSのシステム要件を説明します。
baserCMSのシステム要件
現時点(2022年7月末)でのbaserCMSの最新バージョンは、4.6.2となります。
この最新バージョンは、2022年7月27日にリリースされています。
メンテナンスは、頻繁に実施されていることが確認できます。
その意味では、安心して利用することができると言えます。
この4系が動くシステム要件としては、以下のモノが記載されています。
システム要件
https://basercms.net/about/system
Webサーバー | Apache |
開発言語 | PHP7.4(推奨) |
データベースサーバー | MySQL5以降PostgreSQL8.4以降SQLite3MariaDB動作可能 |
必須Apacheモジュール | Rewrite |
必須PHPモジュール | GD2、libxml、cURL、mbstring、PDO |
推奨PHPモジュール | Zip |
項目として分けると以下のようになります。
- Webサーバー
- 開発言語
- データベースサーバー
- Apacheモジュール
- PHPモジュール
それぞれを下記で説明します。
Webサーバー
Apacheについては、とにかく最新版をインストールしましょう。
最新版のインストールを薦める理由は、次の記事にあります。
そして、Ubuntuへの最新版Apacheのインストール方法は次の記事で解説しています。
baserCMSは、コーポレートサイト作成で利用されることが想定されています。
そのため、セキュリティリスクは最小限にしておく必要があります。
開発言語
PHP7.4が推奨とされています。
そもそも、baserCMSの開発自体がPHP7.4で行われているようです。
おそらく、PHP 8系でも動くとは思います。
でも、PHP 7.4にしておくのが無難です。
したがって、余程の事情がない限りはPHP 7.4をインストールしましょう。
ただ、UbuntuにおけるデフォルトのPHPバージョンには注意が必要です。
Ubuntuでは、各バージョン毎にPHPバージョンが固定されています。
OS | PHP |
Ubuntu 14.04 | 5.5 |
Ubuntu 16.04 | 7.0 |
Ubuntu 18.04 | 7.2 |
Ubuntu 20.04 | 7.4 |
Ubuntu 22.04 | 8.1 |
Ubuntu 20.04であれば、何も考えずにインストールしても構いません。
何も考えないとは、バージョン指定もなしで以下のようにPHPをインストールできるということです。
sudo apt install php
それ以外の場合は、PPAを利用しましょう。
PPAの利用方法は、次の記事で説明しています。
PPAを利用して、次のようにバージョン指定でインストールを実行します。
sudo apt install php7.4
これでPHP 7.4をインストールできます。
データベースサーバー
SQLite3以外であれば、何でもよいと思います。
それ以外のデータベースの検索ボリュームのトレンドは、以下のような状況です。
やはり、まだまだMySQLが強いですね。
いずれを選択したとしても、各DBは最新版をインストールしましょう。
Ubuntuへの各DBのインストールは、以下を参考にしてください。
Apacheモジュール
デフォルトでは、Rewriteは有効ではありません。
そのため、Rewriteを有効化する必要があります。
Rewriteの有効化については、次の記事で解説しています。
PHPモジュール
デフォルトでのモジュールの状況は、以下となっています。
モジュール | パッケージ | 状況 |
GD2 | php-gd | |
libxml | php-xml | |
cURL | php-curl | |
mbstring | php-mbstring | |
PDO | php-mysqlphp-pgsqlphp-sqlite3 | 〇※DB毎にドライバーが必要 |
Zip | php-zip |
モジュールのインストール状況は、以下のコマンドで確認できます。
$ php -m [PHP Modules] calendar Core ctype date exif FFI fileinfo filter ftp gettext hash iconv json libxml openssl pcntl pcre PDO Phar posix readline Reflection session shmop sockets sodium SPL standard sysvmsg sysvsem sysvshm tokenizer Zend OPcache zlib [Zend Modules] Zend OPcache
もしくは、phpinfoの結果を利用して確認する方法もあります。
$ php -i | grep 'GD' $ php -i | grep 'libxml' libxml $ php -i | grep 'cURL' $ php -i | grep 'mbstring' Multibyte decoding support using mbstring => disabled $ php -i | grep 'PDO' PDO PDO support => enabled PDO drivers => $ php -i | grep 'Zip'
デフォルトでは、PDOのみが有効化されています。
ただし、それぞれのデータベース用のドライバーがない状態です。
今回は、以下コマンドを実行してインストールを行います。
$ sudo apt install -y php-gd $ sudo apt install -y php-xml $ sudo apt install -y php-curl $ sudo apt install -y php-mbstring $ sudo apt install -y php-zip $ sudo apt install -y php-mysql
インストールが完了したら、Apacheを再起動しておきます。
$ sudo systemctl restart apache2
インストール後にモジュールの状況を確認した結果は、以下。
$ php -i | grep 'GD' GD Support => enabled GD headers Version => 2.2.5 GD library Version => 2.2.5 $ php -i | grep 'libxml' libxml Version => 2.9.10 libxml libxml2 Version => 2.9.10 libxslt compiled against libxml Version => 2.9.10 $ php -i | grep 'cURL' cURL support => enabled cURL Information => 7.68.0 $ php -i | grep 'mbstring' /etc/php/7.4/cli/conf.d/20-mbstring.ini, Zend Multibyte Support => provided by mbstring Multibyte decoding support using mbstring => enabled mbstring mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1. mbstring.detect_order => no value => no value mbstring.encoding_translation => Off => Off mbstring.func_overload => 0 => 0 mbstring.http_input => no value => no value mbstring.http_output => no value => no value mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text/|application/xhtml\+xml) mbstring.internal_encoding => no value => no value mbstring.language => neutral => neutral mbstring.regex_retry_limit => 1000000 => 1000000 mbstring.regex_stack_limit => 100000 => 100000 mbstring.strict_detection => Off => Off mbstring.substitute_character => no value => no value $ php -i | grep 'PDO' PDO PDO support => enabled PDO drivers => mysql PDO Driver for MySQL => enabled $ php -i | grep 'Zip' Zip => enabled Zip version => 1.15.6
PHPモジュールは、必須・推奨とすべて有効化されました。
以上、baserCMSのシステム要件を説明しました。
次は、baserCMSのダウンロードを説明します。
baserCMSのダウンロード
baserCMSダウンロード
https://basercms.net/download/index.html
baserCMSのダウンロードは、上記ページから可能です。
「ダウンロード」ボタンをクリックすれば、ダウンロードが開始されます。
ダウンロードが完了したら、ZIPファイルを解凍します。
解凍すると、「basercms」ディレクトリが作成されます。
この中身は、次のような状態です。
$ tree -a -L 1 ./basercms ./basercms ├── .editorconfig ├── .github ├── .htaccess ├── INSTALL.md ├── LICENSE ├── app ├── apple-touch-icon-precomposed.png ├── css ├── favicon.ico ├── files ├── img ├── index.php ├── js ├── lib ├── theme └── vagrant 9 directories, 7 files
注意すべき点は、隠しファイルが存在するということです。
以上、baserCMSのダウンロードを説明しました。
次は、baserCMSのインストールを説明します。
baserCMSのインストール
システム要件さえ整えば、baserCMSのインストールは簡単と言えます。
先ほどダウンロードして解凍したモノを設置するだけです。
baserCMSは、サブディレクトリでも機能します。
でも、通常はルートディレクトリに設置することになります。
Apacheのデフォルト状態であれば、「/var/www/html」がルートディレクトリです。
ここに展開した「basercms」以下を隠しファイル含めて移動します。
つまり、以下の構成になるということです。
$ tree -a -L 1 /var/www/html /var/www/html ├── .editorconfig ├── .github ├── .htaccess ├── INSTALL.md ├── LICENSE ├── app ├── apple-touch-icon-precomposed.png ├── css ├── favicon.ico ├── files ├── img ├── index.php ├── js ├── lib ├── theme └── vagrant 9 directories, 7 files
この状態でブラウザでアクセスします。
今回は、IPアドレスが「192.168.33.202」のサーバーにbaserCMSをインストールしています。
よって、ブラウザで「http://192.168.33.202/」へアクセス。
「インストール開始」ボタンをクリック。
クリックして、次のようにNot Foundが出る場合があります。
この場合の対策方法は、後述の「Not Foundが出た場合の対策」をご覧ください。
正常に遷移した場合は、次のような画面が表示されます。
システム要件のチェックをしてくれています。
ここで赤文字があれば、それを解決しましょう。
赤い項目がなくなれば、ボタンを押せるようになります。
「次へのステップへ」ボタンをクリック。
このステップでは、データベースの設定を行います。
MySQLのログイン情報については、不明な場合は次の記事をご覧ください。
また、データベースについても事前に作成する必要があります。
データベースの作成についても上記の記事内で説明しています。
オプションについては、デフォルトのままでよいでしょう。
設定が終わったら、データベースへの接続テストを行います。
「接続テスト」ボタンをクリック。
接続が成功したら、次のように表示されます。
成功した場合、「次のステップへ」ボタンが表示されています。
「次のステップへ」ボタンをクリック。
この画面では、特に注意点はありません。
値を入力して、「完了」ボタンをクリック。
これで、baserCMSのインストールが完了です。
ただ、メールアドレスにメールなんて届いていません。
そもそも、メールサーバーの設定なんてしていません。
その設定は、後ほど管理画面でできるでしょう。
以上、baserCMSのインストールを説明しました。
次は、baserCMSの動作確認を説明します。
baserCMSの動作確認
インストール完了画面には、次のようなリンク一覧が表示されています。
「管理者ダッシュボードに移動する」リンクをクリック。
すでにログインした状態でダッシュボードに移動します。
次は、一般ユーザーが見る画面を確認します。
画面左上にある以下をクリック。
クリックすると、サイトのトップに遷移。
ここまで確認できれば、動作確認としては十分でしょう。
以上、baserCMSの動作確認を説明しました。
Not Foundが出た場合の対策
Not Foundが出る理由としては、二つ考えられます。
- .htaccessが存在しない
- .htaccessが有効化されていない
それぞれを下記で説明します。
.htaccessが存在しない
隠しファイルである.htaccessも含めてコピーするようにしてください。
.htaccess
Allow from all RewriteEngine on #RewriteBase / RewriteRule \.(ico|map)$ - [L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php [QSA,L]
.htaccessが有効化されていない
ApacheモジュールのRewriteを有効化しただけの状態かもしれません。
Rewriteを有効化しただけでは、.htaccessが有効化されません。
.htaccessが適切に機能するための方法を以下で解説しています。
以上、Not Foundが出た場合の対策についての説明をしました。