見出し画像

PowerCMS X のサーバー作成からインストールまで


PowerCMS X を試用してみたい方に設定の流れを作ってみました。
安価なさくらのVPSを利用すれば(2週間のお試し期間があります)、とてもお手軽です。気に入って利用を続けても月額費用が安いので、安心して利用ができます。 PowerCMS X の評価版は問い合わせフォームから申し込みをしてください。「お問い合わせ種別」に「評価版のお申込み」のチェックを入れて送信してください。

※ 本記事は取りあえず PowerCMS X が動作すれば良いという視点で書いていますので、サーバーセキュリティや PowerCMS X の各種設定については考慮していません。トラブルが起きても一切の保証はできないので自己責任でお願いします。

サーバーの作成

最初にサーバーの作成からスタートします。さくらのVPSでサーバーを作りましょう。サーバーの設定から開始できると思います。(先にさくらの会員IDを発行してログインしておく必要があります。)
512MBプランは横スクロールで隠れているので気をつけてください。

  • Rocky Linux 9

  • 512MBプラン

  • 月額 671円

  • CPU仮想 1Core

  • メモリ 512MB

  • SSD 25GB

  • リージョン 大阪第3

「管理ユーザーのパスワード」を設定して「お支払い選択へ」進みます。
次の画面で「2週間お試し」を選択して内容に問題がなければ「お支払いを確定する」ボタンをクリックします。
申込みが完了すると、「サーバー一覧」画面に進みますが、サーバーはすぐにできないので、数分待つとリストに表示されます。

名前の箇所をクリックして、サーバー詳細を表示します。
「電源操作」から「起動する」を選ぶとサーバーが起動します。
「パケットフィルター設定」タブをクリックして、「パケットフィルターを設定」ボタンをクリックします。
「パケットフィルター設定を追加する」ボタンをクリックするとポートの設定ができますので、下記キャプチャのようにWebとメール設定をします。

最後に「設定を保存する」ボタンを押しましょう。

「基本情報」タブの中に「ホスト名」の情報がありますので、これがウェブのアドレスであり、SSHの接続先になります。
例 os3-123-12345.vs.sakura.ne.jp

PCでコンソールソフトを起動して、SSHしてみます。パスワードは最初に設定した「管理ユーザーのパスワード」です。

// 例
ssh rocky@os3-123-12345.vs.sakura.ne.jp

管理者になります。

sudo su

コンソールの先頭に「#」が付いたと思います。

Swap の設定

作業中にメモリ不足になるため swap の設定をします。下記はディスク容量から 3GB を割り当てる設定です。

dd if=/dev/zero of=/var/swap bs=1M count=3072
chmod 600 /var/swap
mkswap /var/swap
swapon /var/swap
echo "/var/swap swap swap defaults 0 0" >> /etc/fstab

swap の設定内容は下記の記事を参照してください。

Apache のインストール

Apacheをインストールします。

dnf install httpd

途中に表示されるメッセージは「y」で進みます。

起動と確認をします。

// 起動
systemctl start httpd

// 確認
systemctl status httpd

Active: active (running) と表示されれば成功です。

httpd.conf を開き「.htaccess」有効化します。

vi /etc/httpd/conf/httpd.conf

<Directory "/var/www/html">の中にある AllowOverride None を All にします。

    AllowOverride All

httpd をリスタートします。

systemctl restart httpd

