PostDeco¶
- 大容量ファイルをメールに添付せず、アドレスを通知するAPです。
ファイルは相手に送ったメールからのみDL出来るので、添付ファイルと同じ運用が出来ます。
前提条件¶
- 基盤として Ruby on Rails と Mongrel Cluster がインストールされていることが前提です。
- データベースが必要になりますが、ここでは MySQL とします。
- リバースプロキシとして一般のWEBにHTTP/HTTPS公開する場合、 Apache も必要です。
- オリジナルの「deco」ではなく当サイトで改修した「PostDeco」を使用します。
(サブディレクトリが切れない、passenger仕様なのでmongrelで動くか怪しい等のため)
- SMTPサーバがローカルホストでない場合、ローカルホストにrelayhostで全投げの
Postfixを建てて、ローカル送信→SMTPにrelayしないと現状では動かないケースがある。
- 「/usr/local/PostDeco」に配置する物とします。
- 「http://localhost/postdeco」で公開するものとします。
- コンフィグについては 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
¶
¶