【高セキュリティ】baserCMSのUbuntuへのインストール

【高セキュリティ】baserCMSのUbuntuへのインストール サーバー

「セキュリティの高い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バージョンが固定されています。

OSPHP
Ubuntu 14.045.5
Ubuntu 16.047.0
Ubuntu 18.047.2
Ubuntu 20.047.4
Ubuntu 22.048.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モジュール

デフォルトでのモジュールの状況は、以下となっています。

モジュールパッケージ状況
GD2php-gd
libxmlphp-xml
cURLphp-curl
mbstringphp-mbstring
PDOphp-mysqlphp-pgsqlphp-sqlite3〇※DB毎にドライバーが必要
Zipphp-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が出た場合の対策についての説明をしました。

タイトルとURLをコピーしました