GCE インスタンスに Apache と PHP をインストールして Web サーバを公開してみた
以前、GCP (Google Cloud Platform) の永久無料枠で GCE (Google Compute Engine) インスタンスを作った。
- 永久無料枠で Google Compute Engine (GCE) インスタンスを立ち上げる : その1
- 永久無料枠で Google Compute Engine (GCE) インスタンスを立ち上げる : その2
この記事のとおり進めたところだと、作成した GCE インスタンスは、再起動しても変動しない固定 Public IP アドレスを持ち、SSH 接続ができるだけ、という状態だった。
今回はこのインスタンスにセットアップしていって、Apache (Web サーバ) を動かし、その上で PHP スクリプトが動くようにしてみる。
目次
GCE インスタンスの設定
GCP 管理画面に移動し、作成した GCE インスタンスの「編集」を行う。
ファイアウォール設定の中の
- HTTP トラフィックを許可する
- HTTPS トラフィックを許可する
を指定することで、80番ポートと443番ポートへのアクセスを許可するようになる。
Apache をインストールする
続いて、GCE インスタンスに SSH 接続し、Apache をインストールする。
$$ sudo yum install -y httpd
- 参考 : Cloud Cost Estimator
- Apache が
httpd
を名乗ってるの、偉そうな気がして違和感があったけど、そのくらいもうデファクトスタンダードになってるってことなのかな…。
- Apache が
サービスが自動起動するよう設定して、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
- 877行目に
;date.timezone =
とコメントアウトされた部分がある - ココをアンコメントして
date.timezone = "Asia/Tokyo"
と直す
設定できたら、設定を反映させるため 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 ユーザになって作業すると楽だろう。
- 参考 : 【クラウド初心者向け】Google Cloud Platform(GCP)でWebサイトを公開してみよう! | DACエンジニアブログ : アドテクゑびす界
- 参考 : GCE の無料枠のサーバを立るときに、初見でハマりそうなところ - Qiita
- 参考 : 10分で分かるGCE : Webサーバを構築しよう | GMOアドパートナーズグループ TECH BLOG byGMO
443番ポートも開けてあるが、今回は HTTPS 対応はしていない。以前紹介した Freenom の無料ドメインを取得し、Let's Encrypt を使えば無料で HTTPS 化、独自ドメイン対応もできるだろう。