LoginSignup
8
10

More than 5 years have passed since last update.

vagrantのローカル環境作る(centos7,nginx,mariadb,php7)

Posted at

virtualboxとvagrantインストール

Windows10に下記をインストールした

  • virtualbox 5.1.14
  • vagrant 1.9.7

ホストマシンのhostsにドメイン追加しておく

hostsファイル(windows10で場所は下記)に追記する
C:\Windows\System32\drivers\etc\hosts
192.168.33.10 hoge.comを追記する
※Vagrantfile内でのIPアドレス指定や、あとで出てくるnginx内のドメイン名をこれに合わせる

centos7インストール

参考:http://motomichi-works.hatenablog.com/entry/2017/07/29/010025

以下vagrantにインストールする。
コマンドはGit Bash上で実行。

vagrantにboxを追加する
vagrant box add centos/7を実行

下記のように質問されるので3でエンター

1) hyperv
2) libvirt
3) virtualbox
4) vmware_desktop

windows上にvagrant用の新しいディレクトリ作成して、そこで
vagrant init centos/7を実行

実行したディレクトリにVagrantfileができた。


(このままvagrant upしてみたらrsyncエラーが出たのと、
ipアドレス(とホストネーム)を指定したかったが、やってなかったのでVagrantfileに追記した)
VagrantfileのVagrant.configure("2")...以下に下記を追加した

Vagrant.configure("2") do |config|
~~
    config.vm.network "private_network", ip: "192.168.33.10"
    config.vm.hostname = 'hoge.com'
    config.vm.synced_folder ".", "/vagrant", type: "virtualbox"

(rsyncエラー参考:http://qiita.com/tenmyo/items/c2bb714117c98ae979de
※通常のsyncフォルダができるのかは試してません。

これでvagrant up実行。
vagrantが立ち上がった。

Nginxインストール

参考:https://academy.gmocloud.com/advance/20160721/3203

ここから先はvagrant sshして、
su実行、パスワードvagrant入力してroot権限でコマンド実行していく。

yum でrpmパッケージをインストール
yum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

nginxをインストール
yum install --enablerepo=nginx nginx

nginxのdefault.confをコピーして新しいものを作り、最低限いじる。
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/hoge.conf
.confファイルは読み込まれるので、default.confは名前を変えて読み込まれないようにしてみた。
mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf_buckup

hoge.confの中身をまるっと変更
(自分の指定したディレクトリを表示したい。あと最終的にphp使いたいのでそれも書く)
参考:http://qiita.com/you0328/items/cdc92e3fde2dc3bc1d51
参考ページのものにログの出力記述を追加した。

server {
  listen 80;
  server_name hoge.com;
  root /var/www;
  index index.php index.html index.htm;

  access_log /var/log/nginx/hoge_access.log;
  error_log /var/log/nginx/hoge_error.log;

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

  location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/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;
  }
}

nginxを起動
systemctl start nginx

ここでnginxを起動して指定したドメイン(hoge.com)にアクセスしても403エラー Forbiddenになった・・
調べたところSELinuxの設定を変えればよいかもしれないとのこと。
参考:
http://qiita.com/kieaiaarh/items/3455040597ee34c8c49e
http://blog.higty.xyz/archives/231/

現在のSELinuxを確認
getenforce
Enforcing と表示されて、これは有効の意味。
無効にする。

参考:http://rfs.jp/server/security/selinux01.html

configを編集
vi /etc/selinux/config

config内:enforcingをコメントアウトしてpermissiveにする。

#SELINUX=enforcing
SELINUX=permissive

※vagrant再起動で適用された。
※一時的な変更にしたい場合はconfig変更せずに下記コマンドを実行するだけ。
setenforce 0

vagrant再起動してgetenforceで確認
Permissiveになった。

Nginxを再起動
systemctl reload nginx

忘れてたけど、vagrant起動時、常にNginx起動させる設定にしておく
systemctl enable nginx

nginxのconfigのrootに指定したディレクトリにテスト用index.htmlを置いて
hoge.comにアクセスするとページが表示された。

PHP7インストール

参考:http://qiita.com/yanagikouta/items/6c2b0cbd02876e61c71c
phpenvでバージョン管理する方法で行う。

ここからは通常ユーザー(vagrant sshしたときのユーザー)で行う。
(※一度rootで実行してみて、参考ページとインストール先が違っていてうまくいかなかったので、通常ユーザーで再トライした。)

このあと使うのでGitインストール
sudo yum install git

phpenv本体インストール
curl -L https://raw.github.com/CHH/phpenv/master/bin/phpenv-install.sh | bash

php-buildをphpenvのプラグインフォルダ内にクローン
git clone git://github.com/php-build/php-build.git ~/.phpenv/plugins/php-build

.bash_profileの設定
vi ~/.bash_profile

.bash_profileに下記を追記

PATH=$PATH:$HOME/.phpenv/bin
eval "$(phpenv init -)"