ホスト名(例 http://os3-123-12345.vs.sakura.ne.jp)の情報でウェブブラウザにアクセスできると思います。https ではなく、http でアクセスしてください。「HTTP Server Test Page」が表示されたら成功です。

HTTP Server Test Page

試しにドキュメントルートにファイルを作成してみましょう。

vi /var/www/html/index.html

中身はなんでもよいです。再度アクセスすると表示されたと思います。確認できたらファイルは削除しておきましょう。

rm -rf /var/www/html/index.html

今後のために html フォルダは apache ユーザーで777 にしましょう。

chown apache: /var/www/html
chmod 777 /var/www/html

自動起動設定をします。

systemctl enable httpd

確認します。enabled と表示されたら成功です。

systemctl is-enabled httpd

結果
enabled

PHPのインストール

dnf -y install php

PHPのバージョンを確認します。

php -v

Rocky Linux 9 は PHP 8.0 がインストールされると思います。それでよければ、読み続けてください。もし、PHP 8.2、8.3 を利用される場合は以下の記事を参考に設定をお願いします。

モジュールをインストールします。

dnf -y install php-mbstring
dnf -y install php-dom
dnf -y install php-libxml
dnf -y install php-pdo
dnf -y install php-json
dnf -y install php-simplexml
dnf -y install php-gd
dnf -y install php-zip
dnf -y install php-mysqli

httpd を再起動して、php を実行できるようにします。

systemctl restart httpd

自動起動設定をします。

systemctl enable php-fpm

確認します。enabled と表示されたら成功です。

systemctl is-enabled php-fpm

結果
enabled

MySQLのインストール

dnf install mysql mysql-server --allowerasing --nobest

バージョンを確認します。

mysql --version

私は mysql Ver 8.0.32 でした。
mysqld を起動して確認します。

// 起動
systemctl start mysqld

// 確認
systemctl status mysqld

Active: active (running) と表示されれば成功です。
続けて root ユーザーのパスワード設定をします。下記のコマンドを実行して対話式で進めて行きます。

mysql_secure_installation

下記のように順番に進めればOKです。「パスワード」と書いてある箇所は「8文字以上 + 数字・アルファベットの大文字と小文字・特殊文字を含む」で設定してください。
「Re-enter new password」入力の後はすべて「y」で進みます。

Press y|Y for Yes, any other key for No:y
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:1
New password:パスワード
Re-enter new password:パスワード
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :y
Remove anonymous users? (Press y|Y for Yes, any other key for No) :y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) :y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) :y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) :y

入力を終えると以下のメッセージが表示されます。

Success.

All done!

対話式の内容は「mysql_secure_installation」で検索すれば詳細に記載しているページが見つけられると思います。

自動起動設定をします。

systemctl enable mysqld

確認します。enabled と表示されたら成功です。

systemctl is-enabled mysqld

結果
enabled

Postfix のインストール

以下のコマンドでインストールをします。最後に main.cf を開きます。

dnf -y install postfix
systemctl enable postfix
cp -p /etc/postfix/main.cf /etc/postfix/main.cf.original_bk
vi /etc/postfix/main.cf

設定する箇所です。これらの設定は既にファイル内に存在していて、先頭に「#」が付いていたら削除して有効にします。「ホスト名」の部分は正しい情報を入力してください。(ホスト名の例 os3-123-12345.vs.sakura.ne.jp)

mydomain = ホスト名
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks_style = localhost
mynetworks = localhost
home_mailbox = Maildir/

最後に postfix を restart します。

systemctl restart postfix

自動起動設定をします。

systemctl enable postfix

確認します。enabled と表示されたら成功です。

systemctl is-enabled postfix

結果
enabled

サーバーからメール送信のコマンドを実行することはできますが、おそらく受信できないと思います。hoge.vs.sakura.ne.jp のドメインは SPF レコードの設定がされていないからです。メールを送信させたいなら独自ドメインを取得しましょう。

サーバー証明書の設定

さくらのVPSが提供している「hoge.vs.sakura.ne.jp」でもサーバー証明書の設定が可能です。以下の記事を参考に設定をお願いします。

zip と unzip をインストール

運用で必要になるので、インストールしておきます。

dnf install zip unzip

bind-utils をインストール

コマンドラインから DNS を dig, nslookup, host で調査することがあるので、インストールしておきます。

dnf install bind-utils

インストールが終わると以下のコマンドが利用できます。

dig powercmsx.jp
nslookup powercmsx.jp
host powercmsx.jp

ベーシック認証の設定

誰でもウェブサイトにアクセスできる状態になっているので、ベーシック認証を設定しましょう。

vi /var/www/html/.htaccess

サンプルです。

AuthUserFile /var/www/.htpasswd
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user

