CentOS
Hyper-V
Windows10

俺のHyper-V - CentOSセットアップ

More than 1 year has passed since last update.

Hype-VでCentOS7でLEMPを構築

Docker for Windowsはなんだか面倒くさくてやる気失せた。
使いたいやつだけが使えば良い(ナードなインフラ屋が歓喜してるブログ記事とかうんざり)。

で、Windows10 proなのでHyper-V使えるので、普通にVM作ることにした。
Hyper-Vのセットアップは大したことないので省略。ググれば直ぐに出てくる。

主にローカルで何も考えずにさくっと開発を開始出来る環境という前提。
OSはタイトルの通り、CentOS7。インストールは大した作業でもないので必要最低限で入れておけばOK。

Hyper-VはWindows起動時に自動的に元の状態を復元してくれるのでVagrantなどより遥かに楽。しかもOSSではなくWindowsネイティブにチューニングされているのもあり、起動が速いのも特徴。動作も安定。

システム

  • sudo -sでパス無しでrootになれる設定
    • 最終行に記述する
    • 一般ユーザはcentos7とする
# visudo

centos7 ALL=(ALL) NOPASSWD: ALL
  • システムのアップデートや便利ツールなどを入れる
# yum -y update
# yum -y groupinstall "Base" "Development tools"
# yum -y install expect bind-utils wget gcc-c++ vim rsync make nkf jq
# yum -y install epel-release

LEMP

php

# yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# yum install --enablerepo=remi-php71 php php-cli php-common php-devel php-fpm php-gd php-mbstring php-mysqlnd php-pdo php-pear php-pecl-apcu php-soap php-xml php-xmlrpc

mariadb

接続用ユーザとパスワードはどちらもcentos7とする。

# yum -y install mariadb-server
# systemctl start mariadb
# mysqladmin -u root password 'centos7'
# mysql -uroot
> grant all privileges on *.* to centos7@"%" identified by 'centos7' with grant option;

nginx

# yum -y install nginx

設定

php

vi /etc/php.ini

date.timezone = Asia/Tokyo
memory_limit = 512M
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = UTF-8
mbstring.http_output = UTF-8
mbstring.detect_order = auto

php-fpm

vi /etc/php-fpm.d/www.conf

user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx

nginx

  • プロジェクトごとによって内容が違うので適宜対応する

フォルダの共有

Windows側で以下を行う。

  1. 任意のフォルダを右クリック → 共有 → 共有設定を行う(共有名をつけておく)
  2. 右クリック → プロパティ → 全般タブ → 読み取り専用 チェック外す
  3. セキュリティタブ → 詳細設定ボタン → 「子オブジェクトのアクセス許可~」にチェック → 適用

CentOS側で以下を行う。

  • 一般ユーザcentos7に、wwwというグループを作成して追加する。
  • その後共有フォルダのSGIDビットを建ててwwwグループのユーザならアクセス可能にしておく。
    • 他のユーザもアクセスさせたかったらこのwwwグループに追加すれば良い
# groupadd www
# usermod -a -G www centos7
# chmod 2775 /var/www
# find /var/www -type d -exec chmod 2775 {} \;
# find /var/www -type f -exec chmod 0664 {} \;

以下はWindowsとの共有で必要なパッケージのインストールと、共有コマンド。

# yum install cifs-utils
# mount -t cifs //<WinのIPアドレス>/<共有名>/ /var/www/ -o username=<Winユーザ名>,password=<ログインパスワード>,dir_mode=0777,file_mode=0777,uid=centos7,gid=www
  • ユーザ名、パスワードの記号は一部エスケープする必要がある
    • !\!のようにエスケープしておかないと認識されない
  • 永続化するにはrc.localに記述する
    • systemdに変わったのでrc.localには実行権限をつけておくだけでOKになった
# cd /etc/rc.d
# chmod u+x rc.local
# vi rc.local

mount -t cifs //<WinのIPアドレス>/<共有名>/ /var/www/ -o username=<Winユーザ名>,password=<ログインパスワード>,dir_mode=0777,file_mode=0777,uid=centos7,gid=www