EMLauncher設定手順


# EMLauncherについて
- EMLauncherはKLabさん開発のAndroid/iOS向けテストアプリ配信ツール
- 手順について書きますが省略している部分もあります
- 公式サイトの手順はだいたいのことしか書かかれていなかったのでもう少し詳しい手順を公開しました
- 実施環境はDebianGNULinux7（Wheezy）です。CentOSなど使用の場合は適当に読み替えて下さい

# 前提条件
- 送信メールサーバを立てる必要があります
- .htaccessでアクセスできるようにします
- rewrite_moduleを有効
- DBのID登録はSQL直打ちです
- AWSでS3とIAMの設定が必要です

# 基本設定
- 以下公式サイトを参照
https://github.com/KLab/emlauncher
- 公式サイトの情報は設定情報としては一部です
- AWS準備
 - AWSアカウント用意しましょう
- IAM設定
 - 詳細は省略します
  ![EMlauncher_IAM.JPG](https://qiita-image-store.s3.amazonaws.com/0/57350/ef8ae7e5-79b0-7085-810e-8d280fd004f8.jpeg)
- S3設定
 - 詳細は省略します
  ![EMLauncher_S3.png](https://qiita-image-store.s3.amazonaws.com/0/57350/2bc98f37-fdde-88d4-157c-ccc17a5d46b0.png)


# HTTP設定
- HTTPの設定については以下の設定サンプルを確認してください
- apache基本設定

~~~
 #ServerRoot "/etc/apache2"
Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
        Options FollowSymLinks
        AllowOverride None
        Require all denied
</Directory>
<Directory /usr/share>
        AllowOverride None
        Require all granted
</Directory>
<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch "^\.ht">
        Require all denied
        #Require all granted
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
~~~

### バーチャルホスト設定
- ベーシック認証など個別の設定は関係ないので無視して下さい

~~~
<VirtualHost *:80>
        ServerName emlauncher.hoge.net
        ServerAdmin webmaster@localhost
        DocumentRoot /var/source/emlauncher/web
        DirectoryIndex index.html index.php
        AddDefaultCharset UTF-8
        SetEnvIf Request_URI "\.(jpg|png|gif|css|js|ico)$" nolog
        SetEnv MFW_ENV 'ec2'
        ErrorLog ${APACHE_LOG_DIR}/emlauncher-error.log
        CustomLog ${APACHE_LOG_DIR}/emlauncher-access.log combined
        <Directory "/var/source/emlauncher/web">
         AuthType Basic
         AuthName "Please enter your ID and password"
         AuthUserFile /etc/apache2/.htpasswd
         require valid-user
         Satisfy Any
         Order Deny,Allow
         Allow from xx.xx.xx.xx/32
         Deny from all
         Options FollowSymLinks MultiViews
         AllowOverride All
         Require all granted
        </Directory>
</VirtualHost>
~~~

### アプリケーション設定
- ソースコードディレクトリ
/var/source/emlauncher/config/emlauncher_config_sample.phpをコピーして編集する

~~~
$ ls -la /var/source/emlauncher/
total 68
drwxr-xr-x 10 appuser appuser 4096 Nov 21 15:55 .
drwxr-xr-x 23 admin   admin   4096 Nov 16 16:57 ..
drwxr-xr-x  2 appuser appuser 4096 Nov 16 21:50 config
drwxr-xr-x  5 appuser appuser 4096 Nov 16 16:57 data
drwxr-xr-x  9 appuser appuser 4096 Nov 16 17:11 .git
-rw-r--r--  1 appuser appuser  132 Nov 16 16:57 .gitignore
-rw-r--r--  1 appuser appuser  193 Nov 16 16:57 .gitmodules
-rw-r--r--  1 appuser appuser  948 Nov 16 16:57 initialize.php
drwxr-xr-x  5 appuser appuser 4096 Nov 16 16:57 libs
-rw-r--r--  1 appuser appuser 1076 Nov 16 16:57 LICENSE.txt
drwxr-xr-x 12 appuser appuser 4096 Nov 16 16:57 mainmodules
drwxr-xr-x  6 appuser appuser 4096 Nov 16 17:11 mfw
drwxr-xr-x  2 appuser appuser 4096 Nov 16 16:57 model
-rw-r--r--  1 appuser appuser 2148 Nov 16 16:57 README(EN).md
-rw-r--r--  1 appuser appuser 2387 Nov 16 16:57 README.md
-rwxr-xr-x  1 appuser appuser    5 Nov 18 21:38 test.html
drwxr-xr-x  3 appuser appuser 4096 Nov 21 17:22 web
~~~

~~~
<?php
/**@file
 * EMLauncher設定.
 * emlauncher_config.phpにリネームする.
 */
require_once APP_ROOT.'/libs/aws/aws-autoloader.php';
$emlauncher_config = array(
        /** EC2環境用の設定 (httpd.confでSetEnv MFW_ENV 'ec2') */
        'ec2' => array(
                /**
                 * アップデート通知やパスワードリセットのメールの送信元アドレス.
                 */
                'mail_sender' => 'hogeEmLauncherAdmin <no-reply@hoge.emlauncher.net>',
                /**
                 * タイトル等につけるprefix
                 */
                'title_prefix' => 'Application_Name_',
                /**
                 * HTTPSで動作させる.
                 * ログイン時にHTTPSで無かった場合、HTTPSでリダイレクトする.
                 */
                'enable_https' => false,
                /** ログインの設定. */
                'login' => array(
                        /**
                         * email+passwordによるログインを許可.
                         * `user_pass`テーブルに登録されているアカウントでログイン可能にする.
                         * @note
                         *  ユーザを追加する時は`user_pass`テーブルに`email`のみを登録し
                         *  パスワードリセットの手順を踏むことでパスワードを登録する.
                         */
                        'enable_password' => true,
                        /**
                         * Googleアカウントでのログインを許可.
                         * アカウントのメールアドレスが'allowed_mailaddr_pattern'にマッチするか,
                         * user_passテーブルに存在したらログインを認める.
                         *
                         * 利用する場合, 事前にgoogoleにアプリを登録してOAuthのID, Secretを発行しておく.
　　　　　　　　　　　　　//googleのOauth認証は使わないのでOFFにしておく
                         */
                        'enable_google_auth' => false,
                        'google_app_id' => 'xxxxxxxx.apps.googleusercontent.com',
                        'google_app_secret' => 'xxxxxxxx',
                        'allowed_mailaddr_pattern' => '/@klab\.com$/',
                        ),
                /** AWSの設定 */
                'aws' => array(
                        /**
                         * APIアクセスのためのKeyとSecret.
                         */
　　　　　　　　　　　　　//IAMで以下のKeyを取得しておく。同じ値の取得は一度きりなので気をつけること
                        'key' => 'AKIXXXXXXXXXXXW7A',
                        'secret' => '1XqXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSaY',
                        /** S3のRegion. */
　　　　　　　　　　　　　//東京リージョンであればサンプルと同じように以下の書式で問題ない
                        'region' => Aws\Common\Enum\Region::TOKYO,
                        /** S3のbucket名. 予め作成しておく. */
                        'bucket_name' => 'hoge-emlauncher',
                        ),
                ),
        );
/**
 * ローカル環境用の設定. (MFW_ENV=local)
 * Googleアカウント認証を無効にし、bucket名も変更している.
 */
$emlauncher_config['local'] = $emlauncher_config['ec2'];
$emlauncher_config['local']['login']['enable_google_auth'] = false;
$emlauncher_config['local']['aws']['bucket_name'] = 'emlauncher-dev';
~~~

### その他手順

- 以下は設定中引っ掛かった箇所を纏めています
- 公式サイトの手順を行う前に確認しておいたほうが良いです
- ローカルに送信メールサーバセットアップ
- 詳細は端折ってます。mailコマンドが標準で入っていないので使えるところまで設定すること
- GMailでメール受信できることを確認
 
 ~~~
$ sudo apt-get install postfix
$ sudo apt-get install chkconfig
$ sudo chkconfig postfix on
$ sudo apt-get install aptitude
$ sudo aptitude install bsd-mailx
$ sudo aptitude install exim4
$ which mail
$ echo testmail | mail user@hoge.jp
 ~~~
 
- main.phpでRwriteが実行されているが標準では有効になっていないのでエラーになる

 ~~~
$ sudo apache2ctl -M | grep rewrite_module
$ sudo a2enmod rewrite
$ sudo apache2ctl -M | grep rewrite_module
~~~

- ユーザ追加はSQL直打ちで登録する必要がある。登録したらブラウザ画面からパスワード再設定する

~~~
$ mysql
mysql > use emlauncher
mysql > INSERT INTO user_pass (mail) VALUES ('hogeuser@hogehoge.jp');
mysql > exit
 ~~~
 
- アプリを登録しようとすると画像が圧縮できなくてエラーになったりする
- imagickはインストールがややこしくComposerのほうが簡単らしい
- 以下は少数派のpeclでの導入方法。※phpinfoで確認すること
- インストールしたら必ずphp.iniに追加すること

 ~~~
$ sudo apt-get update
$ sudo apt-get install libmagickwand-dev
$ sudo apt-get install php5-dev
$ sudo apt-get install php-pear
$ sudo pecl install imagick
:
Please provide the prefix of Imagemagick installation [autodetect] : （※何も入力せずEnterキー押下）
 ~~~
 
 ~~~
$ vi /etc/php5/cli/php.ini
:
;APPEND hoge.corp Config
extension=imagick.so
 ~~~
 
- curlのエラーとなるGuzzleというライブラリが必要となるがなかなか良い情報が無い。以下で対応

 ~~~
$ sudo apt-get install php5-curl
$ sudo pear channel-discover guzzlephp.org/pear
$ sudo pear remote-list -c guzzle
$ sudo pear upgrade PEAR
$ sudo pear channel-discover pear.symfony.com
$ sudo pear install guzzle/Guzzle-3.9.0
$ sudo /etc/init.d/apache2 restart
~~~

### ログインについて
- サーバ管理者がSQLでメールアドレスベースのユーザアカウントを登録する必要があります
- ブラウザでEMLauncherにアクセスし「forget password」からパスワードを再設定して下さい
![EMlauncher_TOP.JPG](https://qiita-image-store.s3.amazonaws.com/0/57350/aa39fb6f-2700-d12d-624c-6dd65e7532c9.jpeg)