パスワードを設定します。あらかじめ、ID/パスワード生成サイトで作っておきましょう。

vi /var/www/.htpasswd

IDが test で、パスワードも test の場合は以下になります。とりあえず何でもよいなら…。

test:OHoErIkOIxX4o

ホスト名の情報でウェブブラウザにアクセスするとベーシック認証が動作したと思います。

phpMyAdminのインストール

phpMyAdmin はGUIでデータベースを操作できるアプリケーションです。
phpMyAdmin サイトにアクセスします。
サイト右上の「Download 5.x.x」ボタンを押下して、「click here」を右クリックして、「リンクのアドレスをコピー」を選択するとダウンロードURLを取得できます。勝手に自身のPCにデータがダウンロードされたら、それは無視してください。

リンクのアドレスをコピー

コンソールの作業です。html フォルダに移動します。

cd /var/www/html

curl コマンドで -O オプションとコピーしたURLを繋げて実行します。

curl -O <コピーしたURL>

ダウンロードを確認したらリネームして解凍します。
以下のコマンドはワイルドカードで指定しているので、そのままコピペで使えます。
解凍後は ZIP ファイルを削除して、所有者・グループを設定します。

確認
ll

解凍
unzip phpMyAdmin-*-all-languages.zip

ZIPファイルを削除
rm -f phpMyAdmin-*-all-languages.zip

リネーム
mv phpMyAdmin-*-all-languages phpMyAdmin

所有者・グループを設定
sudo chown -R apache:apache phpMyAdmin

確認
ll

ブラウザで、http://[ホスト名]/phpMyAdmin/index.php にアクセスします。ログイン画面が表示されたら成功です。

phpMyAdmin ログイン画面

ユーザー名は root で、パスワードは MySQL の時に設定した値でログインできます。

PowerCMS X の準備

PowerCMS X のデータをSFTPでアップします。
SFTPはユーザー名「rocky」で、アドレスはホスト名で繋がります。

ホームディレクトリ(/home/rocky)に PowerCMS X のデータをアップします。PowerCMS X ファイルは「PowerCMSX.zip」で進めます。
次に /var/www/html 直下にファイルを移動します。

管理者になります
sudo su

ファイルを移動
mv /home/rocky/PowerCMSX.zip /var/www/html/

html フォルダに移動して、PowerCMS X ファイルを解凍します。

html フォルダに移動
cd /var/www/html

解凍
unzip PowerCMSX.zip

解凍後に zip ファイルを削除
rm -f PowerCMSX.zip

確認
ll

結果
drwxrwxr-x  3 root   root   4096 Aug 22 10:41 PowerCMSX

解凍後は PowerCMSX のディレクトリができていますので、全ファイル apache にしましょう。

chown -R apache:apache PowerCMSX

PowerCMSX ディレクトリに移動します。

cd /var/www/html/PowerCMSX

フォルダの中身を確認すると「 powercmsx」フォルダが存在しています。

確認
ll

結果
drwxrwxr-x 19 apache apache 4096 Aug 22 10:36 powercmsx

「 powercmsx」フォルダの中にプログラムファイルを「PowerCMSX」フォルダの直下に移動します。

