今更ながらCentOS7を使ってWeb Server構築(vagrant) - LEMP -

## はじめに
今更ながらCentOS7でlocal環境構築をやりました。
自分がCentOSの6系ばかりで組んでたのでいろいろ変わったりしたから忘れないうちに...
多少は変わったけどよく使うコマンドさえ覚えれば簡単に作れるかな
ちなみに、この記事書こうと思った理由が知り合いがvagrantを使ってて何かいわれたらしいので
「普通にvirtualBoxでLAMP環境作って...」
この時点で思ったのがvagrantでもLAMP環境は普通にできますが???
ってなりましたねｗ
そんなわけでやります！

## 個人環境と仮想環境でインストールする物
自分の環境
Mac book pro
virtualBox
vagrant

Server 情報
CentOS 7
Nginx
PHP7
MariaDB
まぁ、こんな感じですかね
自分は最近apacheよりもNginxのほうが好きなのでｗ

virtualbox単体なんてもうね、GUIを立ち上げるのだけでもメモリをくうから嫌なんだよね
正直開発環境を建てるならvagrntでよくねって思っちゃう
そのうちDockerも使ってみたいと思う今日この頃

## さっそくインストールをやっていく

初めにvagrntを立ち上げる場所を決め、ディレクトリを作成

```ruby:terminal
cd Documents
mkdir centos7
cd centos7
```

今回はcentos7というフォルダで作成する

http://www.vagrantbox.es/
↑
ここからほしいバージョンを選択
ほしいバージョンがなければ作成するしかない！
これは後日かくかもしれないですｗ

```ruby:terminal
vagrant box add centos7 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box
# download できてればlistコマンドで確認できます。
vagrant box list

#先ほどvagrant add boxで指定した名前のVagrantfileの作成
vagrant init centos7
```

Vagrantfileを自分の環境にあったように修正していく

```ruby:terminal
$ vim Vagrantfile

#config.vm.network "private_network", ip: "192.168.33.10"
#config.vm.synced_folder "../data", "/vagrant_data"

46行目から
  # config.vm.provider "virtualbox" do |vb|
  #vb.memory = "1024"
  #end
```

上記のこの部分の#を消します。

```ruby:terminal
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "./", "/vagrant_data"

46行目から
  config.vm.provider "virtualbox" do |vb|
  vb.memory = "1024"
  end
```

上記のフォルダ、ip,メモリに関しては後で書き換えますよ
ただいったんはこれだけでほぼ完了です。
あとは

```ruby:terminal
$ vagrant up
```

これだけで起動します。
まぁ、場合によってはエラーで止まっちゃいますw

## Web server環境構築
それでは構築していきます。
まずは、sshして

```ruby:terminal
$ vagrant ssh
```

必要なものをまとめてダウンロードするための準備
まずは、enginx

yumでエラーがでることがあるのでこれを参考に設定しておく
https://qiita.com/teru855/items/cfe4b71bf1af14b9b05a

```ruby:vagrnt
# まず、rootユーザーになっる、password:vagrnt
$ sudo su -

# yum のアップデート
$ yum -y update

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

# nginxをインストール
$ yum install -y nginx

# php7とphp7をインストールするうえで必要なものを取得
$ yum install -y epel-release
$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
$ yum install -y --enablerepo=remi,remi-php71 php php-fpm php-devel php-mbstring php-pdo php-gd php-xml php-mcrypt php-mysql php-zip

#MariaDB インストール
$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
$ yum install -y MariaDB-server
```

これでいったん必要なものは全部そろったかな
それではそれぞれの設定をしていく

phpの設定

```ruby:vagrnt-php.ini
$ vim /etc/php.ini
date.timezone = "Asia/Tokyo"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = pass
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_charset = none

```

php-fpmの設定

```ruby:vagrnt-php.ini
$ vim /etc/php-fpm.d/www.conf
user = apache
group = apache

listen = 127.0.0.1:9000

# listen.owner = apache
# listen.group = apache
```

↓

```ruby:vagrnt-php.ini
user = nginx
group = nginx

listen = /var/run/php-fpm/php-fpm.sock

listen.owner = nginx
listen.group = nginx
```

このように書き換えておく

nginxの設定

```ruby:default.conf
$ mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.old
$ vim /etc/nginx/conf.d/default.conf
server {
    listen      192.168.33.10;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_max_temp_file_size 0;
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    index index.php index.html index.htm;
    root   /usr/share/nginx/html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
    }
}

```

いったん設定ファイルの名前を書き換えて新規で上記をコピーしたほうが早いかも
いったんここで全部起動、自動起動設定

```ruby:terminal
$ systemctl start nginx
$ systemctl start php-fpm
$ systemctl start mysql
$ systemctl enable nginx
$ systemctl enable php-fpm
$ systemctl enable mysql
```

MariaDBの初期設定

```ruby:terminal
$ mysql_secure_installation
```

rootのパスワードを聞かれたらそこは設定する
それ以外はYでOK

## ドキュメントルート配下にindex.phpを設置

```ruby:terminal
$ cd /usr/share/nginx/html
$ vim index.php

<?php
phpinfo();

```

これでvagrantで指定しているIPをwebで確認しphpinfoページが表示されればOK
もしかしたらエラーでパーミッションエラーが出る場合はパーミッションの変更必要あり
localなので777で問題ないと思われる。
/var/log/nginx/error.log
ファイルを確認

そのほかに必要な場合
SELinuxの無効化
これは調べればすぐに出てくる。

portの指定
local環境なので22,80,3306ポートを解放してあげれば問題ないはず。
postfixを使う場合は該当のportを解放する

```terminal:terminal
$ firewall-cmd --add-port=22/tcp --zone=public --permanent
$ firewall-cmd --add-port=80/tcp --zone=public --permanent
$ firewall-cmd --add-port=3306/tcp --zone=public --permanent
$ firewall-cmd --reload
```

これで問題ないはず。

最後にvagrant sshを抜けてmacのcentos7配下にあるVagrantfileを修正

```terminal:terminal
$ vim Vagrantfile
config.vm.synced_folder "./", "/usr/share/nginx/html"
```

このように書き換えることでcentos7配下に置いたものは自動的にドキュメントルート直下になる。
以上！

あとはnginxのconfを書き換えてドキュメントルートを変更や、composerをいれてlaravelを触ってみたりとかできますね

まぁ、人によってはvagrantなんか使わなくてもVSP借りてるから問題ないって人もいるでしょうね

それではみさなん、良きServer開発を！