3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PhoenixServerインストール(CentOS編)

Last updated at Posted at 2019-04-30

概要

Ubuntu編のインストール手順をアップしたのですが、CentOSのインストール手順もアップしようと思います。

手順サマリー

 1.AWSインスタンスの用意
 2.OSの基本設定/パッケージアップデートとサーバー再起動
 3.各種前提パッケージのインストール
 4.erlang/Elixirのインストール
 5.PostgreSQLの設定
 6.Elixirの初期設定/Phoenixサーバーの起動と設定

1.AWSインスタンスの用意

使用したAMIは以下です。

image.png

画像だとOSのバージョンが分からないのですが、CentOS Linux release 7.6.1810 (Core)です。
インスタンスタイプはUbuntuのインストール時と異なりt2.largeを指定しています。
理由ですが、途中でElixirをソースコンパイルしたのですが、
その際にメモリが不足している旨のエラーが出力されたためです(汗

2.OSの基本設定/パッケージアップデートとサーバー再起動

ほぼほぼ、Ubuntuの時と変わらないです。

1.ホスト名の設定
2.selinuxの無効化
3.sudoユーザーの作成(パスワード設定含む/rootも一緒に設定)

ホスト名の設定
hostnamectl set-hostname <MyHostName>
selinuxの無効化
cp -p /etc/selinux/config /etc/selinux/config.org
vi /etc/selinux/config
config編集内容
1
2     # This file controls the state of SELinux on the system.
3     # SELINUX= can take one of these three values:
4     #     enforcing - SELinux security policy is enforced.
5     #     permissive - SELinux prints warnings instead of enforcing.
6     #     disabled - No SELinux policy is loaded.
7     # SELINUX=enforcing
追加   SELINUX=Disabled
8     # SELINUXTYPE= can take one of three values:
9     #     targeted - Targeted processes are protected,
10    #     minimum - Modification of targeted policy. Only selected processes are protected.
11    #     mls - Multi Level Security protection.
12     SELINUXTYPE=targeted
sudoユーザーの作成
useradd work01
passwd work01
ユーザーをwheelグループへ追加
usermod work01 -g wheel

Ubuntuの時と同様にここまで終了したら、パッケージを最新化して、再起動します。

パッケージの最新化と再起動
yum update -y
reboot

サーバーが起動してきたら、以下のコマンドを実行し、実行結果がDisabledと表示されることを確認します。

Selinuxの有効化確認
$ getenforce
Disabled

3.各種前提パッケージのインストール

この後の導入手順でepelリポジトリが必要になるので追加します。

epelリポジトリの追加
sudo yum install epel-release -y
リポジトリの最新化
sudo yum -y update && sudo yum -y upgrade
PostgreSQLのインストール
sudo yum install postgresql-server postgresql postgresql-contrib -y
inotify-toolsのインストール
yum install inotify-tools -y
各種Erlang用の依存パッケージなど必要なパッケージインストール
sudo yum install gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-1.8.0-openjdk-devel git -y
wxbaseライブラリの追加
sudo yum install wxBase.x86_64 -y
wgetの追加
sudo yum install wget -y

4.erlang/Elixirのインストール

erlangインストール用のリポジトリが用意されていますのでそちらを落とします。

Erlangリポジトリダウンロード
wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
Erlangリポジトリの追加/必要パッケージのインストール
sudo rpm -Uvh erlang-solutions-1.0-1.noarch.rpm

ちなみに私はこのタイミングで1回rebootを実行しました。

Erlangのインストール
sudo yum install esl-erlang -y

ここまででErlangのインストールに成功したので、次はElixirのインストールを行います。

まずはElixirを配置するためのディレクトリを作成します。

Elixir用ディレクトリの作成
sudo mkdir /opt/elixir

GitからElixirの最新版リポジトリをクローンします。

Elixirリポジトリのクローン
sudo git clone https://github.com/elixir-lang/elixir.git /opt/elixir

クローンが完了したら、ディレクトリを移動して、Elixirをソースコンパイルします。

ディレクトリ移動/ソースコンパイル
cd /opt/elixir
sudo make clean test

上記のコマンドを実行するとコンパイル後にElixirの各種コマンドに対するテストが行われます。
それが完了したら、以下のコマンドでシンボリックリンクを作成して、パスが通るようにします。

Elixir用のシンボリックリンク作成
sudo ln -s /opt/elixir/bin/iex /usr/local/bin/iex
sudo ln -s /opt/elixir/bin/mix /usr/local/bin/mix
sudo ln -s /opt/elixir/bin/elixir /usr/local/bin/elixir
sudo ln -s /opt/elixir/bin/elixirc /usr/local/bin/elixirc

Elixirが導入されたことを確認するため、以下のコマンドを実行します。

Elixirのバージョン確認
elixir -v

バージョンが表示されればElixirのインストールに成功してます。OKです。

5.PostgreSQLの設定

Ubuntuの時と同様にpostgresユーザーのパスワードを設定したいところなのですが、
CentOSの場合、起動するまでに少し手間が必要でしたので、記載しておきます。

PostgreSQLの初期化
postgresql-setup initdb

上記を実行しないとPostgreSQLのサービスを起動できませんでした。
あと、Ubuntuの時と違う手順になるのですが、PostgreSQLのローカル認証メソッドを
Identからmd5に変更しておきます。

/var/lib/pgsql/data/pg_hba.confファイルの変更
 81   # IPv4 local connections:
 82   #host    all             all             127.0.0.1/32            ident
 追加   host    all             all             127.0.0.1/32            md5
 83   # IPv6 local connections:
 84   #host    all             all             ::1/128                 ident
 追加   host    all             all             ::1/128                 md5
PostgreSQLのサービス起動
sudo systemctl start postgresql
sudo systemctl enable postgresql

以下のコマンドを実行して、PostgreSQLのサービスが起動していることを確認します。

postgresqlサービスの状態確認
sudo systemctl status postgresql

サービスが確認した後、改めて、postgresユーザーのパスワードを変更します。

Postgresユーザーのパスワード変更
sudo -u postgres psql -c "ALTER USER postgres PASSWORD '<YourPassword>';"

Ubuntuの時と同様にALTERROLEが表示されれば、パスワードが変更されたことを意味します。

6.Elixirの初期設定/Phoenixサーバーの起動と設定

こちらの手順はほぼUbuntuの時と同じになります。
ここまでの手順でElixirをコンパイルしたフォルダにいると思いますので、
別のフォルダに移動しておきます。(私の場合、work01ユーザーのホームに移動しています)

ディレクトリの移動
cd
Hexのインストール
mix local.hex

唯一、Ubuntuと違う点なのですが、Elixirをシンボリックリンク作成でパスを通したため、
sudoを使用するとコマンドが見つからなくなりますので、mixを実行する際はsudo不要です。

Hexのインストールが完了したら、次にPhoenixをダウンロードし、ビルドします。

Phoenixのインストール
mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez

Phoenixのプロジェクトを作成します。

Phoenixプロジェクト作成
mix phx.new <YourProjectName>

プロジェクトのディレクトリに移動して、DB作成のタスクを実行します。

ディレクトリ移動
cd <YourProjectName>/
DB作成
mix ecto.create

これはUbuntuの時も同じでしたが、やはり、"plug_cowboy dependency missing"
問題が発生しますので、予め解消しておきます。

設定ファイルの編集
sudo cp -p <YourProjectName>/mix.exs <YourProjectName>/mix.exs.org
sudo vi <YourProjectName>/mix.exs
編集内容
 31   # Specifies your project dependencies.
 32   #
 33   # Type `mix help deps` for examples and options.
 34   defp deps do
 35     [
 36        {:phoenix, "~> 1.3.4"},
 37        {:phoenix_pubsub, "~> 1.0"},
 38        {:phoenix_ecto, "~> 3.2"},
 39        {:postgrex, ">= 0.0.0"},
 40        {:phoenix_html, "~> 2.10"},
 41        {:phoenix_live_reload, "~> 1.0", only: :dev},
 42        {:gettext, "~> 0.11"},
 43        {:cowboy, "~> 1.0"},
 追加       {:plug_cowboy, "~> 1.0"}
 45        ]
 46        end

設定の編集が終わったら、ライブラリの読み込みを実施します。

deps.getコマンド
mix deps.get

そして、ここでUbuntuの時と同様に、node.jsとnpmコマンドのインストール、
アセットのダウンロードまで実施しておきます。

node.jsインストール
sudo yum install nodejs -y
npmインストール
sudo yum install npm -y
アセットのダウンロード
cd assets && npm install

そして、ここまでが終わったら、以下のコマンドでPhoenixを起動します。
注意ですが、アセットをダウンロードするためにassetsフォルダに移動しているため、
以下のコマンドはcd ..で階層上がってから実行してくださいね。

Phoenixの起動
mix phx.server

セキュリティグループはもう大丈夫だと思いますので割愛します。
Webブラウザから4000番でアクセスするとPhoenixサーバーが起動していることを確認できます。

image.png

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?