VPSでphpinfoを惜しげもなく公開する

Blog Single

高橋です。初投稿になります。よろしくお願いします。
最近、個人的にWebサイトを作成していて、そろそろサーバーに展開したいなーなどと思っています。
しかし、手順ややるべきことなどがイメージしづらかったので、その導入としてVPS(Virtual Private Server)を借りて、phpinfoを表示するページを作成してみたいと思います。

VPS

色々調べたのですが、値段の安さと初期費用が無料ということからConoHaを選択しました。

追加ボタンを押した先でプランやディストリビューションを選択することができるようです。

今回の構成

  • リージョン : 東京
  • プラン : メモリ512MB
  • ディストリビューション : CentOS7.5

プランに関しては様子見で一覧安いものにしました。
ディストリビューションはUbuntuやDebianと迷いましたが、周りでよく使われているような気がするCentOSにしました。

サーバーを追加することができたので、以下をインストールしていきます。

  • nginx
  • PHP7.2

nginxをインストール

nginxは以下のコマンドだけでインストールすることができますが、少し古いバージョンが入ってしまう場合があります。

$ yum install nginx
$ nginx -v #nginx version: nginx/1.12.2

リポジトリを追加することで最新版や安定版をインストールすることができるので、今回は安定版をインストールしてみたいと思います。
まずはリポジトリとなるファイルを作成します。

$ vim /etc/yum.repos.d/nginx.repo
[nginx] #リポジトリID
name=nginx repo #リポジトリ名称
baseurl=http://nginx.org/packages/centos/7/$basearch/ #リポジトリのパス
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ #最新版のパス
gpgcheck=0 #GPG署名確認を無効
enabled=1 #リポジトリの有効無効設定

同様のコマンドを実行します。

$ yum install nginx
$ nginx -v #nginx version: nginx/1.14.1

無事に安定版をインストールすることができたので、起動します。

$ systemctl start nginx

firewalldの設定

今回は外部からのアクセスを実現したいので、publicゾーンにhttpサービスを許可する設定を入れます。
80番ポートを開けると言った方が馴染みがあるかもしれません。

// 現在通信が許可されているサービス
$ firewall-cmd --zone=public --list-services #ssh dhcpv6-client

// httpサービスを恒久的に許可する
$ firewall-cmd --zone=public --add-service=http --permanent

// 設定を有効化
$ firewall-cmd --reload

$ firewall-cmd --zone=public --list-services #ssh dhcpv6-client http

httpサービスが許可されたのでブラウザからアクセスしてみます。
URLはhttp://'IPアドレス'です。

nginxのwelcomeページを表示することができました。

PHPをインストール

CentOS7系の標準リポジトリのPHPバージョンは5.4なので、7.2をインストールするためにリポジトリを追加します。

// remiリポジトリを追加
$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

enablerepoというオプションでインストールするパッケージのリポジトリを明示的に指定します。
インストールするパッケージは構築したい環境に合わせて選びます。
自分は後々データベースを入れることを考えてphp-pdoやphp-mysqlndもインストールしました。

$ yum install --enablerepo=remi,remi-php72 php php-mbstring php-gd php-pdo php-mysqlnd

$ php -v #PHP 7.2.12

PHPをインストールすることができたので、表示するファイルを作成しておきます。

$ vim /var/www/html/index.php
<?php phpinfo(); ?>

PHP-FPM

WebサーバーがPHPを実行する方式としてモジュール方式とCGI方式の2種類があります。
モジュール方式はWebサーバーのプロセスの中でPHPを実行するのに対し、CGI方式はWebサーバーとは別のプロセスで実行されます。
今回インストールしたnginxは外部プログラムを通じてPHPをCGI方式で実行するWebサーバーなので、その外部プログラムにあたるPHP-FPMをインストールします。

$ yum install --enablerepo=remi,remi-php72 php-fpm

デフォルトの設定でapacheになっている箇所があるのでnginxに書き換えて起動します。

$ vim /etc/php-fpm.d/www.conf
- user = apache
+ user = nginx

- group = apache
+ group = nginx
// 起動
$ systemctl start php-fpm

nginxの設定

先ほど作成した/var/www/html/index.phpを表示させるためにnginxの設定を変更していきます。

$ vim /etc/nginx/conf.d/default.conf
location / {
-       root   /usr/share/nginx/html;
+       root   /var/www/html;
-       index  index.html index.htm;
+       index  index.php;
    }

- #location ~ \.php$ {
- #      root           html;
- #      fastcgi_pass   127.0.0.1:9000;
- #      fastcgi_index  index.php;
- #      fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
- #      include        fastcgi_params;
- #}
+ location ~ \.php$ {
+       root           /var/www/html;
+       fastcgi_pass   127.0.0.1:9000;
+       fastcgi_index  index.php;
+       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
+       include        fastcgi_params;
+ }

設定の変更を反映させるために再起動します。

$ systemctl restart nginx

これでPHPファイルを表示できるようになるはずです。ブラウザからアクセスしてみます。
URLはhttp://'IPアドレス'/index.phpです。

おおお…。( 感動 )

まとめ

今回は表示させることが目的なので、最低限の項目のみを設定しました。
実際にサービスをのせる場合はより多くの項目の設定が必要になると思います。
サーバー周りは馴染みが少ない分野でしたが、思ったよりも手軽で個人開発者にも優しい時代になっていると感じました。
皆様もぜひ!

参考

心無い冗談を愛するエンジニア。音楽とサッカーが好きです。

Other Posts: