LAMPでWebサーバーを立てる

2018年11月25日

NextCloudを動かすためにTime4VPSでStorage VPSを借ります。このVPSはOpenVZ方式なのでLinux以外のOSを選択できないのです。最近仕事でApacheを触ることも多いし、ちょっと勉強がてらLAMPやります。

LinuxとOpenVZ

FreeBSDに比べてLinuxの分かりにくさというのはやはり多くのディストリビューションでしょう。てかディストリビューションって何!?

FreeBSDはOS丸ごとFreeBSD.orgが面倒を見ているけれど、Linuxはフィンランドのリーナスおじさんが作ったカーネルを元に、各ディストリビューターが思い思いにシェルやらツールやらを組み合わせたもの。

つい先日IBMが買収した商用のRed Hat Enterprise Linuxやそのオープンソース版のCentOSFedoraRaspberry PiのRaspbianにも使われているDebian GNU/Linuxやその派生のUbuntuなどなど…。それぞれ特徴も違えばお作法も違う。でもみんな元は同じカーネル。

一方、仮想化ソフトウェア作るのに「ハードウェアレベルの仮想マシン作って重くなるよりも、ホストのカーネル使いまわして軽い仮想マシン作った方がいいんじゃね?」という発想で作られたRed Hat Enterprise Linux用の仮想化ソフトウェアがOpenVZ

そういうわけで、Time4VPSのOpenVZ方式のVPSで提供されるOSはCentOS/Debian/Ubuntuになります。Raspberry PiのOSはDebianベースだし、最近お気に入りのChromebookに入っているLinuxもDebianだし、ということでDebianを使ってみます。

Apache2.4を入れる

2019年5月現在、Time4VPSで使えるDebianの最新バージョンは9.9。このバージョンのパッケージのApacheはちょい古の2.4.25。これをインストールしましょう。

apt install apache2

Debianの場合、インストールできたらApacheはすでに起動しています。状態はsystemctlで確認できます。

systemctl status apache2.service

これだけでもうテストページにアクセスできちゃう。DebianのテストページはApacheの解説ページになっているので、簡単な概要がわかっちゃう。

Apacheのテストページ

というわけで、VirtualHost機能を使ってマルチドメイン設定をしてみます。/etc/apache2/site-available/000-default.confを編集します。ドメインごとにVirtualHostブロックを作ってやると一つのVPS内で複数のドメインを扱うことができます。

<VirtualHost *:80>
  DocumentRoot /var/www/html/example
  ServerName example.com
  ServerAlias www.example.com
</VirtualHost>

この設定を有効にするには同ファイルを/etc/apache2/site-enabled/000-default.confとしてシンボリックリンクを張ります。

MariaDB10.3のインストール

LinuxではMySQLの互換データベースであるMariaDBが標準みたいです。MariaDBというのはちょうどownCloudに対するNextcloudみたいな感じ。どちらもオリジナルの開発者が「ちょっと組織が肌に合わねぇ」って言って飛び出していった。

Debian9.9のMariaDBはバージョンが古いのでリポジトリを書き換えます。MariaDBのリポジトリページへ行って、ディストリビューションとリリースとバージョン、ミラーサイトを適切に選択すると、コマンドが生成されます。

リポジトリを更新してからインストールすると最新の10.3がインストールできます。

apt install software-properties-common dirmngr
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://ftp.eenet.ee/pub/mariadb/repo/10.3/debian stretch main'
apt update
apt install mariadb-server

インストール時にrootユーザーの設定も終わるので、MySQLのようにmysql_secure_installationコマンドでの初期設定は不要です。

PHP7.3のインストール

Debian9.9のphpもバージョンが古い。リポジトリの書き換えはDebian開発者のサイトにやり方が載っています。

サイト中程のPHP PackagesのDebian DPAリンク先のREADME.txtにあるとおり。

apt -y install apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
apt update

パッケージが更新できたらphp7.3をインストールできます。今回はNextcloudをインストールできるようなモジュールを選んで入れています。

apt install php7.3 php7.3-curl php7.3-dom php7.3-gd php7.3-mbstring php7.3-zip php7.3-mysql php7.3-bz2 php7.3-intl php7.3-ldap php7.3-apcu php7.3-redis php7.3-fpm

Apacheでphp-fpmを使う

Nginx同様にApacheでもphp-fpmを使ってサイトでphpが動作するようにします。php-fpmをインストールした時のaptのメッセージに従ってコマンドを実行します。

a2enmod proxy_fcgi setenvif
a2enconf php7.3-fpm

WordPressの高速化に。ApacheのeventMPMとphp-fpmを利用してウェブサイトの速度を向上する。|Rem System Techlogによると/etc/php/7.3/fpm/pool.d/www.confファイルを書き換えることでパフォーマンス調整ができるようですが、今回は見送り。

これでphpファイルにアクセスするとCGIが動くようになります。ドキュメントルート/var/www/htmlにinfo.phpファイルを置いて、http://example.com/info.phpにアクセスすると各種情報が表示されるようになります。

<?php phpinfo(); ?>

phpinfoの内容