GCE インスタンスに Apache と PHP をインストールして Web サーバを公開してみた

以前、GCP (Google Cloud Platform) の永久無料枠で GCE (Google Compute Engine) インスタンスを作った。

この記事のとおり進めたところだと、作成した GCE インスタンスは、再起動しても変動しない固定 Public IP アドレスを持ち、SSH 接続ができるだけ、という状態だった。

今回はこのインスタンスにセットアップしていって、Apache (Web サーバ) を動かし、その上で PHP スクリプトが動くようにしてみる。

目次

GCE インスタンスの設定

GCP 管理画面に移動し、作成した GCE インスタンスの「編集」を行う。

ファイアウォール設定の中の

を指定することで、80番ポートと443番ポートへのアクセスを許可するようになる。

Apache をインストールする

続いて、GCE インスタンスに SSH 接続し、Apache をインストールする。

$$ sudo yum install -y httpd

サービスが自動起動するよう設定して、Apache を起動する。

$$ sudo systemctl enable httpd.service
$$ sudo systemctl start httpd.service
$$ sudo systemctl status httpd.service

この状態で、GCE インスタンスの Public IP を指定して http://100.0.0.1/ みたいにアクセスすると、「Testing 123..」と書かれた Apache のデフォルトのページが見えるはず。コレで Apache が上手く80番ポートで公開できていることが確認できた。

PHP をインストールする

続いて、GCE に PHP をインストールする。PHP v7 系をインストールするには Yum リポジトリを追加する必要があるらしい。

$$ sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

そしたら PHP を色々インストール。

$$  sudo yum install --enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd -y

インストールできたらバージョンを確認してみる。

$$ php -v
PHP 7.0.33 (cli) (built: Aug 28 2019 14:11:09) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

さらに、タイムゾーン設定を変更する。

$$ sudo vim /etc/php.ini

設定できたら、設定を反映させるため Apache を再起動する。

$$ sudo systemctl restart httpd.service

PHP が使えることを確認するため、以下に新規ファイルを作ってみる。

$$ sudo vim /var/www/html/index.php

内容は以下のとおり。

<?php

phpinfo();

?>

phpinfo() という関数は、PHP の情報を出力してくれるモノ。

この状態で、GCE インスタンスの Public IP を指定して http://100.0.0.1/ みたいにアクセスすると、先程 Apache のテストページが見えていたところが、PHP の情報が出力されるようになっているはずだ。

完了

コレで、GCE インスタンスを Apache Web サーバとして公開し、PHP が使える状態になった。/var/www/html/ 配下に HTML や PHP ファイルなどを置いていけば、それが Web ページとして表示されるようになった。/var/www/html/ 配下は root 権限が必要なので、$ sudo su - で root ユーザになって作業すると楽だろう。

443番ポートも開けてあるが、今回は HTTPS 対応はしていない。以前紹介した Freenom の無料ドメインを取得し、Let's Encrypt を使えば無料で HTTPS 化、独自ドメイン対応もできるだろう。