2011年8月16日火曜日

Amazon EC2 (Amazon Linux) で S3 をマウントして使用する(s3fs+FUSE)

アプリケーションで大容量のファイルを扱う必要がある場合にS3をマウントして使用するための設定です。S3をファイルシステムとしてマウントするにはs3fsとs3fsが使用しているFUSE(Filesystem in Userspace)が必要になります。

使用したインスタンスのイメージですが、『Basic 32-bit Amazon Linux AMI 2011.02.1 Beta (AMI Id: ami-300ca731)』を使用しました。

[2013.01.16追記]
Amazonの堀内さんとEC2からのS3の利用について少し話をさせてもらったところ、s3fsなどは使わずにAPIを利用することをお勧めされてました。アップロードしたファイルをAPIでS3に保存して、そのAPIから返ってきたS3のURLをDBに保存していくのがベストだということです。(記事:AWS SDK2 for PHPを使ってS3にファイルをアップロードする



管理者になる
インストールと設定は管理者権限で行いますので権限を取ります。
$sudo su -

ライブラリのインストール

FUSE に 必要なライブラリをインストールします。既にインストール済みのものがあれば除いてください。
#yum -y install gcc-c++
#yum -y install make
#yum -y install openssl-devel
#yum -y install curl-devel
#yum -y install libxml2-devel

FUSE のインストール

FUSE はバージョン2.8.5をソースからコンパイルしてインストールします。
#cd /usr/local/src
#wget http://downloads.sourceforge.net/project/fuse/fuse-2.X/2.8.5/fuse-2.8.5.tar.gz
#tar xzvf fuse-2.8.5.tar.gz
#cd fuse-2.8.5
#./configure
#make
#make install

FUSEの設定

インストールしたFUSEの関連モジュールを読み込むための設定をします。
#echo /usr/local/lib >> /etc/ld.so.conf
#export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
#ldconfig

s3fsのインストール

s3fsをインストールします。いろいろバージョンがありますが、この記事を書いている時点では、s3fs-r203.tar.gzでないとうまくいきませんでした。
#cd /usr/local/src
#wget http://s3fs.googlecode.com/files/s3fs-r203.tar.gz
#tar xzvf s3fs-r203.tar.gz
#cd s3fs
#make
#make install

s3fsの設定

設定ファイルを作成します。AWSへのアクセスキーとセキュリティキーをコロンで区切って記述して保存します。
#vi /etc/passwd-s3fs
accesskey:securetkey

S3をマウントする

今回はS3のs3-bucket-nameとバケットを/s3ディレクトリにマウントします。
#cd /
#mkdir s3
#modprobe fuse
#s3fs s3-bucket-name /s3 -o allow_other,default_acl=public-read

次回起動時のためにfstabにも記載しておきます。
#vi /etc/fstab
/usr/bin/s3fs s3-bucket-name /s3 fuse allow_other,default_acl=public-read 0 0

海外のウェブサービスを調べるときに使えるサイト

ウェブサービスの海外展開を考える時、あらかじめ競合を調査しておくことは重要かと思います。先日、EC Studioの山本社長がSF New Techでかっこいいプレゼンをされていましたが、そこでもChatterなどのサービスとの違いについて質問を受けていました。

一番最初に思いついたからといって成功の保証がされる訳ではないですし(むしろ歴史的には一番手は失敗に終わることが多い)、毎日たくさんのウェブサービスがリリースされているなかで、同じカテゴリーのものはあるという前提で、それらとは何が違うのかをきちんと把握して、自身のサービスの機能を改善していくと。

そこで、海外の競合調査につかえるサイトをいくつかご紹介したいと思います。


500startups http://500startups.com/
既にアーリーステージの投資を受けているサービスが並んでいます。myGengoが東京発ですね。

GO2WEB20 http://www.go2web20.net/
その名の通りWeb2.0というキーワードが流行った頃からあるサイト。運営側が掲載の判断をしているのでしっかりしたものが多いです。

AngelList http://angel.co/
会員登録をすると自分で自分のサービスを登録できます。特長としては、そのサービスに興味のある人、アドバイスを与えている人、投資している人などが表示される点です。

StartupLi.st http://www.startupli.st
最近始まったウェブサイトでAngelList同様自分で自分のサービスを登録できます。

Beta List http://betali.st/
ここも比較的新しいサイトだと思います。ログインや情報の拡散のためにTwitterを使っています。


本当に毎日たくさんのサービスがリリースされています。残念ながら日本初のサービスは非常にすくない状況です。僕としては単体で露出狙うんじゃなくて、みんなで集まってサービスを海外展開するAKB48戦略が新しくていいと思っています。ずば抜けてる訳じゃないけど、なんか全体で魅力的みたいな。で、その中でいいサービスが伸びていくという。

IT飲み会が今度サンフランシスコでスタートするという話も聞いているので、そんな動きになれば面白いなと思っています。

2011年8月9日火曜日

Amazon EC2 (Amazon Linux) で LAMP環境とメール環境(Postfix+dovecot) を構築する

Amazon EC2 (Amazon Linux) で LAMP環境とメール環境(Postfix+dovecot) の構築について何回かに分けて書いてきましたが、その目次ページです。各記事は実際に設定をしながら書きましたので、Amazon側の環境が変わらない間はこの方法で問題ないかと思います。


LAMP環境構築
ウェブ管理者用のアカウント作成
MySQL 5.1.52
Apache 2.2.16 + PHP 5.3.6 と SSL設定phpMyAdmin 2.11.11.3


メール環境構築
PostfixAdmin 2.3.3
Postfix 2.6.6
dovecot 2.0.9
空メール受信処理

基本的な設定なのでセキュリティ面等はそれぞれのポリシーにあわせて設定してください。

Amazon EC2 (Amazon Linux) での dovecot インストールと設定

POP3/IMAPは dovecot(バージョン2.0.9) で対応しますので、そのインストールと設定をしていきます。


が設定されているうえでの設定になります。

管理者になる

インストールと設定は管理者権限で行いますので権限を取ります。
$sudo su -

dovecotのインストール

dovecot をインストールします。
#yum -y install dovecot dovecot-mysql

dovecotの設定

設定ファイルを編集します。
#cd /etc/dovecot
#vi dovecot.conf
修正
protocols = pop3
対応プロトコルの指定。
修正
listen = *, ::
接続を許可するネットワーク。 
[2012/05/22追記]IPv6の設定によっては, ::を付けるとエラーが出る場合があります。

MySQLへの接続設定ファイルを作成します。
#cd /etc/dovecot
#vi dovecot-sql.conf.ext
driver = mysql
connect = host=127.0.0.1 user=dovecot password=******** dbname=postfix
default_pass_scheme = PLAIN
password_query = SELECT username as user, password FROM mailbox WHERE username='%u' AND active=true
user_query = SELECT concat('/home/virtualmail/', maildir) AS home, 10000 AS uid, 10000 AS gid FROM mailbox WHERE username='%u' AND active=true

認証設定ファイルを編集します。
#cd conf.d
#vi 10-auth.conf
修正
disable_plaintext_auth = no
PLAIN TEXTでの認証を許可する。
修正
auth_mechanisms = plain login
認証方式の順序。
修正
#!include auth-system.conf.ext
認証はMySQLで行うためコメントアウトする。
修正
!include auth-sql.conf.ext
認証はMySQLで行うためコメントアウトを外す。

メールボックス設定ファイルを編集します。
#vi 10-mail.conf
修正
mail_location = maildir:~/
メールボックスの形式を指定する。

マスター設定ファイルを編集します。
#vi 10-master.conf
修正
service pop3-login {
  inet_listener pop3 {
    port = 110
  }
--- 略 ---
コメントアウトを外して port 110 を有効にする。
修正
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = virtualmail
  group = virtualmail

} 
Postfix の SMTP-AUTH を有効にする。modeのコメントアウトをはずし、user, group の情報を追加。

ログの設定ファイルを編集します。導入時に上手く動作しない場合の問題を把握するためにauth_系の設定を有効にしています。
#conf.d
#vi 10-logging.conf
修正
log_path = syslog
ログを作成する。
修正
auth_verbose = yes
認証が失敗した際の理由をログに残す。
修正
auth_verbose_passwords = plain
入力されたパスワードをそのままログに残す。(起動時にエラーが出る場合は、yesに戻してください
修正
auth_debug = yes
認証に使用したSQLをログに残す。

dovecotの起動と自動起動設定

dovecotを起動します。自動起動のための設定もあわせておこないます。
#service dovecot start
#chkconfig dovecot on

Amazon EC2 (Amazon Linux) での Postfix インストールと設定

Postfix(バージョン2.6.6)のインストールと設定をしていきます。

Amazon EC2 (Amazon Linux) での PostfixAdmin インストールと設定

が設定されているうえでの設定になります。

管理者になる

インストールと設定は管理者権限で行いますので権限を取ります。
$sudo su -

Postfixのインストール

Postfixをインストールします。
#yum -y install postfix

MTAの切り替え

デフォルトでは sendmail が稼動していますが Postfix に切り替えるので停止します。
#service sendmail stop
#chkconfig sendmail off

MTA を切り替えます。2 の sendmail.postfix を選択します。
#alternatives --config mta

There are 2 programs which provide 'mta'.
  Selection    Command
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number:2

Postfixの設定

設定の前に事前準備をしておきます。Postfix をバーチャルドメインで稼動させるためのユーザーの作成とメールボックス用のディレクトリの作成です。その後、main.cf を編集します。
#groupadd -g 10000 virtualmail
#useradd -g virtualmail -u 10000 virtualmail
#mkdir /home/virtualmail/
#chown virtualmail:virtualmail /home/virtualmail
#chmod 771 /home/virtualmail
#cd /etc/postfix
#vi main.cf
任意
inet_protocols = ipv4
デフォルトのAllでIPv6関連のエラーが出る場合は、ipv4のみにする。
修正
inet_interfaces = all
外部からのメールを受信できるようにする。
修正
mydestination =
このサーバーで処理するドメインの指定。virtual_mailbox_domainsに記載するので、ここでは未指定。
追加
virtual_transport = virtual
PostfixAdminで設定されたドメインの場合に使用される配送エージェント。
追加
virtual_gid_maps = static:10000
グループID
追加
virtual_uid_maps =  static:10000
ユーザーID
追加
virtual_minimum_uid = 10000
ユーザーIDの最小値。これより小さなIDへの配送は拒否される。
追加
virtual_mailbox_base =  /home/virtualmail/
メールボックスが作成されるディレクトリ。
追加
virtual_mailbox_limit =  51200000
メールボックス容量(50M)。
追加
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domain_maps.cf
処理対象になるドメイン(MySQLへの接続方法とデータ取得方法が記載されている)。
追加
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
アカウント別のメールボックス情報(MySQLへの接続方法とデータ取得方法が記載されている)。
追加
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
メール転送設定(MySQLへの接続方法とデータ取得方法が記載されている)。
追加
smtpd_sasl_auth_enable = yes
SMTP認証をSASLで行う。
追加
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
SMTP(RCPT TO)を受け付ける条件を指定。
追加
smtpd_sasl_authenticated_header = yes
Received ヘッダに認証されたユーザー名を表示する。
追加
broken_sasl_auth_clients = yes
(古いバージョンのOutlook等)規格外のAUTHコマンドに対応させる。
追加
smtpd_sasl_type = dovecot
dovecotのSASLを使用。
追加
smtpd_sasl_path = private/auth
dovecotの認証デーモンソケットの場所を指定。
MySQLへの接続のための設定ファイルを作成します。********にはMySQLのユーザーpostfixのパスワードを設定します。
#vi mysql_virtual_domain_maps.cf
user = postfix
password = ********
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain = '%s' AND backupmx = '0' AND active = '1'

#vi mysql_virtual_mailbox_maps.cf
user = postfix
password = ********
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username = '%s' AND active = '1'

#vi mysql_virtual_alias_maps.cf
user = postfix
password = ********
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address = '%s' AND active = '1' 
master.cf を編集してサブミッションポートを有効にします。デフォルトでは次の行がコメントアウトになっているので外します。
#vi master.cf
修正
submission inet n       -       n       -       -       smtpd
サブミッションポートを有効にする。

続いてAmazon EC2 (Amazon Linux) での dovecot インストールと設定を行ってください。

Related Posts Plugin for WordPress, Blogger...