CentOSのGitと各種env系の環境構築[vagrant]

# Vagrantの環境設定

Vagrantfileを設定記載

```txt:Vagrantfile
35|  config.vm.network "private_network", ip: "192.168.44.55" # 適当なIPを指定しましょう。
46|  config.vm.synced_folder "./dev", "/home/vagrant/dev"
```
windows側が左で vagrantのファイルが右です
※あらかじめ指定のディレクトリは作成しておきましょう。

# CentOSの環境設定

## 言語の設定

初期設定のままだとドイツ語と非常に面倒くさいです。
その為日本語に再設定したいと思います。

設定の確認コマンド
`$ System Locale`

変換できる言語一覧の表示
`$ localectl list-locales | grep ja`

``` text:result
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc
````

utf-8が最近一般的なのでこんな感じでやっときます。

設定の変更
言語
`$ localectl set-locale LANG=ja_JP.utf8`

キーボード
`$ localectl set-keymap jp106`

以上を設定し、再起動を行えば無事日本語化が完了します。
`$ sudo shutdown -r now`

### 参考記事
[VagrantのCentOS7にて日本語設定](https://qiita.com/sirone/items/a210c4f26ef9dbfef4b4)


## Gitのインストール

直接最新版のgitの環境をインストールするのは依存パッケージの関係で難しいため
yumを通して過去バージョンをインストールした後に、

### 手順
#### パターン１

``` SHELL
# 予め
# $ git clone git clone git://git.kernel.org/pub/scm/git/git.git
# を他の環境で実行しておいて、ファイルを引っ張り、依存環境解決しても可

$ sudo yum update
$ sudo yum -y install git
$ sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
$ sudo yum remove git
$ cd /usr/local/src
$ sudo git clone git://git.kernel.org/pub/scm/git/git.git
$ cd git
$ sudo make prefix=/usr/local all
$ sudo make prefix=/usr/local install
$ exec $SHELL
$ git --version
```

#### パターン２

``` SHELL
# ① $ git clone git clone git://git.kernel.org/pub/scm/git/git.git
# を他の環境で実行しておいて、ファイルを引っ張り、依存環境解決しても可

$ sudo yum update
$ sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
$ sudo yum remove git
$ cd /usr/local/src
$ wget https://www.kernel.org/pub/software/scm/git/git-2.4.0.tar.gz
$ tar zxvf git-2.4.0.tar.gz
$ cd git
$ sudo make prefix=/usr/local all
$ sudo make prefix=/usr/local install
$ exec $SHELL
$ git --version
```
### 参考にしたサイト
[CentOSに最新版のGitをインストール・アップデートする方法](http://www.task-notes.com/entry/20150622/1434942000)

### Updateの方法

## Apache2.4系のインストール

```SHELL
$ sudo yum install httpd httpd-devel
$ sudo systemctl enable httpd.service
$ sudo systemctl start httpd.service
$ sudo systemctl status httpd.service
```

### 外部から接続する場合CentOS7はfirewallを切る必要がある

```SHELL
$ sudo systemctl disable firewalld
$ sudo systemctl stop firewalld
```

### 設定ファイルなどなど

コンフィグの確認
`$ cat /etc/httpd/conf/httpd.conf`


## MySQLのインストール

CentOS7では最初から**MariaDB**が入っている（らしいが、socketエラーが出て自分は面倒だったのでMySQLをインストール）
ので競合しないように削除しておく必要がある

```
$ sudo yum -y remove mariadb-libs
$ sudo rm -rf /var/lib/mysql
```

### 手順

```SHELL
$ sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
$ sudo yum -y install mysql-community-server
$ mysqld --version
mysqld  Ver 5.7.22 for Linux on x86_64 (MySQL Community Server (GPL))
# インストール完了！
```

起動コマンド
`$ sudo systemctl start mysqld.service`

自動起動設定
`$ sudo systemctl enable mysqld.service`

#### 初期設定

```SHELL
$ sudo cat /var/log/mysqld.log | grep password |  awk '{print substr($0, length
($0) - 27, length($0))}'
root@localhost: uhsd!Aid;3Zt
```

**uhsd!Aid;3Zt10**この[localhos :]以降がパスワードとなるのでメモしておこう。

対話形式でパスワードの設定を行います
`$ mysql_secure_installation `
※パスワードの設定を求められますが、記号を含まなければいけないため注意が必要です
※何か聞かれても大体`y`でok

### その他設定関連【重要】

MySQLの設定を開きます

```SHELL
$ sudo vi /etc/my.conf
```

mysqldの中身を変更
character-set-server = utf8   // 文字コードの設定
default_password_lifetime = 0 // 初期設定だと1年経過するとパスワードを変更していないとログインできなくなる

```txt:my.conf
[mysqld]
.
.
.
character-set-server = utf8
default_password_lifetime = 0
```

設定を反映させるために再起動を行う
`$ sudo systemctl restart mysqld.service`

### 起動確認

```SHELL
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.22 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
```




### 参考にしたサイト

[CentOS 7 に MySQL 5.7 を yum インストールして初期設定までやってみた](https://enomotodev.hatenablog.com/entry/2016/09/01/225200)

## Rbenvのインストール (お好み)

### 手順
昔は意味が分からなかったけど ~/.bash_profile (/home/vagrant/.bash_profile)へ、[>>] [Redirectによる追記]を実行する。

```SHELL
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv


