開発環境構築メモ

Vagrant で開発環境を作ったメモ書き。お目汚し失礼。

### Vagrant 設定

ホストマシンで vagrant の設定

```bash
$ vagrant box add centos67 https://github.com/CommanderK5/packer-centos-template/releases/download/0.6.7/vagrant-centos-6.7.box

$ vagrant init

$ vi Vagrantfile
############################################
Vagrant.configure("2") do |config|
  config.vm.box = "centos67"
  config.vm.network "private_network", ip: "192.168.33.15"

  ## 開発環境なのでセキュリティは許容して config.ssh.insert_key = false と記載
  config.ssh.insert_key = false
end
############################################

# 起動
$ vagrant up

# 作成した仮想環境にログイン
$ vagrant ssh
```

```bash
### シャットダウンするとき
$ vagrant halt

### 一時停止するとき
$ vagrant suspend
```

### python3 のインストール

```bash
# ius レポジトリ追加
[vagrant@yuzu ~]$ yum install https://centos6.iuscommunity.org/ius-release.rpm

[vagrant@yuzu ~]$ yum search python3

# python3 インストール
[vagrant@yuzu ~]$ yum install -y python35u python35u-pip python35u-devel
```
依存の関係で `python35u-libs`と`python35u-setuptools`もインストールされます。

```bash
[vagrant@yuzu ~]$ pip3.5 install --upgrade pip
Requirement already up-to-date: pip in /usr/lib/python3.5/site-packages
```


### python環境作成

```bash
[vagrant@yuzu ~]$ cd /vagrant/

# 仮想環境作成
[vagrant@yuzu vagrant]$ pyvenv-3.5 venv_app1

# 入る
[vagrant@yuzu vagrant]$ source venv_app1/bin/activate

(venv_app1) [vagrant@yuzu vagrant]$

# 抜ける
(venv_app1) [vagrant@yuzu vagrant]$ deactivate

[vagrant@yuzu vagrant]$
```

```bash
# python の場所
(venv_app1) [vagrant@yuzu vagrant]$ which python
/vagrant/venv_app1/bin/python

# python のバージョン
(venv_app1) [vagrant@yuzu vagrant]$ python --version
Python 3.5.2


# pip の場所
(venv_app1) [vagrant@yuzu vagrant]$ which pip
/vagrant/venv_app1/bin/pip

# python の場所
(venv_app1) [vagrant@yuzu vagrant]$ pip --version
pip 8.1.2 from /vagrant/venv_app1/lib64/python3.5/site-packages (python 3.5)
```

```bash
(venv_app1) [vagrant@yuzu vagrant]$ pip3.5 install django

(venv_app1) [vagrant@yuzu vagrant]$ pip3.5 install uwsgi
```


### MySQLインストール

インストール済みファイルの関連でエラーが出るので、事前に削除してしまいます。

```bash
[vagrant@yuzu ~]$ sudo yum remove mysql*
```
`mysql-libs`とともに、依存モジュール`cronie`、`cronie-anacron`、`crontabs`、`postfix`も削除されます。開発環境でなければできない荒業です。


```bash
[vagrant@yuzu ~]$ yum search mysql57

[vagrant@yuzu ~]$ sudo yum install -y mysql57u-server mysql57u-devel


[vagrant@yuzu ~]$ sudo service mysqld start
Initializing MySQL database
Starting mysqld:                                           [  OK  ]

# root のパスワード設定など
[vagrant@yuzu ~]$ mysql_secure_installation
```

### httpd インストール

```bash
[vagrant@yuzu ~]$ sudo yum install -y httpd mod_wsgi
```

```bash
# あとでdiffを取るために、設定ファイルのコピー
[vagrant@yuzu ~]$ sudo cp -i /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf_rpmnew

[vagrant@yuzu ~]$ sudo vi /etc/httpd/conf/httpd.conf
```

```diff
# 不要なモジュールのロードなど全て消してしまいたいが、まずは適当な設定
[vagrant@yuzu ~]$ diff /etc/httpd/conf/httpd.conf.rpmnew /etc/httpd/conf/httpd.conf
44c44
< ServerTokens OS
---
> ServerTokens ProductOnly
163,164c163,164
< LoadModule ldap_module modules/mod_ldap.so
< LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
---
> # LoadModule ldap_module modules/mod_ldap.so
> # LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
167c167
< LoadModule logio_module modules/mod_logio.so
---
> # LoadModule logio_module modules/mod_logio.so
177c177
< LoadModule dav_module modules/mod_dav.so
---
> # LoadModule dav_module modules/mod_dav.so
181c181
< LoadModule dav_fs_module modules/mod_dav_fs.so
---
> # LoadModule dav_fs_module modules/mod_dav_fs.so
186,187c186,187
< LoadModule speling_module modules/mod_speling.so
< LoadModule userdir_module modules/mod_userdir.so
---
> # LoadModule speling_module modules/mod_speling.so
> # LoadModule userdir_module modules/mod_userdir.so
191,196c191,196
< LoadModule proxy_module modules/mod_proxy.so
< LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
< LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
< LoadModule proxy_http_module modules/mod_proxy_http.so
< LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
< LoadModule proxy_connect_module modules/mod_proxy_connect.so
---
> # LoadModule proxy_module modules/mod_proxy.so
> # LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
> # LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
> # LoadModule proxy_http_module modules/mod_proxy_http.so
> # LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
> # LoadModule proxy_connect_module modules/mod_proxy_connect.so
200c200
< LoadModule cgi_module modules/mod_cgi.so
---
> # LoadModule cgi_module modules/mod_cgi.so
276c276
< #ServerName www.example.com:80
---
> ServerName *:80
331c331
<     Options Indexes FollowSymLinks
---
>     Options -Indexes FollowSymLinks
402c402
< DirectoryIndex index.html index.html.var
---
> DirectoryIndex index.html
536c536
< ServerSignature On
---
> ServerSignature Off
```

```bash
[vagrant@yuzu ~]$ sudo service httpd configtest
Syntax OK

[vagrant@yuzu ~]$ sudo service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]
```


### 参考と注釈

* [クイックインストールガイド - django](https://docs.djangoproject.com/ja/1.10/intro/install/)

* [28.3. venv — 仮想環境の作成](http://docs.python.jp/3/library/venv.html)

* [Python3.4 + Djangoで作るWebアプリケーション(Part.1 環境構築編) - Qiita](http://qiita.com/taijijiji/items/8da746e150d1e0947107)

* [Problems installing python3 on RHEL - stackoverflow](http://stackoverflow.com/questions/8087184/problems-installing-python3-on-rhel)

* [error: command 'x86_64-linux-gnu-gcc' when installing mysqlclient - stack overflow](http://stackoverflow.com/questions/33315210/error-command-x86-64-linux-gnu-gcc-when-installing-mysqlclient)

* [【シンプル】CentOS6にMySQL5.7をyumで簡単にインストールする手順 - 田舎に住みたいエンジニアの日記](http://blog.ybbo.net/2015/03/11/how-to-install-mysql5-7-to-centos6-using-yum/)

* [vagrant コマンド（起動・再起動・シャットダウン等々）備忘録 - Qiita](http://qiita.com/htk_jp/items/929875eaa5afc71c25ed)