Webサーバーとして使っているVultrはディスク容量が少ないので、ファイルサーバーとしてTime4VPSのStorage VPSを利用しています。このVPSはOpenVZ方式なのでLinux以外のOSを選択できないのです。最近仕事でApacheを触ることも多いし、ちょっと勉強がてらLAMPやります。
OpenVZ
Linuxはディストリビューションごとにそれぞれ特徴も違えばお作法も違う。でも元はみんな同じカーネル。ディストリビューションっていうのは周辺ツールやGUIなどをそれぞれの思想に従って組み合わせたものと思っていい。
というわけで仮想化環境を作るのに「ハードウェアレベルの仮想マシンを作って重くなるよりも、ホストのカーネル使いまわして軽い仮想マシン作ったほうがいいんじゃね?」という発想で作られたRed Hat Enterprise Linux用の仮想化ソフトウェアがOpenVZです。
そういうわけで、Time4VPSのOpenVZ方式のVPSで提供されるOSはCentOS/Debian/Ubuntuの中から選ぶことになります。Raspberry PiのOSはDebianベースだし、最近お気に入りのChromebookに入っているLinuxもDebianということで、DebianでLAMP作ってみます。
ディレクトリ構成その他がCentOSよりもFreeBSDに近いからってのもある。
Apache2.4を入れる
2019年11月現在、Time4VPSのStorage VPSで使えるDebianの最新バージョンは9.11。このバージョンのパッケージで提供されているApacheはちょい古い2.4.25。これをインストールします。
1 | apt install apache2 |
Debianの場合、インストールできたらApacheはすでに起動しています。状態はsystemctlで確認できます。
1 | systemctl status apache2.service |
これだけでもうテストページにアクセスできちゃう。DebianのテストページはApacheの解説ページになっているので、簡単な概要がわかっちゃう。
セキュリティを考慮してApacheバージョンを非表示にしておきましょう。/etc/apache2/conf-available/security.conf
を書き換えます。
1 | # diff security.conf security.conf.bak |
ところでDebianのapacheのユーザーとグループ名はデフォルトでwww-dataです。これが気に入らないので変えてしまいましょう。一旦apacheデーモンを止めて、ユーザー名とグループ名を変更します。
1 | systemctl stop apache2.service |
確認はidコマンドでできます。
1 | # id www |
ユーザー名を変えてしまったので、Apacheの設定ファイルも書き換えておきます。
/etc/apache2/apache2.conf
を見ると、apacheのユーザーとグループは/etc/apache2/envvars
内で設定しているようです。
1 | # These need to be set in /etc/apache2/envvars |
というわけで該当箇所を以下の通り書き換え。
1 | # Since there is no sane way to get the parsed apache2 config in scripts, some |
続いて、VirtualHost機能を使ってマルチドメイン設定をしてみます。/etc/apache2/site-available/000-default.conf
を編集します。ドメインごとにVirtualHostブロックを作ってやると、一つのVPS内で複数のドメインを扱うことができます。
1 | <VirtualHost *:80> |
この設定を有効にするには同ファイルを/etc/apache2/site-enabled/000-default.conf
としてシンボリックリンクを張ります。
PHP7.4のインストール
Debian 9.11のphpもバージョンが古い。リポジトリの書き換えはDebian開発者のサイトにやり方が載っています。
サイト中程のPHP PackagesのDebian DPAリンク先のREADME.txtにあるとおり。
1 | apt -y install apt-transport-https lsb-release ca-certificates |
パッケージ更新できたらphp7.4をインストールできます。今回はNextCloudをインストールできるようなモジュールを選んで入れています。
1 | apt install php7.4 php7.4-curl php7.4-dom php7.4-gd php7.4-mbstring php7.4-zip php7.4-mysql php7.4-bz2 php7.4-intl php7.4-ldap php7.4-apcu php7.4-redis php7.4-fpm |
Apacheでphp-fpmを使う
Nginx同様にApacheでもphp-fpmを使ってサイトでphpが動作するようにします。php-fpmをインストールした時のaptのメッセージに従ってコマンドを実行します。
1 | a2enmod proxy_fcgi setenvif |
先ほどapacheのユーザーを書き換えてしまったので、/etc/php/7.4/fpm/pool.d/www.conf
も一部書き換えておきます。
1 | # diff www.conf www.conf.bak |
php-fpmの起動は以下のとおり。
1 | systemctl start php7.4-fpm.service |
なお、/var/run/php
ディレクトリが再起動時に削除されてしまってphp-fpmが自動起動しない場合には、/etc/tmpfiles.d/
内に設定ファイルを置いておきます。
1 | cat phpfpm.conf |
これでphpファイルにアクセスするとCGIが動くようになります。ドキュメントルート/var/www/html
にinfo.phpファイルを置いて、http://example.com/info.phpにアクセスすると各種情報が表示されるようになります。
1 | <?php phpinfo(); ?> |
MariaDB10.4のインストール
LinuxではMySQLの互換データベースであるMariaDBが標準みたいです。Debian9.11のMariaDBはバージョンが古いのでリポジトリを書き換えます。MariaDBのリポジトリページへ行って、ディストリビューションとリリースとバージョン、ミラーサイトを適切に選択すると、コマンドが生成されます。
リポジトリを更新してからインストールすると最新の10.4をインストールできます。
1 | apt-get install software-properties-common dirmngr |
これでLAMP環境が整いました。