ドキュメント共有ツール Crowi をAmazonLinuxで構築する

ドキュメント共有ツール Crowi をAmazonLinuxで構築する

Crowiとはオープンソースで、ドキュメントを色々溜め込むことができるツールです。
ずっと、RedmineのWikiを使っていましたが、どうしても好きになれなかったんですよね・・
(マークダウンで書けない、タグサーチができなくて検索不便等々・・・)
おそらくプラグインをいれたら上記は解決できるかと思いますが、そこまでやるのは面倒だということで、他にないか探していたらCrowiを発見しました!

今回は、導入と設定らへんを書いていきたいと思います。

構築準備

  • AmazonLinux
  • Node.js v8.0
  • Mongo v3.4.2
  • Nginx v1.6.2

構築方法

まずはサクッとNode.jsとNginxのインストールをおこないます。

Node.jsのインストール

こちらを参考にしてインストールしてみてください。
http://qiita.com/sinmetal/items/154e81823f386279b33c

Nginxのインストール

$ sudo yum install -y nginx

こちらでサクッとインストール&起動しておきましょう!

MongoDBのインストール

/etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2013.03/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

このファイルを作成しておきます。
作成が完了したら、

$ sudo yum install -y mongodb-org
$ sudo service mongod start

これで、起動が完了です。

各設定

  • Nginxの設定

3001番ポートにプロキシする設定を書きます。

/etc/nginx/vhost.d/crowi.conf
server {
  listen   *:80;
  server_name crowi.hoge.com;

  access_log /opt/nginx/logs/crowi_access.log;
  error_log  /opt/nginx/logs/crowi_error.log;

  location / {
    proxy_pass http://127.0.0.1:3001;
  }
}
  • Mongoの設定
$ mongo
> use crowidb
switched to db crowidb
>  db.createUser({user: "crowi", pwd: "crowi", roles: [{role: "userAdmin", db: "crowidb"}]})
Successfully added user: {
    "user" : "crowi",
    "roles" : [
        {
            "role" : "userAdmin",
            "db" : "crowidb"
        }
    ]
}

Crowiをインストールする

$ git clone --depth 1 https://github.com/crowi/crowi.git
$ cd crowi
$ git checkout v1.6.0
$ sudo npm install

これで、Crowiの設定は完了です。

次に、プロセスを起動しますが、ここはforeverを用いて、プロセスを常に起動できるようにしておきます。
その前に、環境変数の設定をしておきます。

$ export PASSWORD_SEED=なんでもOK
$ export MONGO_URI=mongodb://crowi:パスワード@localhost/crowidb
$ export PORT=3001
$ export NODE_ENV=production
$ npm install forever -g

foreverのインストールが完了したので、プロセスを起動していきます。

$ forever start app.js
$ forever list
ここにプロセスの起動情報が書いてある

これでプロセスの起動が完了したので、設定したドメインにアクセスすればCrowiが表示されると思います。

その他設定

他にもCrowiにはこういった機能があります

  • 画像やファイルをアップロードできるようにする
  • 認証をGoogleアカウント認証に変更できる
  • 全文検索ができるようになる

ここはまたのちほど紹介していきたいと思います。

では、よいドキュメント共有ライフを!

続きを読む

【AWS】OpsWorks スタック

はじめに

タダです。
AWS認定資格の試験勉強のためにCloudFormationの情報をまとめた自分用メモになります。
あくまで個人用のメモになるので、その点はご了承ください。
※違う内容書いているなどありましたらご指摘いただけると幸いです。
※随時アップデートがあれば更新していきます。
※本記事では、OpsWorks スタック中心のまとめになります。

サービス概要

  • OpsWorksはChefを使ったAWSリソース(EC2、ELB、RDSなど)やEC2上のアプリケーションの設定・管理を行うためのサービス
  • Chefサーバーは不要で、OpsWorksスタックは、インスタンスのヘルスチェックをモニタリングし、自動復旧および Auto Scaling を使用して、必要な場合に新しいインスタンスをプロビジョニングする
  • Chefのcookbookレシピを使って、インフラの管理を自動化、アプリケーションの継続的なインストール、構成、管理、デプロイ、スケールが可能なのがChef Automate
    • Chefサーバありきだが、管理はAWS

