![Cent OS 9 で GRAV + nginx Cent OS 9 で GRAV + nginx](/images/9/4/3/1/3/9431343830a7e732068dda3682eb10df61326ae0-00.png)
Cent OS 実験シリーズのおまけです。 Mattermostを導入してある 4GB メモリーの仮想サーバに GRAVを共存させてみるという内容です。 設定上は Mattermostの存在は何の関係もないのでまっさらなサーバでも同様に設定できると思います。 LAMPの構成であれば web rootに放り込むだけで gravは動作しますが、今回は nginx + php-fpm + grav の方式です。
Ubuntuや古いCent OS 6/7等とは結構手順やPATHが異なるので細かく書いておこうと思います。
Step1. 依存パッケージの導入
Cent OS 7 時代などは標準リポジトリの PHPが古く remiなど有名サードパーティリポジトリを使用していましたが 現在では標準で PHP 8が入るので特に GRAVの依存的には特に問題なくなっています。 今回のサーバーでは手癖で EPEL / RPMFusion だけ有効になっているので、もしパッケージ関連で動作に違いが出た場合は
sudo dnf install --nogpgcheck https://dl.fedoraproject.org/pub/epel/epel-release-latest-$(rpm -E %rhel).noarch.rpm
sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm
これを実行すれば同じ状態になります。 というわけで一通り導入していきます。
sudo dn update
sudo dnf install git # gravのcloneに使います。
sudo dnf install nginx
sudo dnf install php php-curl php-ctype php-dom php-gd php-json php-mbstring php-openssl php-session php-simplexml php-xml php-zip
Step.2 nginx / php-fpm の起動
まずは php-fpmの設定を行います。
設定ファイルは /etc/php-fpm.d/www.conf
です。
Cent os 9の nginxはデフォルトで nginx ユーザーの権限で動いています。
debian系では www-data だったり他の権限で動作する場合は ユーザー名を読み替えてください。
動作するユーザーは通常 /etc/nginx/nginx.conf
の冒頭に
user nginx;
のように宣言されていると思います。 このユーザーの権限で php-fpmも動かしたいので /etc/php-fpm.d/www.conf
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
; listen.acl_users = apache,nginx <- コメントアウト
以上の箇所を apacheなどデフォルトの名前から変更してください。
また、変更は不要ですが
listen = /run/php-fpm/www.sock
php_value[session.save_path] = /var/lib/php/session
unix socketと session.save_path のパスを確認しておきます。 session.save_path に設定されている ディレクトリがないかったり permissionがおかしいと PHP製のCMSではエラーの原因になるので
sudo mkdir -p /var/lib/php/session/
sudo chown -R nginx:nginx /var/lib/php/session/
一応実行しておくと安心です。
ここまで出来たら、一旦 nginxと php-fpmを起動しておきます。
sudo systemctl enable --now nginx
sudo systemctl enable --now php-fpm.service
nginx:nginx 660の .sockファイルが生成されていればOKです。
ls -al /run/php-fpm/www.sock
nginx + php-fpm はこのあたりの各ファイルのpermissionでコケがちな印象なので 指さし確認推奨です。
GRAVのインストール
GRAVは githubから cloneしてきます。 勿論 skeltonサイトの zipを展開しても問題ないです。
任意の場所に設置できますが、 /var/www 以下がおさまりがいいと思います。 nginxをかませていればバーチャルホスト機能などで複数のgravサイトを設置できるので 例として /var/www/grav01 をルートにします。 また設置後はくどいようですが nginx の動作ユーザ(今は nginx)に chownが必要です。
sudo git clone https://github.com/getgrav/grav /var/www/grav01
sudo chown -R nginx:nginx /var/www/grav01
また、個別のファイルとディレクトリの permissionも gravのdocument通りに変更します。
sudo find . -type f -exec chmod 664 {} \;
sudo find ./bin -type f -exec chmod 775 {} \;
sudo find . -type d -exec chmod 775 {} \;
sudo find . -type d -exec chmod +s {} \;
これで設置OKです。 この gravサイトを nginxに登録します。
gravのルートフォルダには nginx用の推奨 configが入っています。
cent osの場合個別の confファイルは /etc/nginx/conf.d/
以下に保存します。
分かりやすい用の grav01.conf として一旦コピーします。
sudo cp /var/www/grav01/webserver-configs/nginx /etc/nginx/conf.d/grav01.conf
コピーできたら次の場所を変更していきます。
root /var/www/grav01;
server_name grav01.hoge.jp; # 例えば
## PHP設定部分
# fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/run/php-fpm/www.sock;
server_name は サブドメインを利用して Mattermostと切り替えができるようにします。
mattermost.hoge.jp であれば Mattermost grav01.hoge.jp であれば grav
のページが開かれるようになります。
ここまで来たらファイルの配置は完了です。 grav cliからinstallとadminプラグインの導入を行います。 root権限で実行して chown nginx:nginx をやり直すか 各コマンドを nginxで実行するかればOKです。
cd /var/www/grav01
sudo -u nginx bin/grav install
sudo -u nginx bin/gpm install admin
これで gravが利用可能になっています。
GRAVサイト立ち上げ
最後に
sudo systemctl restart php-fpm
sudo systemctl restart nginx
を実行して、完了です。 grav01.hoge.jp にアクセスして adminの初期アカウントを作るなどすれば
無事に立ち上がりました。