.bash_profileをリロード
source ~/.bash_profile

ここまでで、phpenv -vで確認したらバージョンを確認できた。
※rbenvと表示されたけど、とりあえず無視。

phpインストールに必要な物をインストール

sudo yum -y install gcc libxml2-devel bison bison-devel openssl-devel curl-devel libjpeg-devel libpng-devel readline-devel libxslt-devel autoconf automake patch
sudo yum --enablerepo=epel -y install libmcrypt-devel libtidy-devel

参考ページのre2cのインストールでエラーが出てしまったので、
re2cをいれるため(と、ほかエラーが出たため)下記もインストール

yum -y --enablerepo=epel install libXpm-devel freetype-devel re2c libicu-devel gcc-c++

このあとphpenvからphp7インストール(phpenv install 7.0.0実行)してエラーが出たので追加インストールする

エラー内容はこれ

configure: error: Please reinstall the BZip2 distribution

下記を参考にbzip2-develを追加インストール
参考:http://qiita.com/daikiojm/items/0c89656eb934ae279bf0
yum install bzip2-devel

phpenvでphpバージョン指定してインストール
phpenv install 7.0.0

これでphpenv installの完了までいけた。※かなり時間がかかった。

参考ページに沿って続きを進めていく
参考:http://qiita.com/yanagikouta/items/6c2b0cbd02876e61c71c

phpenvの更新とバージョン確認

phpenv rehash
phpenv versions

利用するphpのバージョンを設定
phpenv global 7.0.0

phpのバージョンを確認
php -v
phpのバージョンが確認できた。

参考ページに沿ってphp-fpmまわりを実行していく。
php-fpmの設定ファイルを作成

cd ~/.phpenv/versions/7.0.0/etc
cp php-fpm.conf.default php-fpm.conf

php-fpm.confの編集
vi php-fpm.conf
編集内容は下記
- pid = /var/run/php-fpm.pidを追記、
- events.mechanism = epollのコメントを外す

この時点では/var/run/php-fpm.pidがないけど、
php-fpmが起動された際に/var/run/php-fpm.pidを作ってくれるらしい。

次、confファイルを作成

cd ~/.phpenv/versions/7.0.0/etc/php-fpm.d
cp www.conf.default www.conf

 www.confの編集
vi www.conf

  • user = nobodyとgroup = nobodyをコメントアウトし、その真下に以下を追加
user = nginx
group = nginx
  • listen = 127.0.0.1:9000をコメントアウトし、その真下に以下を追加
listen = /var/run/php-fpm.sock
listen.owner = nginx
listen.group = nginx

php-fpmの起動と自動起動登録
php-fpm起動用スクリプトをソースディレクトリ内から複製して作成

sudo cp /tmp/php-build/source/7.0.0/sapi/fpm/php-fpm.service.in /etc/systemd/system/php-fpm.service

php-fpm.service編集
sudo vi /etc/systemd/system/php-fpm.service
[Service]内(Service下)の項目を全て消し下記に置き換える

Type=simple
PIDFile=/var/run/php-fpm.pid
ExecStart=/home/vagrant/.phpenv/versions/7.0.0/sbin/php-fpm --nodaemonize --fpm-config /home/vagrant/.phpenv/versions/7.0.0/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

php-fpm 起動
sudo systemctl start php-fpm

自動起動設定
sudo systemctl enable php-fpm

最後にnginxを再起動
sudo nginx -s reload


ここまでで、index.php(<?php phpinfo();とだけ記述)をnginxのconfのrootディレクトリに配置したらページが表示された。

MariaDB インストール

一部参考:http://normalblog.net/system/mariadb-install-settings/

以下すべてrootユーザーで実行しました。

MariaDB インストール
yum install mariadb mariadb-server

インストール確認
rpm -qa | grep maria

MariaDB 起動
systemctl start mariadb

初期設定
mysql_secure_installation
※実行したら質問してくる。よくわからなかったので全部noと答えてみた。

confファイルにUTF8記述を追加する
vi /etc/my.cnf.d/server.cnf

[mysqld]下に1行追加

[mysqld]
character-set-server=utf8

MariaDB再起動
systemctl restart mariadb

MariaDBが自動で起動するように
systemctl enable mariadb

MariaDBにログインしてDB作る

ログイン
mysql -u root
※パスワードを入力する場合はmysql -u root -p

※以下メモとったときのままなので大文字と小文字が乱れてますが、どちらでも実行はできるみたいです。

DB作る
CREATE DATABASE hoge;

DB確認する
show databases;

ユーザー作る
hogeにはさきほど作ったDB名、
user_nameには任意のユーザー名、
passwordには好きなパスワードを入力

GRANT ALL PRIVILEGES ON hoge.* TO "user_name"@"localhost" IDENTIFIED BY "password";

ユーザー一覧確認
select Host, User, Password from mysql.user;

\qでログアウト


以上です。

8
10
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
8
10