Elixir Phoenixインストールまでの解説

この記事ではElixirのPhoenixのインストールまでのコマンドについて詳細に解説をしていく記事になります。

参考にしたのは以下のサイトのコマンドになります。
個人的に一度以上手を動かして動作を確認済みのためこの記事の通りにコマンドを実行すれば間違いなくPhoenixのインストールまでは完遂できることは確認済みです。
ですが、なぜこのコマンドを実行するのか？なんの目的でやっている処理なのかが明確に理解できずにいました。
そのためその内容を順番に解説するのがこの記事の目的となります。

https://qiita.com/piacerex/items/01e89435af0f7a454ad2

## ElixirとPhoenixのインストール
### wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb

wgetはインストールのためのコマンドになります。
web上からファイルのダウンロードを行います。
今回はhttps://packages.erlang-solutions.com/erlang-solutions_2.0_all.debをダウンロードします
このダウンロードする中身はdebファイルでありバイナリパッケージが含まれています。

> GNU Wget is a free utility for non-interactive download of files from the Web. It supports HTTP, HTTPS, and FTP protocols, as well as retrieval through HTTP proxies.

> バイナリパッケージ。これは実行可能ファイルや設定ファイル、man/info ページ、著作権情報、その他の文書を収録します。この種のパッケージは Debian 固有の圧縮形式 (「Debian のバイナリパッケージはどんな形式ですか?」 参照) で配布されています。通常、ファイルの拡張子が「.deb」だという特徴があります。

https://www.gnu.org/software/wget/manual/wget.html#Overview

https://www.debian.org/doc/manuals/debian-faq/pkg-basics.ja.html

### sudo dpkg -i erlang-solutions_2.0_all.deb
dpkg -i でダウンロードしたerlang-solutions_2.0_all.debのインストールを行う

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/330568/b11e8030-c95e-3a21-c42a-c736d28546f8.png)


> 「dpkg」とはdebianのパッケージである「deb」ファイルを取り扱うコマンドである。名前の由来は「Debian Package」の略とされている。
> dpkgはdebファイルを使用するときの基礎コマンドであり、丁度Redhat系列でいうところの「rpm」コマンドに相当する。

https://eng-entrance.com/linux-package-dpkg

### sudo apt update -y
パッケージのインストールが行われたためパッケージリストの更新を行う。
なおこのコマンドを実行する目的は以下スクショ抜粋
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/330568/b74b8fe2-4697-46d2-a71f-f3ddcab56dfb.png)

https://karoten512.hatenablog.com/entry/2018/01/09/003330

### sudo apt install erlang -y

sudo apt install erlang -y
sudo apt install inotify-tools -y
sudo apt install erlang-xmerl -y
sudo apt install erlang-os-mon -y
sudo apt install elixir -y
まで同じコマンドでの実行のためまとめて解説を行う

パッケージのインストールを行い、-yオプションですべての選択を自動でyesにする

### mix archive.install hex phx_new 1.6.15
アーカイブをローカルにインストール

https://hexdocs.pm/mix/1.12/Mix.Tasks.Archive.Install.html


### elixir --version
elixirのバージョン確認
> -v, --version                Prints Erlang/OTP and Elixir versions (standalone)

### mix archive 
インストールされているすべてのアーカイブを一覧表示

https://hexdocs.pm/mix/1.12/Mix.Tasks.Archive.html

### sudo apt update
インストールしたパッケージの更新

### sudo apt install postgresql -y
postgresqlのインストール

### sudo service postgresql start
スーパーユーザー権限でPostgreSQLデータベースが起動

### sudo su - postgres -c psql
su - postgresでpostgreSQLのシステムユーザーであるpostgresに切り替え
-c psql PostgreSQLの対話型シェルであるpsqlを起動

### postgres=# alter role postgres with password 'postgres';
パスワード設定
https://www.ajisaba.net/db/postgresql/role_password.html

### postgres=# \q
postgresからのログアウト

### mix phx.new basic
プロジェクトの作成

> Creates a new Phoenix project.
It expects the path of the project as an argument.

https://hexdocs.pm/phoenix/Mix.Tasks.Phx.New.html

### cd basic
階層の移動

### mix ecto.create
リポジトリのストレージの作成
Postgresの中にデータベースを作る

https://elixirschool.com/ja/lessons/ecto/basics

### iex -S mix phx.server
iexは対話型のシェルの起動
-Sオプションは指定されたスクリプト実行のためのオプション
mix phx.serverはPhoenixの開発サーバーの起動のためのコマンド

>DESCRIPTION
     The interactive shell is used for evaluation, debugging and introspection of the Elixir runtime system. It is
     also possible to use the program for testing the work of small pieces of code escaping the stage of saving the
     code in a file.
     
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/330568/cd351512-5b77-eabb-b103-10e05cdd6c86.png)