プロジェクト

全般

プロフィール

PostDeco

  • 大容量ファイルをメールに添付せず、アドレスを通知するAPです。
    ファイルは相手に送ったメールからのみDL出来るので、添付ファイルと同じ運用が出来ます。

前提条件

  • 基盤として Ruby on RailsMongrel Cluster がインストールされていることが前提です。
  • データベースが必要になりますが、ここでは MySQL とします。
  • リバースプロキシとして一般のWEBにHTTP/HTTPS公開する場合、 Apache も必要です。
  • オリジナルの「deco」ではなく当サイトで改修した「PostDeco」を使用します。
    (サブディレクトリが切れない、passenger仕様なのでmongrelで動くか怪しい等のため)
  • SMTPサーバがローカルホストでない場合、ローカルホストにrelayhostで全投げの
    Postfixを建てて、ローカル送信→SMTPにrelayしないと現状では動かないケースがある。
  • 「/usr/local/PostDeco」に配置する物とします。
  • 「http://localhost/postdeco」で公開するものとします。

ダウンロード

  • 下記ウチの制作物からダウンロードします。
  • 具体例
    # mkdir /usr/local/work
    # cd /usr/local/work
    # wget http://nanako-net.info/wp-content/uploads/2010/05/deco-1.0.3-nni.zip
    

     

展開と配置

  • 展開する
    # unzip deco-1.0.3-nni.zip
    
  • 配置する
    # cp -Rp deco-1.0.3-nni /usr/local/PostDeco
    

     

データベースの作成

  • MySQLでデータベースを下記の作成します。
  • DB「postdeco」
  • DBユーザ「pd_user」
  • DBユーザパスワード「*****」
    # mysql -u root -p
    
    mysql> create database postdeco default character set=utf8;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> grant all privileges on postdeco.* to "pd_user"@"localhost" identified by "password";
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> quit
    Bye
    

     

データベース設定

  • データベース設定ファイルの編集
    # cd /usr/local/PostDeco/
    # vi config/database.yml
    # ------------------------------------------------------
    # 変更箇所のみ記載
    production:
      adapter: mysql
      encoding: utf8
      database: postdeco
      pool: 5
      username: pd_user
      password: password
      socket: /var/lib/mysql/mysql.sock
    
  • データの投入
    # cd /usr/local/PostDeco
    # rake db:migrate RAILS_ENV=production
    
  • 送信メールサーバの設定
    # vi config/environments/production.rb
    # ------------------------------------------------------
    # 変更箇所のみ記載
    config.action_mailer.smtp_settings = {
      :enable_starttls_auto => false,
      :address => "smtp.example.co.jp",
      :port => 25,
      :domain => "example.co.jp" 
    }
    
  • 送信元メールアドレスの変更
    下記のファイルに送信元アドレスが書いてあるので変更する。
  • なお、このメールアドレスで返信を受け付けない場合、
    実在するメールアドレスである必要は無い。
    (10カ所程度あるので、一括置換した方が良い)
    # vi app/models/notification.rb
    
  • 送信するメールテンプレートの編集。
    (主に署名欄を編集する)
    cd app/views/notification/
    
    file_delete_report.erb
    file_delete_result_report.erb
    receive_report.erb
    request_copied_report.erb
    request_report.erb
    requested_file_delete_copied_report.erb
    requested_file_delete_report.erb
    requested_file_dl_report.erb
    requested_send_copied_report.erb
    requested_send_report.erb
    send_report.erb
    send_report2.erb
    send_result_report.erb
    

     

mongrel設定

  • 設定ファイルの生成されること
    # cd /usr/local/PostDeco/
    # mongrel_rails cluster::configure --prefix=/postdeco -e production -p 3000 -c `pwd` -l log/deco.log -P /var/run/mongrel/deco.pid -N 1
    
    # cat config/mongrel_cluster.yml
    ---
    servers: 1
    pid_file: /var/run/mongrel/deco.pid
    environment: production
    cwd: /usr/local/PostDeco
    log_file: log/deco.log
    prefix: /postdeco
    port: "3000" 
    
  • 設定ファイルをmongrelが自動読み込みする場所にリンクする
    # mkdir /etc/mongrel_cluster/postdeco
    # ln -s /usr/local/PostDeco/config/mongrel_cluster.yml /etc/mongrel_cluster/postdeco/mongrel_cluster.yml
    

     

動作試験

  • 手動起動してみる
    # cd /usr/local/PostDeco
    # mongrel_rails cluster::start
    starting port 3000
    
  • ブラウザで確認
    「http://(IPアドレス):3000/postdeco/」を入力し、次のようなページが表示されること。
  • 手動停止する
    # mongrel_rails cluster::stop
    stopping port 3000
    

     

自動起動設定

  • 起動スクリプトの配置、設定
    # cp /usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d/postdeco
    # chmod 755 /etc/init.d/postdeco
    # vi /etc/init.d/postdeco
    # ------------------------------------------------------
    # 変更箇所のみ記載
    CONF_DIR=/etc/mongrel_cluster/postdeco
    PID_DIR=/var/run/mongrel_cluster
    USER=root
    PATH=$PATH:/usr/local/bin/
    RETVAL=0
    

     
  • スクリプト起動してみる
    (エラーが出た場合、手動で上手く行っていたらスクリプトの設定ミス)
    service postdeco start
    Starting all mongrel_clusters...
    
  • ブラウザで確認
    「http://(IPアドレス):3000/postdeco/」を入力し、次のようなページが表示されること。
  • スクリプトで終了する
    service postdeco stop
    Stopping all mongrel_clusters...
    
  • 自動起動を設定
    # chkconfig --add postdeco
    # chkconfig postdeco on
    # chkconfig --list postdeco
    postdeco        0:off   1:off   2:on    3:on    4:on    5:on    6:off
    # service postdeco start
    

     

初回管理画面アクセス

  • このままでは認証情報が何もないので、ログイン画面を抜けることが出来ない。
    そこで、管理画面へアクセスする。

「http://(ipアドレス):3000/postdeco/sys_top」

  • 次のような画面が表示される。
  • 以降は順番に設定していけばOK。
     

リバースプロキシ設定

  • Apacheでリバースプロキシを使い、mongrelのWEBサーバを80:443ポートで公開する場合。
    (mongrelは表示させる程度しか考慮されていないが、Apache(httpd)を介することで、
    セキュリティや認証、ログなどを利用し、公開するサーバを一本化できるメリットがある)
  • リバースプロキシは一般的な手順で設定できるが、カレントのサブディレクトリ名
    は統一しなければならない。(ここでいう「/postdeco」)
    RedirectMatch           ^/postdeco$         https://localhost/postdeco/
    ProxyPass               /postdeco/          http://localhost:3000/postdeco/
    ProxyPassReverse        /postdeco/          http://localhost:3000/postdeco/
    
  • ただし、リバースプロキシでSSLが必要な場合は更に設定が必要。
    (先頭に「RequestHeader」を宣言しなければならない)
    RequestHeader set X_FORWARDED_PROTO 'https'
    RedirectMatch           ^/postdeco$         https://localhost/postdeco/
    ProxyPass               /postdeco/          http://localhost:3000/postdeco/
    ProxyPassReverse        /postdeco/          http://localhost:3000/postdeco/
    
  • Apacheをリスタート
    # service httpd restart
    

     

 

戻る