Corredor

ウェブ、プログラミングの勉強メモ。

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

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

neos21.hatenablog.com

neos21.hatenablog.com

この記事のとおり進めたところだと、作成した 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 を起動する。

$$ 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 ユーザになって作業すると楽だろう。

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

neos21.hatenablog.com

neos21.hatenablog.com

なお、公開している Web サーバは以下。ココに置いている謎の Web アプリについてはまたいつか紹介する。

neos21.hatenablog.com

GCPの教科書

GCPの教科書

[rakuten:book:19562186:detail]