$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
# ruby-buildのインストール
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
```

念のため`$ cat .bash_profile`で確認しよう

```txt
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
#
```

### 備考
環境にもよりますが、Rubyのダウンロードとインストールが***めちゃくちゃ長い***ので気長に待ちましょう。

### Railsを使ってみよう。
[Ruby on Rails 5.2.0 チュートリアル](https://qiita.com/drafts/88d3d4b759e2683cfc8a)

### 参考にしたサイト
[rbenv を使って ruby をインストールする(CentOS編)](https://qiita.com/inouet/items/478f4228dbbcd442bfe8)


## Pyenvのインストール (お好み)

### 手順

```SHELL
$ git clone https://github.com/pyenv/pyenv ~/.pyenv

$ echo '# Pyenv' >> ~/.bash_profile
$ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
```

### 備考
Rubyと同じくインストールに関してめちゃくちゃ重たいので気長にまとう

### anacondaを使ってみよう。(ディープラーニング)
`$ pyenv install anaconda3-5.1.0`
ディープラーニングに関しては後日追記します。

### 参考にしたサイト
[Pyenvの使い方](https://qiita.com/mogom625/items/b1b673f530a05ec6b423)






## goenvのインストール(お好み)
### 手順
```SHELL
$ git clone https://github.com/syndbg/goenv.git ~/.goenv
$ echo '# goenv PATH ' >> ~/.bash_profile
$ echo 'export PATH="$HOME/.goenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(goenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
$ goenv -v
```


### 参考にしたサイト
[goenvでgoをインストール 〜初心者向け〜](https://qiita.com/yut-kt/items/9f5ac1e788df61f64290
)

## phpenvのインストール(お好み)
### 手順

※rbenvが元に作成されているのでところどころ名残があり、rbenvと一部表示される部分等がありますが、問題はありません。
※re2cが中々曲者です

```SHELL
# 依存ライブラリの解決 必要ない物も含まれるかもしれません。
$ sudo -y yum install epel-release re2c mhash libmcrypt-devel bison libtidy-devel
# 依存ライブラリの解決
$ mkdir documents
$ cd documents
$ git clone https://github.com/CHH/phpenv.git
$ cd phpenv/bin
$ sh phpenv-install.sh
$ echo '#phpenv' >> ~/.bash_profile
$ echo 'export PATH="/home/vagrant/.phpenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
$ git clone git://github.com/CHH/php-build.git ~/.phpenv/plugins/php-build
$ exec $SHELL -l
```

### apacheとの連携を後日追記

phpenvはデフォルトの設定だと`libphp7.so`が無いらしい（libphp[version].so）

### PHPとApacheの連携を行う

#### libphp[x].soのインストール

```SHELL
$ cd ~/.phpenv/plugins/php-build/share/php-build/definitions
$ sudo vi 7.1.4
# $ sudo vi {PHPversion} 
```

下記の情報を追記する（怒られたら別の方を記述しよう）
`configure_option "--with-apxs2" "/usr/bin/apxs"`
`configure_option "--with-apxs2" "/usr/sbin/apxs"`

```text
configure_option "--with-apxs2" "/usr/bin/apxs"
install_package "https://secure.php.net/distributions/php-7.1.4.tar.bz2"
install_xdebug "2.6.0"
enable_builtin_opcache
```

phpenvでPHPの再インストールを行う
`phpenv install {PHPversion}`
`phpenv install 7.1.4`

`$ sudo cp /usr/lib64/httpd/modules/libphp7.so ~/.phpenv/versions/7.1.4/libexec/libphp7.so`
`$ sudo cp /usr/lib64/httpd/modules/libphp{PHPのバージョン頭1文字}.so ~/.phpenv/versions/{PHPのバージョン}/libexec/libphp7.so`

#### Apacheの設定を追記する。

`$ sudo vi /etc/httpd/conf.d/php.conf`

```txt:php.comf
# 先ほどコピーしたlibphp5.soを参照する
LoadModule php7_module /home/vagrant/.phpenv/versions/7.1.4/libexec/libphp7.so
# LoadModule php{頭バージョン}_module /home/vagrant/.phpenv/versions/{全バージョン}/libexec/libphp{頭バージョン}.so
 
# .phpファイルにアクセスした場合PHPスクリプトとして扱う記述
AddType application/x-httpd-php .php
 
# デフォルトファイルの追加
DirectoryIndex index.php
```

```SHELL

$ sudo httpd -t
Syntax OK
$ sudo service httpd stop
$ sudo service httpd start

```

### 備考

phpenvでインストールする際
`[Compiling]: /tmp/php-build/source/7.1.4`
で、***かなりの時間止まりますが***、気長に待ちましょう。


### 参考にしたサイト
[phpenv インストール](https://qiita.com/furifan/items/981f476eb25b7fc06469)
[phpenvの導入して複数バージョンのPHPを管理する](https://qiita.com/uchiko/items/5f1843d3d848de619fdf)
[PHP7をCentOS7にインストールする手順](https://blog.noldor.info/php7-on-centos7/)
[ひとりごと-PHP tidy のインストールにはまった](http://blog.livedoor.jp/glantank/archives/50971839.html)


## nodenvのインストール(お好み)
### 手順

```SHELL
$ git clone git://github.com/nodenv/nodenv.git ~/.nodenv
$ git clone https://github.com/nodenv/node-build.git ~/.nodenv/plugins/node-build
$ echo '# nodenv PATH ' >> ~/.bash_profile
$ echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(nodenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
$ nodenv -v
```


### 参考にしたサイト
[nodenv を使って Mac に Node.js の環境を構築する](https://qiita.com/1000ch/items/41ea7caffe8c42c5211c)