共通事項 ubuntu 18
[!訳注]
このページは、他の VPS のページの一部として動的に挿入される モジュールページ です。 Ubuntu 18.04 LTS に関する共通事項ですが、古い情報だと思われるので、もし読む必要がある場合は、適宜読み替えてください。
パッケージのアップデートとアップグレード
この時点で、ローカルの /etc/hosts
エントリーを設定し、提供された IP にナイスでフレンドリーな名前(たとえば (VPS業者ごとのローカル名)
)を付けたくなるかもしれません。そうすれば、より簡単にサーバーに SSH 接続できます。 ssh root@(ローカル名) -p(ポート番号)
のように。
[!訳注]
.ssh/config
を使うことも多いと思います。
[!Tip]
-p
設定オプションは、非標準の SSH ポート番号を使うばために必要です。
サーバに root 権限で SSH 接続成功したら、最初にやりたいのは、パッケージのアップデートとアップグレードでしょう。これにより、実行が 最新で最上位 になります:
# apt update
# apt upgrade
もしプロンプトで尋ねられたら、 Y
と答えます。
先に進む前に、 Apache2 を削除します。 Nginx に置き換え予定です:
# apt remove apache2*
# apt autoremove
[!Note]
Apache2 がインストールされていないかもしれません。しかし、やっておいたほうが安全です!
次に、必要なパッケージをいくつかインストールします:
# apt install vim zip unzip nginx git php-fpm php-cli php-gd php-curl php-mbstring php-xml php-zip php-apcu
ここで、完全な VIM エディタをインストールします(Ubuntu に入っているミニバージョンではありません)。また、 Nginx web サーバ、 GIT コマンド、そして PHP 7.2 をインストールしています。
PHP7.2 FPM の設定
php-fpm がインストールされると、より安全なセットアップに必要な設定変更が少し生じます。
# vim /etc/php/7.2/fpm/php.ini
cgi.fix_pathinfo
を検索してください。デフォルトではコメントアウトされており、 ‘1’ が設定されています。
これはとても安全でない設定です。というのも、要求された PHP ファイルが見つからなかったときに、 PHP に一番近いファイルの実行を試させる設定だからです。この設定により、実行されるべきでないスクリプトを実行されてしまうかもしれません。
この行のコメントを外し、‘1’ を ‘0’ に変えてください。次のように:
cgi.fix_pathinfo=0
ファイルを保存し、閉じてください。それからサーバーをリスタートさせてください。
# systemctl restart php7.2-fpm
Nginx の接続プールの設定
Nginx は先ほどインストール済みですが、設定をすることで、ユーザ固有の PHP 接続プールが使えます。これにより、安全になり、ユーザアカウントとして、そして web サーバ経由でファイルを操作する際のパーミッションの問題が起こるのを避けられます。
プールのディレクトリに移動し、新しく grav
設定を作成してください:
# cd /etc/php/7.2/fpm/pool.d
# mv www.conf www.conf.bak
# vim grav.conf
Vim で、以下のプール設定を貼り付けてください:
[grav]
user = grav
group = grav
listen = /var/run/php/php7.2-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /
ここでの重要ポイントは、 user
と group
を grav
というユーザに設定することと、標準的なソケットではなくユニークな名前を持つ listen socket を設定することです。このファイルを保存して閉じてください。
ここで、専用の grav
ユーザーを作成する必要があります:
# adduser grav
強いパスワードを提供してください。そして、他の値はデフォルト値で残してください。次に作成しなければならないのは、ファイルを提供する Nginx の適切な場所です。そこで、ユーザを変更し、これらのフォルダを作成し、いくつかのテストファイルを作成します:
# su - grav
$ mkdir -p www/html
$ cd www/html
次のようなコンテンツを持つシンプルな index.html
を作成してください:
<h1>Working!</h1>
..そして、次のようなコンテンツを持つ info.php
ファイルを作成してください:
<?php phpinfo();
これで、このユーザを終了し、 Nginx サーバ設定のセットアップのため、ルートユーザに戻ります:
$ exit
# cd /etc/nginx/sites-available/
# vim grav
それから、この設定を貼り付けてください:
server {
#listen 80;
index index.html index.php;
## Begin - Server Info
root /home/grav/www/html;
server_name localhost;
## End - Server Info
## Begin - Index
# for subfolders, simply adjust:
# `location /subfolder {`
# and the rewrite to use `/subfolder/index.php`
location / {
try_files $uri $uri/ /index.php?$query_string;
}
## End - Index
## Begin - Security
# deny all direct access for these folders
location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
# deny running scripts inside core system folders
location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
# deny running scripts inside user folder
location ~* /user/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
# deny access to specific files in the root folder
location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; }
## End - Security
## Begin - PHP
location ~ \.php$ {
# Choose either a socket or TCP/IP address
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# fastcgi_pass unix:/var/run/php5-fpm.sock; #legacy
# fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
## End - PHP
}
これは、 Grav に入っているデフォルトの nginx.conf
ファイルに2つの変更を加えたものです。
root
を、先ほど作成した user/folder に適合させましたfastcgi_pass
オプションを、grav
プールで定義したソケットに設定しました
有効化 のため、このファイルを適切にリンクする必要があります:
# cd ../sites-enabled
# ln -s ../sites-available/grav
# rm default
この設定を nginx -t
コマンドでテストできます。以下のように返ってくるはずです。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
あとは、 Nginx と php7-fpm プロセスを再起動し、 Nginx と PHP 接続プールが正しく設定されたことを確認するテストをしてください:
# systemctl restart nginx
# systemctl restart php7.2-fpm
サーバで、次の URL をブラウザ表示してください: http://{{ page.header.localname }}
。そして Working! というテキストを確認してください:
ブラウザで http://{{ page.header.localname }}/info.php
を表示することで、次のこともテストできます。 PHP がインストールされ、正しく機能していることを。標準的な PHP info ページ(APCu, Opcache, その他の一覧)が表示されるはずです。
Grav のインストール
ここからは簡単なパートです! まず、 Grav ユーザに戻ってください。 SSH 接続で grav@{{ page.header.localname }}
とするか、ルート権限でログインした状態から su - grav
とします。それから、次のステップに進みます:
$ cd ~/www
$ wget -O grav.zip https://getgrav.org/download/core/grav/latest
$ unzip grav.zip
$ rm -Rf html
$ mv grav html
完了です。ブラウザで http://{{ page.header.localname }}
を表示すれば、 Grav がインストールされていることが確認できます。 Grav is Running! ページが表示されるでしょう。
ここまで進めていただければ、 Grav CLI や Grav GPM コマンドも利用可能になっています。次のように:
$ cd ~/www/html
$ bin/grav clear
Clearing cache
Cleared: cache/twig/*
Cleared: cache/compiled/*
Touched: /home/grav/www/html/user/config/system.yaml
GPM コマンドは:
$ bin/gpm index