Google先生と二人三脚で環境構築をした思い出（Mac）

私のプログラマの定義って「**LAMP環境の構築を自走してできること**」なんです。
XAMPPは使いません。VirtualboxとVagrantで組みます。
正直、環境構築できた段階で
**・Linuxコマンドが「黒い画面」で打てる。**
**・サーバの概念が身についている。**
**・基本的なSQLが書ける。**
**・Gitも使える。**
くらいの状態になると思うので、あとはどんな言語だって、良いと思うのですよね。

現場を離れて2年ちかく経ちます。
今はクラウド(AWSとか)、JSならReactだよね、とか、技術トレンドは常に動いていますが、上記の環境構築ができれば、今でも基礎的な技術面では通じると思うのですよね。

# そもそも、何でGoogle先生と勉強したの
当時の私のスペックですが、
・基本情報技術者試験のテキストを読んではいる
・Progateで言語の基本的な記述は学習している
・サーバ周りは全然わからない
・そもそもLAMPってなんですか
という感じでした。

「人に聞いたら良かったじゃん」と、思われた方もいるでしょう。
**新規事業所立ち上げでまず私しかスタッフがいなかったんだ。** さみしいね。
あと、私以外の人全員**Windowsだったんだ。** 何故端末選ばせたし。

ということで、Google先生と仲良く構築していきました。
結論から言うと、1か月かかりました。
でも、いちから自分でやってみると、達成感があります。
1か月も時間をくださった元職場には感謝です。

# Mac環境構築の流れ
開発環境の構築（Mac）

:::note warn
注意
2020年時点での情報です。メモの書き起こしなのでリンク切れとかあるかも。
:::


大まかな流れ。
##### ①virtualbox 、vagrantをインストール
##### ②vagrantでCentOSサーバー構築
##### ③Apacheインストール
##### ④PHPインストール
##### ⑤DBインストール（今回はpostgres）
##### ⑥共有フォルダの設定
##### ⑦ネットワークの設定
##### ⑧gitを導入する


# ①virtualbox 、vagrantをインストール

【virtualbox】
https://www.virtualbox.org/

【vagrant】
https://www.vagrantup.com/downloads.html

※version違いで立ち上げができないこともある
(vagrant2.2.6、Virtualbox 6.1(最新版）でハマった)
→その場合はバージョンを下げて再インストールする


# ②vagrantでCentOSサーバー構築

参考:

https://qiita.com/RyochanUedasan/items/b1ff13bc39913cb5b561

❶Vagrantとvirtualboxの現在のバージョン確認
$ VBoxManage -v
$ vagrant -v

❷Vagrantを使うためのディレクトリを作成 & 移動
$ mkdir vagrant_centos7
$ cd vagrant_centos7

❸CentOS7のboxを追加
Vagrantbox.es (http://www.vagrantbox.es/) からお目当てのCentOS7を探して、URLをコピー。そのURLを使って、boxを追加。
#vagrant box add [vagrantのbox名] [boxのURL]
↓はどこのディレクトリで実行してもOK
$ vagrant box add centos7.1 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box
↓は仮想サーバーを起動させたいディレクトリで実行
$ vagrant init

❹追加したboxを利用して仮想サーバーを起動
これから、↓は仮想サーバーを起動させたいディレクトリで実行
#vagrant init [↑で指定したvagrantのbox名]
$ vagrant init CentOS7.1 # 初期化する（Vagrantfileを生成する）
$ vagrant up # 起動する
$ vagrant ssh # 接続する
[vagrant@localhost ~]$ # 仮想サーバーに入った


# ③Apacheインストール
Apacheインストール
Apacheは基本的に最新バージョンのインストール推奨
CentOSサーバー内で

  sudo yum install -y httpd

  サーバー起動時にApache起動
  sudo systemctl enable httpd.service

  Apache起動
  sudo systemctl restart httpd.service

  Apache起動確認
  service httpd status

参考:

https://qiita.com/okdyy75/items/d3492e4ea7136d3b6ffc 

# ④PHPインストール
PHPインストール
CentOSサーバー内で

yumにEPELリポジトリを追加

・EPEL
sudo yum install -y epel-release
yumにRemiリポジトリを追加

・Remi
sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm

・sudo yum update -y でyumを更新

・PHP本体 + PHP関連のモジュールをインストール
sudo yum install -y --enablerepo=remi,remi-php73 php php-zip php-devel php-mbstring php-pdo php-xml php-bcmath

・PHPがインストールされたか確認
php -v

（# PHP本体と関連のパッケージを削除する場合）
sudo yum remove php-*

参考:

https://qiita.com/okdyy75/items/d3492e4ea7136d3b6ffc


# ⑤DBインストール（今回はpostgres）

参考:

https://traveler0401.com/vagrant-postgre/


❶Postgreをインストール
sudo yum install postgresql-server

❷データベースを作成
sudo service postgresql initdb

❸Postgreを起動
sudo service postgresql start

❹自動起動するようにする
udo chkconfig postgresql on

❺DB作成
sudo -u postgres createdb DBの名前

❻作成したDBにログイン
sudo -u postgres psql DBの名前

❼ユーザーを作成（DBにログインした状態で）
create user vagrant;
※ここではvagrantというユーザーが作成される
（vagrantのユーザーもvagrantなのでログインしやすくなる）

❽ログイン（簡素版）
psql DBの名前

❼の通りCentOSにログインしているユーザもvagrantなので、postgreにログインする際にユーザ名を省略できる。

ハマったら↓

https://blog.fkoji.com/2015/02260627.html

https://qiita.com/fromage-blanc/items/0759f1efb4cc2cd6f6c6

https://qiita.com/s0208_wataru/items/3f56bfea05f50d6e80f8




# ⑥共有フォルダの設定
参考:

https://qiita.com/centipede/items/5b3cb4965618993cefec 

共有フォルダの設定（Vagrantfile に記述）
該当箇所を以下のように書き換える。
Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "./data", "/vagrant_data"


 ・"./data"のところにローカル側のフォルダを指定する
 ・"/vagrant_data"のところにゲスト側のフォルダを設定する
・config.vm.network "private_network", ip: "192.168.33.10"
で、192.168.33.10/（"/vagrant_data"以下のフォルダパス）をブラウザで表示するとそのファイルを開くことができる

# ⑦ネットワークの設定
❶プラグインが入っているか確認
vagrant plugin list

❷vagrant-vbguest がない場合インストール
vagrant plugin install vagrant-vbguest

❸bguest の状態を確認
vagrant up

vagrant vbguest --status

[default] GuestAdditions 5.2.6 running --- OK.
のように表示されたらOK



# ⑧gitを導入する
参考: 

https://qiita.com/terufumi1122/items/607bd7a5b695a90f07d8

http://nonaka-katuma-hal.hatenablog.com/entry/2017/05/09/185911


Vagrant 上で作成されるデータは、Synced Folder 機能でホストOS に保存(共有)する利用形態を取れば、Vagrant 上でのデータのことは ほとんど考える必要がなくなる

流れとしては:
* ホスト側にソースコードを置き、git で管理
* Synched Folder 機能でVagrant 側のマシンとデータ共有(ソースコード)
* Vagrant 上でソースコードを編集
* ホスト側でソースコードをコミット・プッシュ

このように、Vagrant 側にgit をインストールしなくても、ホストOS だけでバージョン管理をすることができる。

---------
一人でやっていて、誰も周りにいなくて、エラーはいっぱい出るし、そのたびにGoogle先生におしえてもらって、いろんな人の記事を読んで、たどり着いたのが上記。
アパッチってなに？からのスタートです。楽しいけれど長い冒険でした。

終わり。