mv powercmsx/* .

移動したら、「powercmsx」フォルダを削除します。

rmdir powercmsx

「PowerCMSX」の中にプログラムファイルが配置できたと思います。

確認
ll /var/www/html/PowerCMSX/

結果
total 1152
drwxrwxr-x  2 apache apache   4096 Aug 22 10:41 alt-tmpl
drwxrwxr-x  2 apache apache   4096 Sep 15  2023 api
drwxrwxr-x 13 apache apache   4096 Sep 15  2023 assets
drwxrwxr-x  2 apache apache   4096 Aug 22 10:41 assets_c
drwxrwxr-x  2 apache apache   4096 Aug 22 10:41 cache
-rw-rw-r--  1 apache apache 746356 Aug 22 10:36 class.Prototype.php
-rw-rw-r--  1 apache apache    957 Jun 18 16:44 config.json-original.json
-rw-rw-r--  1 apache apache    431 Sep 15  2023 db-config.php-original.php
drwxrwxr-x  2 apache apache   4096 Aug 22 10:40 docs
-rw-rw-r--  1 apache apache 299772 Sep 15  2023 favicon.ico
-rw-rw-r--  1 apache apache    291 Jun 18 16:45 _htaccess
drwxrwxr-x  2 apache apache   4096 Aug 22 10:41 import
-rw-rw-r--  1 apache apache    340 Sep 15  2023 index.php
-rw-rw-r--  1 apache apache    253 Sep 15  2023 info.php
drwxrwxr-x 14 apache apache   4096 Sep 15  2023 lib
drwxrwxr-x  2 apache apache   4096 Aug  6 10:12 locale
drwxrwxr-x  2 apache apache   4096 Aug 22 10:41 log
drwxrwxr-x 63 apache apache   4096 Aug 22 10:40 plugins
-rw-rw-r--  1 apache apache    565 Sep 15  2023 preload.php
-rw-rw-r--  1 apache apache  32080 Aug  6 10:12 pt-check.php
drwxrwxr-x  2 apache apache   4096 Sep 15  2023 site
drwxrwxr-x  2 apache apache   4096 Aug 22 10:41 support
drwxrwxr-x  5 apache apache   4096 Sep 15  2023 themes
drwxrwxr-x  5 apache apache   4096 Sep 15  2023 theme-static
drwxrwxr-x  8 apache apache   4096 Jun 18 16:45 tmpl
drwxrwxr-x  3 apache apache   4096 Jun 18 16:45 tools

config.json-original.json と db-config.php-original.php をリネームします。

mv config.json-original.json config.json
mv db-config.php-original.php db-config.php

db-config.php を開きます。

vi db-config.php

パスワードの行をデータベースで設定したパスワードに書き換えて保存します。

define( 'PADO_DB_PASSWORD', 'xxxxxxxxxxxx' );

データベースの照合順序を指定します。MySQL 8 なら下記の設定です。
末尾に追記してファイルを保存してください。

define( 'PADO_DB_COLLATION', 'utf8mb4_general_ci' );

php.ini の設定

アップロードできるファイルの最大サイズを大きくするため、php.ini を編集します。max_input_vars の推奨値は2000以上にします。  先頭に ; が付いているので削除しましょう。

vi /etc/php.ini

// 設定箇所
post_max_size 16M
upload_max_filesize 16M
max_input_vars = 2000  ← 先頭の「;」は削除

php-fpm を再起動して修正内容を反映します。

systemctl restart php-fpm

config.json のアクセス拒否設定

PowerCMSX フォルダ内にある config.json へのHTTPアクセスを拒否する設定をします。

sudo vi /etc/httpd/conf/httpd.conf

以下の設定を末尾に追記します。

# PowerCMS X
<Directory /var/www/html/PowerCMSX>
  <Files ~ "\.(log|json)$">
    Require all denied
  </Files>
</Directory>

設定を保存した後、Apache を再起動して変更を反映させます。

systemctl restart httpd

フラッシュ(flush()) の設定

システム出力バッファをフラッシュ(flush())する設定をします。

vi /etc/httpd/conf/httpd.conf

以下の設定を末尾に追記します。

<Proxy unix:/run/php-fpm/www.sock|fcgi://localhost>
    ProxySet flushpackets=on flushwait=20
</Proxy>

設定を保存した後、Apache を再起動して変更を反映させます。

systemctl restart httpd

tmp ディレクトリの設定

config.json に環境変数 'temp_dir' に '/tmp' 以外のパスを指定します。
デフォルトは、temp_dir に /tmp が設定されているので、フォルダ /var/www/tmp を作成して設定しましょう。
work_dir も同様の設定で大丈夫です。

フォルダを作成
mkdir /var/www/tmp
chmod 777 /var/www/tmp

編集
vi /var/www/html/PowerCMSX/config.json

書き換える
        "temp_dir" : "/var/www/tmp",
        "work_dir" : "/var/www/tmp",

PowerCMS X システムチェック(pt-check.php)

ブラウザで pt-check.php にアクセスします。

<自分のドメイン>/PowerCMSX/pt-check.php

以下のメッセージが表示されますが、無視して大丈夫です。

いくつかの推奨設定を満たしていませんが、PowerCMS Xをインストールできます。

MySQLへの接続に成功しました。データベース'powercmsx'を作成しました。

アップロードできるファイルの最大サイズは約16MBです。

memcached が有効ではありません。この拡張モジュールは必須ではありません。
normalizer が有効ではありません。この拡張モジュールは必須ではありません。

コマンド'/usr/local/bin/lftp'をPHPから実行できません。必須ではありませんが、プラグイン'Mirroring'がこれを必要とします。
コマンド'/usr/local/bin/estcmd'をPHPから実行できません。必須ではありませんが、プラグイン'SearchEstraier'がこれを必要とします。
PowerCMS X システムチェック

PowerCMS X のインストールを開始

画面下部の「インストールを開始する」ボタンを押下します。

インストールを開始する

システムの設定

インストールに必要な以下の情報を入力します。
(入力内容は後から変更できます)

  • システムのメール(メールアドレスと同じ値)

  • ユーザー名(英文字もしくはメールアドレスと同じ値)

  • パスワード

  • パスワード (確認)

  • メールアドレス

  • 表示名(ご自身のお名前フルネーム)

システムの設定

画面下部の「インストール」ボタンを押下します。

インストール

インストールが始まります。1分ほどで完了します。

インストール

PowerCMS X にログイン

ログインボタンをクリックするとログイン画面が表示されますので、先ほど登録した内容を入力します。

ログイン

ログインできれば成功です。お疲れ様でした。

ダッシュボード

データベースのバックアップとリストア

サイト構築前にバックアップとリストアのテストをオススメします。構築作業が進むと、なかなかリストアテストができなくなるので、早めに実施をしてください。

トラブル対応

400 Bad Request

ログイン画面にアクセスした時に 400 Bad Request が表示された場合は、インストールする前の「システムの設定」で「サイトURL」を誤っている可能性があります。環境変数を追記してください。
<あなたのドメイン> の箇所は http から記述してください。

ファイルを開く
sudo vi /var/www/html/PowerCMSX/config.json

下記を追記
        "cfg_admin_url" : "<あなたのドメイン>/PowerCMSX/index.php",

参考ページです。

400エラーについて
以下のケースで400 Bad Requestが出ることがあります。

管理画面のURL(ホスト・ドメイン)がシステムおよびスペースのサイトURLのいずれとも一致しない場合
環境変数「cfg_admin_url」を指定していない場合
400エラーの対処方法
以下のように環境変数「cfg_admin_url」または「allowed_domains(配列)」を指定することでこの問題を回避できます。この設定は config.json に記述する必要があります(管理画面からの登録はできません)。

"cfg_admin_url" : "https://cms.powercmsx.jp/admin/index.php",
"allowed_domains" : ["cms.powercmsx.jp"],

https://powercmsx.jp/release_note/ver3_62.html

PowerCMS X は既にインストール済みです。」とメッセージが表示される

pt-check.php にアクセスして、「PowerCMS X は既にインストール済みです。」とメッセージが表示された場合は、phpMyAdmin で powercmsx データベースを削除します。

powercmsx データベースにテーブルがいくつか作成されています。

テーブル

phpMyAdmin で、powercmsx データベースを削除して、再度 pt-check.php にアクセスしてください。

powercmsx データベースを削除

MySQLへの接続に成功しましたがデータベース 'hoge.sample.com' の作成に失敗しました。

db-config.php に記述した「PADO_DB_NAME」の値にドットがあるとエラーになります。例えば下記のようにドメインで指定をした場合はドットをアンダースコアなどに変更してください。

define( 'PADO_DB_NAME', 'hoge.sample.com' );
↓ 変更
define( 'PADO_DB_NAME', 'hoge_sample_com' );


この記事が気に入ったらサポートをしてみませんか?