OpsWorksエージェント

  • OpsWorksスタックで必要

    • OpsWorksの一連のコマンドを取得し、エージェントがChef Clientのローカルモードでレシピを実行

利用メリット

アプリケーションのモデル化とサポート
管理作業を自動化

CloudFormation/Elastic Beastalkとの違い

  • OpsWorksは、DevOps環境を提供することを目的におき、デプロイ、モニタリング、自動スケーリング、自動化の主要なアクティビティに対して統一された設定管理を行う
  • CloudFormationはAWSリソースのプロビジョニングと管理をJSON/YAMLで行うことを目的とする
  • Elastic BeastalkはJava、.NET、PHP、Node.js、Python、Ruby、Go、Docker で開発されたウェブアプリケーションとウェブサービスをデプロイおよびスケーリングする

制限

デフォルトでは、最大40スタックを作成できる
最大40のレイヤー、最大40のインスタンス、最大40のアプリケーションを保持できる
 

専門用語

  • スタック

    • OpsWorksの管理対象をまとめたコンポーネントで、属する全員インスタンスの構成を管理する
  • レイヤー
    • 1つ以上の Layer を追加することにより、スタックのコンポーネントを定義する
    • レイヤーは、アプリケーションへのサービス提供やデータベースサーバーのホストのような特定の目的を果たす一連のEC2インスタンスを表す
  • インスタンス
    • インスタンスのスケーリングタイプは3つある

      • 24/7インスタンス(常時稼働)
      • load-basedインスタンス
        • 負荷に対してサーバを起動することができる
        • メトリックスの閾値は次のものを定義し、インスタンスの増減をコントールできる
          • [Average CPU] – Layer の平均 CPU 使用率 (合計に対する割合)
          • [Average memory] – Layer の平均メモリ使用率 (合計に対する割合)
          • [Average load] – Layer の平均負荷
      • time-basedインスタンス
        • 時間ベースのスケーリングにより指定したスケジュールでインスタンスを起動、停止できる
        • 特定の時間または特定の曜日にレイヤーによりオンラインにされるインスタンス数を制御できる
  • App
    • アプリケーショサーバにデプロイするアプリケーション
  • レシピ
    • Chefレシピを実行して、アプリケーションの設定、アプリケーションのデプロイ、スクリプトの実行などを行う

スタックコマンド

スタック全体の構成を変更・管理するためのコマンドで以下のようなものがある
実行方法はAWSマネジメントコンソールやCLI、SDKなど

  • Update Custom Cookbook

    • リポジトリにある更新されたCookbookをそれぞれのインスタンスに展開する
  • Execute Recipes
    • 指定したレシピを指定したインスタンス上で実行する
  • Setup
    • Setupのレシピを実行する
  • Configure
    • Configureのレシピを実行する
  • Upgrade Operationg System
    • (Linuxのみ)Amazon Linuxを最新バージョンにアップグレードする

ライフサイクル

OpsWorksのインスタンスで自動的に行う処理をさす

  • Setup : 新しいインスタンスが正常にブートした後に発生する

    • ex: ロードバランサーをインストール、アプリケーションサーバをインストール、データベースをインストール
  • Configure : インスタンスがオンライン状態に移行したときとオンライン状態から移行した時にスタックのすべてのインスタンスで発生する
    • ex: アプリケーションサーバのIPをアップデート、DB接続先をアップデートして再起動、アプリケーションサーバのIPのACLをアップデート
  • Deploy : ユーザーがアプリケーションをデプロイする時に発生する
    • ex:アプリケーションコードをアップデートして再起動
  • Undeploy : アプリケーションを削除する時に発生する
    • ex:アプリケーションを削除して再起動
  • Shutdown : インスタンスの終了
    • コネクションをDrainする、ログを保存、スナップショットの保存

Opsworksと他サービスとの連携

モニタリング

スタックは次の方法で監視可能

  • CloudWatchによるスタックのインスタンスごとに詳細モニタリング
  • CloudTrailによるAPI監視
  • CloudWatch Logsでスタックのシステム・アプリケーション・カスタムログを監視する

セキュリティおよびアクセス許可

  • VPC内に展開可能
  • AWSリソースにアクセスするためのACLやインスタンスへの接続管理はIAM(ユーザー、許可、ロール)で行う

参考

更新日時

  • 2017/05/01 初回投稿

続きを読む