社内アプリの配信用にEMLauncherをデプロイして動作させる

More than 1 year has passed since last update.

目的

KLabさんの提供しているEMLauncherをデプロイして、アプリを配信しiOS端末でOTAインストールが出来るようになること。
今までTestFlightをなぁなぁで利用していたのでツケを払う時がきた...

前提条件とでぃすくれいまー

  • AWS S3(または互換サービス)のアカウントが準備され、APIキーとEMLauncher用のBucketを用意してあること
  • EMLauncher用のドメイン及びSSL証明書を取得済みであること
  • 本記事はクラウドエヌ ComputeのプランvQ(CentOS 6.5)のインスタンス上に構築する事を想定しています
  • セキュリティグループの設定やその他ミドルウェアの設定・チューニングは取り扱いません
  • 本記事のすべては AT YOUR OWN RISK でお願いします

作業手順

# 何はともあれアップデート
yum update

# メモリ不足に備えswap作成
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile
sudo sh -c "echo '/swapfile swap swap defaults 0 0' >> /etc/fstab"

# epel, remi を追加
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

# 必要パッケージをインストール
yum install php php-pdo php-mysql httpd mod_ssl mysql-server memcached php-pecl-memcache php-mbstring php-pecl-imagick git unzip --enablerepo=remi

# SELinuxの設定
setsebool -P httpd_can_network_memcache true
setsebool -P httpd_can_sendmail true

# 以後, EMLauncherを /opt/appstore/emlauncher にて動作させる前提で,
# appstore というユーザを作成し操作しますが, sudoは省いていますので適宜補完下さい.
adduser appstore
passwd appstore
vi /etc/sudoers
su - appstore

# ディレクトリの作成
mkdir /opt/appstore
cd /opt/appstore
chown appstore:appstore /opt/appstore

# EMLauncherを展開, 準備
git clone https://github.com/purintai/emlauncher.git
cd emlauncher
git submodule init
git submodule update

### EMLauncherの設定 ここから ###

# DBのユーザ名とパスワードを書いたファイルを生成
echo 'emlauncher:password' > config/dbauth

# DB初期化用SQLファイルを編集
# identified by 'xxxxxxxx'; の xxxxの部分をパスワードに変更
vi data/sql/database.sql

# config内のsampleファイルをコピー
cp config/emlauncher_config_sample.php config/emlauncher_config.php
cp config/mfw_serverenv_config_sample.php config/mfw_serverenv_config.php

# config/emlauncher_config.php を編集
vi config/emlauncher_config.php
## 'mail_sender' の @example.com の部分を自分のドメインにしておけば迷惑メール扱いされにくくなります
## 'enable_https' は true にしましょう
## 'enable_password' は true
## 'enable_google_auth' は 設定するつもりがなければ false にしましょう
## 'aws'内の 'key' と 'secret' には AWS S3(もしくは互換) API用のアクセスキーとシークレットキー
## 'base_url' には AWS S3(もしくは互換) APIのEndpoint URL
## クラウドエヌ ObjectStorageなら 'https://str.cloudn-service.com' です.
## その他, 'bucket_name' 等の変更はお好みで.

# config/mfw_serverenv_config.php を編集
vi config/mfw_serverenv_config.php
## 'database'内 'authfile' は dbauthファイルの位置
## 先ほどの例なら '/opt/appstore/emlauncher/config/dbauth'
## その他の変更はお好みで.

## EMLauncherの設定 ここまで ###

# Apache httpd.confの設定
# この内容でも動きますがあくまで一例ですので設定はご自身でお詰め下さい.
vi /etc/httpd/conf/httpd.conf
## ファイル末尾に以下5行を突っ込む (##は抜いて下さい)
## DocumentRoot /opt/appstore/emlauncher/web
## SetEnv MFW_ENV 'ec2'
## <Directory "/opt/appstore/emlauncher/web">
##   AllowOverride All
## </Directory>

# mod_sslの設定
# この内容でも動きますがあくまで(ry
vi /etc/httpd/conf.d/ssl.conf
## SSLCertificateFile 証明書ファイルの位置
## SSLCertificateKeyFile 秘密鍵ファイルの位置
## SSLCertificateChainFile 中間/クロスルート証明書ファイルの位置
## 他, SSLProtocolやらSSLCipherSuite等セキュリティ観点上いじるべき所ありますが, ここでは割愛します

# php.iniの設定
vi /etc/php.ini
## 設定しないとログがやかましいので date.timezone を設定します
## date.timezone = "Asia/Tokyo"

# ミドルウェアの起動/自動起動設定
service memcached start
service mysqld start
service httpd start
chkconfig memcached on
chkconfig mysqld on
chkconfig httpd on

# MySQLにSQLを流し込む
mysql -uroot < data/sql/database.sql
mysql -uroot emlauncher < data/sql/tables.sql

# EMLauncherのユーザ作る, メールアドレス部分はあなたのものに変えてね
mysql -uroot emlauncher -e "INSERT INTO user_pass (mail) VALUES ('hoge@example.org');"

後はブラウザからアクセスし、パスワード再発行フォームからパスワードを再発行すればログイン出来るはず。おめでとう!

公式の手順と違うところ

インストールするパッケージ

  • mysql55-server ではなく mysql-server にしています
  • ApacheでSSL通信するために mod_ssl を追加しています
  • クラウドエヌ標準イメージのCentOS 6.5には unzip が入っていないので追加してます

絶対SELinuxなんかに負けたりしない!

  • httpd_can_network_memcache
  • httpd_can_sendmail
  • 多分これを許可するだけで足りると思います

AWS S3以外の互換サービスを使う

  • AWSでの構築手順は既に公式で案内があり、AMIまで用意されているので別クラウド上にデプロイしてみました.
  • 今回クラウドエヌ内で完結させたかったので、AWS S3以外を使えるように数行変更したオレオレ版を使っています。
  • プルリクをマージして頂ければ公式のmasterから引っ張ってきたものに記事も変更します。

参考リンク

https://github.com/KLab/emlauncher
http://dsas.blog.klab.org/archives/52141445.html