5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

vagrantでNginx+PHP+php-fpmの環境を立ち上げる

Last updated at Posted at 2019-04-20

vagrantでNginx+PHP+php-fpmの環境を立ち上げたので、手順を書きました

CentOS7のインストール

CentOS7をダウンロードします。

$vagrant box add CentOS7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

CentOS7のVMを起動

boxの作成が成功したら以下の手順でVagrantfileを作成します。
今回は「sample」というディレクトリを作り、その中に展開していきます。

また、この後、ホスト側(自分のパソコン)で作成したphpファイルやhtmlファイルを、ゲストOS(今回で言う所のvagrantで立ち上げたcentos)に同期させる(マウント)ための設定をするのですが、それらのphpファイルやhtmlファイルを格納するフォルダ「sync」をsampleの下に作成しておきます。

$ mkdir sync

sampleディレクトリに移動し、以下のコマンドを打ちます。

$vagrant init CentOS7

これでcentos7のosでvagrantが立ち上がり、vagrantfileが作成されます。

現在のディレクトリ構成は以下のようになっています。

sample ┠ sync/
       ┠ Vagrantfile

作成されたVagrantfileを以下のように編集します。

Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box = "CentOS7"
  #ローカルでアクセスするときのIPアドレス。初期設定は192.168.33.10のはず。
  config.vm.network "private_network", ip: "192.168.33.10"
  #同期先を指定。「カレントディレクトリ(.)を/vagrant以下に同期」と、「syncディレクトリを/var/www/」以下に同期する。
  config.vm.synced_folder ".", "/vagrant"
  config.vm.synced_folder "sync", "/var/www/"
end

そのあとにvagrantを立ち上げ、sshで中に入る。

$ vagrant up
$ vagrant ssh

vagrantの中での操作

vagrantの中に入ったら、ifconfigで先ほど指定した192.168.33.10にアクセスできているか確認する。

$ ifconfig
~~~略~~~~~
inet 192.168.33.10
~~~略~~~~~

のような表記があればOK。なければor違うIPになっていたら、一度vagrantから抜けて、reloadし、再度接続する。

(以下はない人だけね)

[vagrant@localhost]$ exit
$vagrant reload
$vagrant ssh

もう一度確認し、ifconfigで192.168.33.10にアクセスできているかを確認。

EPELリポジトリと、remiリポジトリ

アップデートし、EPELリポジトリと、remiリポジトリを追加しています。

$sudo yum update
$sudo yum -y install epel-release
$sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

Nginx

/etc/yum.repos.d/nginx.repoを作成

etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
enabled=0
gpgcheck=0

Nginxをインストールしていきます。

$sudo yum -y --enablerepo=nginx install nginx
$nginx -v 
# バージョンが表示されればOK

nginxを起動します。

$sudo systemctl start nginx
$sudo systemctl enable nginx

nginxが起動できているかの確認をします。

$sudo systemctl status nginx
# ここで、「Active: active (running)」になっていればOK。こんな感じ
   #Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
  # Active: active (running) since 木 2019-04-18 15:27:49 CEST; 1h 46min ago

ファイアーウォール

このままではファイアーウォールによって阻まれアクセスできないため、80番ポート(httpのポート)を解放します。

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --reload

nginxの起動、ファイアーウォールの設定が終わったので、ブラウザにアクセスしてみます。
nginxのウェルカムページが表示されればOKです。

nginxの設定を編集

ここから、nginxの設定をいじっていきます。/etc/nginx/conf.d/default.confの設定ファイルを編集し、以下のようにします。

server {
    listen       80;
    server_name  localhost;
    #ここは「sync」フォルダ以下にあるファイルを参照してほしいので、「sync」の同期先であるvar/wwwを指定。
    root   /var/www;
    charset UTF-8;
    access_log  /var/log/nginx/www.example.com.access.log  main;
    error_log  /var/log/nginx/www.example.com.error.log;

    location / {
        index index.php index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

}

nginxの設定ファイルをいじった後はrestartしなければいけないので、以下で再起動します。

$ systemctl restart nginx

php,php-fpmのインストール

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

新しいphpと、php-fpmが入っているか確認。

$ php -v
$ php-fpm -v

次に、/etc/php-fpm.d/www.conf にあるphp-fpmの設定ファイルを編集します。

この5つの記述をコメントアウト(;)もしくは削除して、(それぞれ離れたところにあるので探しずらいかも)

/etc/php-fpm.d/www.conf
;listen = 127.0.0.1:9000
;user = apache
;group = apache
;listen.owner = nobody
;listen.group = nobody 

以下を追加。

/etc/php-fpm.d/www.conf
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.group = nginx
listen.owner = nginx

設定を反映させるために、php-fpmを再起動します。

$ sudo systemctl restart php-fpm

ngixと同様、起動できているか確認します。「Active: active (running)」になっていればOK

$systemctl status php-fpm

/var/www/にindex.phpを作成して、phpの起動を確認したいのですが、「/var/www/以下に移動して、viでindex.phpを作成して・・・」とかはしなくておk。

最初にしたVagrantfileの設定で「sync」に作成したものは「var/www」に同期されるから、自分のパソコンのエディタで作成して大丈夫。

index.php
<?php phpinfo(); ?>

ここで、192.168.33.10にアクセスして、以下のようになっていればOKです!!!

スクリーンショット 2019-04-19 0.57.07.png

もしエラー出た場合はnginxのエラーログ(/var/log/nginx/error.log)などを見るといいでしょう。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?