まえにStackStorm(St2)という、イベントドリブンな自動化ツール(特定のイベントが発生したら、指定された処理を自動で行ってくれるツール)を触ったことがあったのだが、それと同じように利用できそうな『Huggin』というツールを見かけた。 Yahoo!PipeやIFTTTのような利用ができるらしい。
今回は、この『Huggin』をUbuntu Server 16.04 LTSにインストールしてみる。 (Dockerもあるようなので、パッと試す場合はそちらでもいいだろう)
1. 前提パッケージのインストール
まずは、以下のコマンドでupdateを行っておこう。
sudo apt-get update -y
sudo apt-get upgrade -y
Node.jsやその他必要になるパッケージをまとめてインストールする。 なお、Rubyは2.3以降が必要になるようなので、インストール完了後もしバージョンが古かったら別途インストールしなおす。
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -
sudo dpkg-divert --local --rename --add /sbin/initctl
sudo ln -s /bin/true /sbin/initctl
sudo apt-get install -y runit build-essential git zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake nodejs graphviz ruby ruby.h ruby-dev
sudo gem install rake bundler foreman --no-ri --no-rdoc
2. システムユーザの作成
Huginnを動作させるシステムユーザを作成する。
sudo adduser --disabled-login --gecos 'Huginn' huginn
3. データベースの作成
次に、データベースの作成をする。最初にパッケージの導入を行う。
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
rootユーザのパスワード設定など、最低限のセキュリティ設定を行う。
sudo mysql_secure_installation
ユーザやデータベースの作成を行う。
mysql -u root -p -e '
CREATE USER "huginn"@"localhost" IDENTIFIED BY "huginn";
SET default_storage_engine=INNODB;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `huginn_production`.* TO "huginn"@"localhost";'
この時点ではデータベースの作成は行わない。
4. Huginnのインストールを行う
ここまで終わったら、Huginnのインストールを行う。 以下のコマンドを実行し、ソースのダウンロード等を行う。
cd /home/huginn
sudo -u huginn -H git clone https://github.com/cantino/huginn.git -b master huginn
cd /home/huginn/huginn
sudo -u huginn -H cp .env.example .env
sudo -u huginn mkdir -p log tmp/pids tmp/sockets
sudo chown -R huginn log/ tmp/
sudo chmod -R u+rwX,go-w log/ tmp/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX tmp/
sudo -u huginn -H chmod o-rwx .env
sudo -u huginn -H cp config/unicorn.rb.example config/unicorn.rb
設定ファイル『.env』を以下のように編集する。
DATABASE_ADAPTER=mysql2
DATABASE_RECONNECT=true
DATABASE_NAME=huginn_production
DATABASE_POOL=20
DATABASE_USERNAME=huginn
DATABASE_PASSWORD='$password'
#DATABASE_HOST=your-domain-here.com
#DATABASE_PORT=3306
#DATABASE_SOCKET=/tmp/mysql.sock
DATABASE_ENCODING=utf8
# MySQL only: If you are running a MySQL server >=5.5.3, you should
# set DATABASE_ENCODING to utf8mb4 instead of utf8 so that the
# database can hold 4-byte UTF-8 characters like emoji.
#DATABASE_ENCODING=utf8mb4
RAILS_ENV=production
設定ファイル編集後、必要になるGemのインストールを行う。
sudo -u huginn -H bundle install --deployment --without development test
その他、データベースの作成などを行う。
sudo -u huginn -H bundle exec rake db:create RAILS_ENV=production
sudo -u huginn -H bundle exec rake db:migrate RAILS_ENV=production
sudo -u huginn -H bundle exec rake db:seed RAILS_ENV=production SEED_USERNAME=admin SEED_PASSWORD=password
sudo -u huginn -H bundle exec rake assets:precompile RAILS_ENV=production
『Procfile』ファイルで、以下のようにコメントアウトする行を変更する。
/home/huginn/huginn/Procfile# コメントアウトする # web: bundle exec rails server -p ${PORT-3000} -b ${IP-0.0.0.0} # jobs: bundle exec rails runner bin/threaded.rb # コメントアウト解除 web: bundle exec unicorn -c config/unicorn.rb jobs: bundle exec rails runner bin/threaded.rb
ファイル編集後、以下のコマンドを実行する。
sudo bundle exec rake production:export
sudo cp deployment/logrotate/huginn /etc/logrotate.d/huginn
sudo bundle exec rake production:status
5. Nginxをインストールする
最後に、フロントとして利用するNginxをインストールする。
sudo apt-get install -y nginx
aptでインストール後、以下のコマンドでHuginn用の設定ファイルを配置する。
sudo cp deployment/nginx/huginn /etc/nginx/sites-available/huginn
sudo ln -s /etc/nginx/sites-available/huginn /etc/nginx/sites-enabled/huginn
sudo rm /etc/nginx/sites-enabled/default
コンフィグテストを行い、サービスの起動を行う。
sudo nginx -t
sudo service nginx restart
6. ブラウザからアクセスする
さて、インストールや諸々の設定が終わったら、ブラウザからアクセスしてみよう。 「http://サーバのホスト名orIPアドレス」でアクセスできる。
初期ID/PWは「admin/password」になっている。 ひとまず、今回はインストールまで。次回以降、実際の設定などを行っていこう。