初心者がdjangoで作ったアプリをサーバーへデプロイしてみたいので環境整えるところまで

# 環境と背景
MacOS Mojave / CentOS7 / VirtualBox / iterm2

学習の中でせっかくwebアプリを作ったのでデプロイしたい。

VPSなど自分で管理するサーバーへデプロイする方法をMemo

セキュリティ関連の知識は別で蓄える必要があるようなので、ここではデプロイまでのプロセスとして。

#必要物を集める
**VirtualBox**
[https://www.virtualbox.org/](https://www.virtualbox.org/)にアクセスしてダウンロード。

<img width="1027" alt="スクリーンショット 2019-08-19 12.51.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/61f554e6-89dd-56ff-26e6-0efc6dc70aa9.png">

間違えようがないくらいデカいボタンがあるけど一応スクショ。

<img width="1031" alt="スクリーンショット 2019-08-19 12.52.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/e2006923-2882-8d8c-c1de-5dcdad79e26c.png">

急に文字文字し出すので、「**VirtualBox 6.0.10 platform packages**」の欄を見て該当の利用OSを選択。Macなので「OS X hosts」。


完了したら、そのままインストールでOKかと。

ちなみにVirtualBoxを一言で解説すると
PCに仮想環境を構築して、他のOSをインストールすることができる仮想化ソフトのこと。

（仮想の）パソコンをもう一個持つようなイメージかな。

---
**CentOS**
[https://www.centos.org/](https://www.centos.org/)にアクセスしてダウンロード。

<img width="1016" alt="スクリーンショット 2019-08-19 13.08.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/ba227f51-f525-ba87-17c6-46e0f8841104.png">

こちらも大きなボタンがあるので問題なし。

<img width="956" alt="スクリーンショット 2019-08-19 13.09.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/a4ebb068-8a7c-a2cc-9864-fc31f70fbc8d.png">

DVD ISOだとフルパッケージだけどまぁ重い。。。ひとまずMinimalで様子をみる。

<img width="995" alt="スクリーンショット 2019-08-19 13.16.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/51d548fd-9e07-d69f-c094-10cf5cead6d7.png">

Oh!激しい文字文字感が。。。

上部のブロックは住んでる地域に近いところで提供してくれているものらしい。ということは下部は遠いってこと。

たしかに、上部のブロックのアドレスを見てみると tsukuba とか yamagata って書いてある。

こういう分散して同じものなのに、あっちこっちからダウンロードできるようになっているものを「ミラーサイト」と呼んでいて、一箇所に集中することで高負荷になってしまうことを避けるための仕組みになっている。

多少、免疫がつくまでは違和感しかなかった。

---
**その他**
vagrantという素晴らしいツールがあるそうだが一旦ここでは使わない方向で。

---
#VirtualBoxにCentOSをインストール準備

VirtualBoxを立ち上げて「新規」のボタンを押すと「名前」の入力を求められるので「CentOS 7」などと入力。下のプルダウンも勝手に変わってくれた。

<img width="497" alt="スクリーンショット 2019-08-19 13.25.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/b833d98a-0d9b-d1eb-c768-cd4da3923bfd.png">

基本は次への連打で良いと思うけど流石に最後の8GBは悩んだが一応そのままで。

<img width="585" alt="スクリーンショット 2019-08-19 13.28.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/aebd3bd7-d4b4-a574-a8db-029e674f04ae.png">

<img width="548" alt="スクリーンショット 2019-08-19 13.28.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/862fd8d0-2814-dfd8-7493-cf3e58a10c81.png">

<img width="598" alt="スクリーンショット 2019-08-19 13.28.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/7eb0a593-832b-6bc8-2347-679375890ff4.png">

<img width="581" alt="スクリーンショット 2019-08-19 13.29.02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/245284c8-7908-2d61-0779-1741da1f792f.png">

<img width="549" alt="スクリーンショット 2019-08-19 13.29.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/9978a196-d7cb-8067-9d41-65a9255ed0a8.png">

終わったら「設定」アイコンを押して、ストレージを選択。

<img width="917" alt="スクリーンショット 2019-08-19 13.33.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/bde42386-f7dc-35d6-d378-59c545211918.png">

光学ドライブと書いてある場所の右側、おそらくCDと思われる青いアイコンを押して、ファイルを選択を押す。

先ほどダウンロードしておいたCentOS（拡張子ISO）を選んで「OK」

<img width="807" alt="スクリーンショット 2019-08-19 13.37.14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/6d726d40-915f-fee0-5517-df6571b7a123.png">

次にネットワークのアイコンを選んで
「アダプター2」のネットワークアダプターを有効にして、「**ブリッジアダプター**」を選んで「OK」。

---
#起動してOSインストール

起動のアイコンを押して起動。

起動するとターミナルのような画面になるので
<img width="521" alt="スクリーンショット 2019-08-19 16.05.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/19e638f2-4ee8-47d6-6234-9a67dab4cd63.png">

「Install CentOS 7」 を選択。

この時、ポップアップが出てくるので「capture」を選択しておく。

これで「PC本体画面」と「VirtualBox内の画面」のマウスがそれぞれ選択できるようになる。

左側の⌘キーでどちらのマウスを動かすか、変更が可能。

<img width="412" alt="スクリーンショット 2019-08-19 16.12.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/aba690a4-0613-0056-194c-6ee314eddf76.png">

まずは言語選択で日本語を選択。

<img width="466" alt="スクリーンショット 2019-08-19 16.14.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/433d87af-38f4-1f8b-7123-c92607b10f80.png">

ここで「インストール先」を選択して、特に設定は変更しなくて良いので、完了ボタンを押すと、さっきまであった「！マーク」が消える。

「ソフトウェアの選択」を選ぶと、上記のOSインストール時に「Minimal」なら選択できないが、「DVD」を選んだ場合には「開発ツール」というソフトもチェックできるようになる。


ちなみに。
Minimalを選んだ場合にも「開発ツール」はインストール可能。（後ほど）

<img width="428" alt="スクリーンショット 2019-08-19 16.23.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315033/16cca6dc-d8f3-9369-38b0-2cc7c7de8dfa.png">

インストールをしている間にROOTパスワードと、ユーザーの作成が可能になるので登録しておく。

インストールが完了すると「再起動ボタン」が出るので再起動する。

---
#インストール後の初期設定
再起動するとユーザー名とパスワードを求められるので、先ほど設定したもの入力して起動。

シャットダウンとかは管理者権限がないとできないので、

```
$ SU
```

としてパスワードを入力。コマンドの前の「$」が「#」になる。
「#」になっていればrootユーザーということ。

元のユーザーに戻るには

```
# exit
```

終了するには

```
# shutdown -h now
```

しばらくかかってVirtualBoxのTOP画面に戻る。

---
#事前の環境構築
**ターミナルからIPアドレスでSSH接続**

先ほどシャットダウンしているので、再度、起動アイコンを押して立ち上げる。登録userでログインしておく。

```
$ ip addr
```

これで接続されているIPアドレスを確認しておく。

いくつかそれっぽいのが見えるけど、一番下段の方のIPが示しているもの。



ターミナルを立ち上げて

```
$ ssh user@xxx.xxx.xx.x
```
userはユーザー名
xxxはIPアドレスを入力。

接続後にPythonのバージョンを確認してみると

```
$ python -V
```

なんと2系。。。

ここからは
・3系をインストールする準備物
・python3系のインストール
・pipのインストール
・venvのインストール
・venvで環境設定

ということで「IUS」というRedHatやCentOSなど向けに新しいRPM（ソフトウェアパッケージ管理ツール）を提供しているリポジトリがあるので追加。

```
$ su
```

でスーパーユーザーに切り替えて
**3系をインストールする準備物**

```
# yum install -y https://centos7.iuscommunity.org/ius-release.rpm
```

```
# yum install epel-release
```

**python3系のインストール**

```
# yum install python36u
```

**pipのインストール**

```
# sudo yum install python2-pip
```

更新メッセージが出ていたら最新にしておく。

```
# pip install --upgrade pip
```


**venvのインストール**

```
# pip install virtualenv
```

**おまけ**
Cent OS のところで「開発者ツール」を入れたいと思ったら

```
# yum groupinstall "Development Tools"
```

いくつか不足しているらしいのでさらに。

```
# yum -y install openssl openssl-devel readline-devel zlib-devel curl-devel libyaml-devel flex libxml2-devel zlib-devel libpng-devel libjpeg-devel libXpm-devel freetype freetype-devel
```

---
#デプロイ前の準備

デプロイするディレクトリを作る。

```
# mkdir -p /opt/django
# cd /opt/django
# virtualenv -p python3.6 sns
```

「opt」や「django」は任意の名前。「sns」は任意のプロジェクト名。

ここで作った「sns」ディレクトリに移動すると「bin」ディレクトリもできているので

```
# source bin/activate
```

でvenv環境に入ることができる。（[以前の記事はこちら](https://qiita.com/pee3/items/8fd5f10a1c62ad542944)）

**Gitもインストール**

```
(sns)# yum install git
```

**クローン**：Gitのリポジトリの内容をそのまま持ってくること

```
(sns)# git clone https://xxx.xxx
```

xxxは自身のものに合わせて。Bitbucketならリポジトリに入った上部に記載してあるURL。


**Djangoもインストールしておく**

```
(sns)# pip install django
```
長くなりそうなので、ひとまずここまで。