<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>My Life</title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/" />
    <link rel="self" type="application/atom+xml" href="http://www.section-9.jp/blog/bluez/atom.xml" />
    <id>tag:www.section-9.jp,2010-03-13:/blog/bluez//4</id>
    <updated>2012-05-14T17:45:08Z</updated>
    <subtitle>bluezの写真を公開していきます．その他にソフト等の雑感も書いたりします．</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.13-ja</generator>

<entry>
    <title>体調不良...</title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/05/post-85.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.307</id>

    <published>2012-05-14T17:29:52Z</published>
    <updated>2012-05-14T17:45:08Z</updated>

    <summary>ここ数日、体調があまりよろしくないです。 5/12（土）から寒気があったのですが...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="徒然" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        <![CDATA[<p>ここ数日、体調があまりよろしくないです。</p>

<p>5/12（土）から寒気があったのですが、翌朝起きて見ると熱が39度ありました。びっくり。<br />
</p>]]>
        <![CDATA[<p>当番医に行って風邪薬を処方してもらって来ましたが、解熱剤があまり効かない...</p>

<p>5/14（月）も熱が引かずに、在宅勤務でした。</p>

<p>早く風邪を治そうと思って寝たら、こんな時間に目が覚めてしまって、眠気無し状態です。しかも、まだ熱があります。39度...全然解熱剤が効いてない...</p>

<p>念のために社長には今日も熱があったら在宅勤務で、とお願いしていたので、お言葉に甘えて今日も在宅でやらせてもらおうと思います。はぁ、いかんなー。まぁ、幸いにして今やっているのは調査業務なので、何とか自宅でもできます。</p>

<p>それと、ここ二週間程睡眠障害の傾向が強いです。20時には既に眠たくなって、深夜3時くらいに起きると言う生活。でも、不思議と日中は眠たくならないんですよ。</p>

<p>それでも起きるのが3時だと19時までの勤務は結構長く感じて肉体的にも疲労しますし、何とか生活リズムを取り戻したいなぁ...</p>

<p>さすがにこの時間から仕事する元気は無いので、暖かくしてぼーっとしています。はぁ、朝までまだ時間あるなぁ。</p>]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-15　バックアップ </title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/05/vps-15.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.306</id>

    <published>2012-05-08T12:35:43Z</published>
    <updated>2012-05-08T12:38:10Z</updated>

    <summary>定期バックアップを設定します。今回はcentossrvさんのサイトを参考にさせて...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        定期バックアップを設定します。今回はcentossrvさんのサイトを参考にさせて頂きながら...と、言うかそのまま設定させて頂いた感じです。

        <![CDATA[<h2>まずは準備から</h2>
まずは、バックアップファイルを入れる/backupディレクトリと、MySQLのバックアップを入れる/backup/mysqlディレクトリを作ります。
<pre class="brush:bash;">
[root@www0000xx ~]# mkdir /backup
[root@www0000xx ~]# mkdir /backup/mysql
</pre>
<h2>MySQLのバックアップ</h2>
MySQLのバックアップを設定します。手順は<a href="http://centossrv.com/mysql-backup.shtml" target="_blank">MySQLデータベース自動バックアップ運用(mysqlhotcopy)</a>さんを参考に設定していきます。
<pre class="brush:bash;">
[root@www0000xx ~]# vi mysql-backup.sh
</pre>
でシェルスクリプトを作成して、実行権限を与えます。
<pre class="brush:bash;">
[root@www0000xx ~]# chmod 700 mysql-backup.sh
</pre>
<a href="http://centossrv.com/mysql-backup.shtml" target="_blank">centossrv</a>さんを参考に、バックアップの正常動作をチェックします。
<h2>ディレクトリのバックアップ</h2>
ディレクトリのバックアップも<a href="http://centossrv.com/backup.shtml" target="_blank">centossrv</a>さんを参考にします。
<pre class="brush:bash;">
[root@www0000xx ~]# vi backup.sh
</pre>
でシェルスクリプトを作成して、実行権限を与えます。
<pre class="brush:bash;">
[root@www0000xx ~]# chmod 700 backup.sh
</pre>
backuplistにバックアップしたいディレクトリを追加していきます。
<pre class="brush:bash;">
[root@www0000xx ~]# echo "/root" >> backuplist
[root@www0000xx ~]# echo "/etc" >> backuplist
[root@www0000xx ~]# echo "/var/www" >> backuplist
[root@www0000xx ~]# echo "/var/lib/svn" >> backuplist
[root@www0000xx ~]# echo "/backup/mysql" >> backuplist
</pre>
バックアップしたくない項目をbackupnolistに追加します。
<pre class="brush:bash;">
[root@www0000xx ~]# echo "/var/www/error" >> backupnolist
[root@www0000xx ~]# echo "/var/www/icons" >> backupnolist
</pre>
バックアップの正常動作をチェックして、毎日午前5時に自動実行されるように設定します。
<pre class="brush:bash;">
[root@www0000xx ~]# echo "0 5 * * * root /root/mysql-backup.sh ; /root/backup.sh" > /etc/cron.d/backup
</pre>
<h2>ローカルからのバックアップの取得</h2>
<pre class="brush:bash;">
$ rsync -avz --delete  -e "ssh -p 10022" admin@XXX.XXX.XXX.XXX:/backup/backup.tar.bz2 /Users/username/Documents/SakuraVPS/backup.tar.bz2
</pre>
これで正常にリモートからバックアップを取得できたら、シェルスクリプトとして保存してしまいましょう。ファイルには拡張子「.command」を付けます。保存したスクリプトに実行権限を与えます。

これで、ダブルクリックするだけでバックアップをローカルに保存することができます。]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-14　VirtualDomain </title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/05/vps-14virtualdomain.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.305</id>

    <published>2012-05-08T09:59:13Z</published>
    <updated>2012-05-08T10:00:54Z</updated>

    <summary>私は、今4つのドメインを所持しています。3つはさくらインターネットでレンタルして...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        <![CDATA[私は、今4つのドメインを所持しています。3つはさくらインターネットでレンタルしているサーバーに、一つがさくらのVPSです。<br><br>
さすがに、これはもったいないので、全部さくらのVPSで運用したいと思います。<br><br>
以下は、1つのドメインをさくらのVPSでVirtualHost運用する例ですが、残りの2つも同様の手順で行います。
]]>
        <![CDATA[<h2>ネームサーバーの設定</h2>
さくらのVPSのコンパネからネームサーバー登録を選んで、example.comを追加します。サブドメインが必要なら合わせて編集します。設定が反映されるまで時間がかかります。辛抱強く待ちましょう。
<h2>VirtulHost用のディレクトリを用意</h2>
今回はWEB関連なので、/var/www/html/以下に作ります。
<pre class="brush:bash;">
[root@www0000xx ~]# mkdir /var/www/html/example
[root@www0000xx ~]# chown info:FTPGroup /var/www/html/example
[root@www0000xx ~]# chmod 775 /var/www/html/example
</pre>
このexampleがexample.domのドキュメントルートになります。
<h2>example用のユーザー追加</h2>
example.comのWEBユーザー管理者を登録します。このユーザーのホームは/var/www/html/exampleとなり、またexample.comのメールを受信するとします。メールの設定は後述します。
<pre class="brush:bash;">
[root@www0000xx ~]# adduser info -g FTPGroup --shell /sbin/nologin -d /var/www/html/example
adduser: 警告: ホームディレクトリが既に存在します。
skel ディレクトリからのコピーは行いません。
[root@www0000xx ~]# passwd info
ユーザー info のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
</pre>
<h2>FTPユーザーとしての登録</h2>
/var/www/html/exampleに、WEBを設置するにあたりFTPが使える様にしなくてはなりません。<br><br>
/etc/vsftpd/user_listにinfoを追加して、FTPサーバーをリスタートさせます。<br><br>
ここで、FTP接続できるかどうか確認をしてください。
<h2>メールの設定</h2>
<h3>別々のドメインとUNIXアカウント</h3>
この方法を使うと、ホスティングするドメインが幾つになっても、それぞれのドメインにinfoと言う同じメールアドレスを持つ事ができます。しかしながら、それぞれのinfoには異なるUNIXアカウントを割り当てなければなりません。<br><br>
ホスティングするドメインが少なければこの方法は管理上やりやすいのですが、ホスティングするドメインが増えれば、その分UNIXアカウントも増えていき逆に管理が煩雑になります。その様な時はバーチャルメールボックス機能を使えば良いでしょう。
<h3>バーチャルエイリアスドメインの設定</h3>
まず、UNIXアカウントのメールボックスを作成します。
<pre class="brush:bash;">
[root@www0000xx ~]# /var/spool/dovecot/mails/info
[root@www0000xx ~]# chown info:mail info
</pre>
メールを受信できるようにする為に、/etc/postfix/main.cfを編集します。ファイル末尾に以下の行を追加します。
<pre class="brush:bash;">
virtual_alias_domains = example.com
virtual_alias_maps = hash:/etc/postfix/virtual
</pre>
virtual_alias_domainsでexample.comがバーチャルエイリアスドメインである事を伝えます。この設定を忘れると、postfixはメールを拒否するか、配送することができなくなります。 virtual_alias_mapsで/etc/postfix/virtualがバーチャルエイリアスドメインのメールアドレスと、UNIXアカウントを紐付けるファイルであることを示しています。 では、紐付けをします。
<pre class="brush:bash;">
[root@www0000xx ~]# vi /etc/postfix/virtual
info@example.com info
</pre>
ファイルを保存したら
<pre class="brush:bash;">
[root@www0000xx ~]# postmap /etc/postfix/virtual
[root@www0000xx ~]# postfix reload
</pre>
として、有効化します。
<h2>VirtualHostの設定</h2>
設定したいexample.comを/etc/httpd/conf.d/vhost.confに記述します。
<pre class="brush:bash;">
[root@www0000xx ~]# vi /etc/httpd/conf.d/vhost.conf
&lt;VirtualHost *:80&gt;
    DocumentRoot /var/www/html/example
    ServerName www.example.com
    ErrorLog logs/example-error_log
    CustomLog logs/example-access_log combined env=!no_log
    &lt;Directory /var/www/html/example&gt;
        AllowOverride all
        Options -MultiViews
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</pre>
編集が終わったら、httpdを再起動します。
]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-13　postfixとdovecot </title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/05/vps-13postfixdovecot.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.304</id>

    <published>2012-05-08T03:53:47Z</published>
    <updated>2012-05-08T03:59:47Z</updated>

    <summary>メールサーバーを設定するにあたって考えるべき要素があります。それは、Virtal...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        <![CDATA[メールサーバーを設定するにあたって考えるべき要素があります。それは、VirtalMailを使うか否かです。VirtualMailを構築すれば、実ユーザーとは切り離してメールだけのユーザーを用意することができます。<br><br>
しかし、私の環境では、そもそもユーザーを増やす予定もありませんし、メールアカウントの貸与もする予定が無いので、VirtualMailは使わないでいきます。
]]>
        <![CDATA[<h2>MTA(Messeage Transfer Agent)の確認</h2>
alternativesコマンドを使って、インストールされているMTAの確認をします。幸いにも私の環境では既にpostfixが導入されていました。
<pre class="brush:bash;">
[root@www0000xx ~]# alternatives --config mta
 
1 プログラムがあり 'mta' を提供します。
 
  選択       コマンド
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.postfix
 
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:
</pre>
もし、sendmailしかインストールされていない場合は
<pre class="brush:bash;">
[root@www0000xx ~]# yum install postfix
</pre>
でpostfixをインストールして、これから行うのと同じ設定をしてから、
<pre class="brush:bash;">
[root@www0000xx ~]# /etc/rc.d/init.d/sendmail stop
[root@www0000xx ~]# chkconfig sendmail off
[root@www0000xx ~]# alternatives --config mta
</pre>
として、sendmailを停止して、MTAを選択し直す必要があります。
<h2>postfixの設定</h2>
postfixの設定ファイルは/etc/postfix/main.cfなので、これをviで開きます。
<h3>ホスト名の設定</h3>
domain.comで使うSMTPサーバーはsmtp.domain.comなので、
<pre class="brush:bash;">
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
</pre>
の部分に
<pre class="brush:bash;">
myhostname = smtp.domain.com
</pre>
とSMTPサーバー名を追記します。<br>
<h3>ドメイン名の設定</h3>
<pre class="brush:bash;">
#mydomain = domain.tld
</pre>
の下に
<pre class="brush:bash;">
mydomain = domain.com
</pre>
とドメインを追記します。<br>
<h3>送信アドレスにおける@以降の部分の設定</h3>
<pre class="brush:bash;">
#myorigin = $myhostname
#myorigin = $mydomain
</pre>
の部分の#myorigin = $mydomainのコメントを外します。<br>
<h3>待ち受けるネットワークインターフェースの設定</h3>
初期設定では
<pre class="brush:bash;">
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost
</pre>
となっていて、localからのメールは受信できますが、インターネットからのメールが受信できない設定になっています。これを
<pre class="brush:bash;">
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
</pre>
として、インターネットからのメールを受け付けるようにします。<br>
<h3>自ホスト宛として保存すべきメールアドレスの@以降を設定</h3>
<pre class="brush:bash;">
mydestination = $myhostname, localhost.$mydomain, localhost
</pre>
の部分を以下のように修正します。
<pre class="brush:bash;">
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
</pre>
<h3>メールボックスの指定</h3>
<pre class="brush:bash;">
#mail_spool_directory = /var/mail
　↓
mail_spool_directory = /var/mail
</pre>
として/var/mailにmbox形式で保存します。<br>
<h3>サーバーソフト名の隠蔽</h3>
<pre class="brush:bash;">
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
</pre>
の部分に
<pre class="brush:bash;">
smtpd_banner = $myhostname ESMTP unknown
</pre>
と追加して、メールサーバーソフト名を隠します。<br>
<h3>サーバー認証の設定</h3>
以下をファイルの最終行に追記します。
<pre class="brush:bash;">
# SMTP-Auth configuration
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination

# limit
message_size_limit = 10485760
</pre>
<h3>認証デーモンの起動</h3>
システムアカウント情報を認証情報として利用しますので、以下のコマンドで認証デーモンを起動します。
<pre class="brush:bash;">
[root@www0000xx ~]# /etc/rc.d/init.d/saslauthd start
saslauthd を起動中:                                        [  OK  ]
[root@www0000xx ~]# chkconfig saslauthd on
[root@www0000xx ~]# chkconfig --list saslauthd
saslauthd       0:off   1:off   2:on    3:on    4:on    5:on    6:off
</pre>
<h3>postfixの起動</h3>
postfixを起動します。
<pre class="brush:bash;">
[root@www0000xx ~]# /etc/rc.d/init.d/postfix start
[root@www0000xx ~]# chkconfig postfix on
[root@www0000xx ~]# chkconfig --list postfix
postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
</pre>
以上で、SMTPサーバーの設定ができましたので、とりあえず送信はできるようになりました。<br><br>
と、思ったのですが、送信できないっ！あれ？あれれれ？<br><br>
仕方無いので、私のサーバー運用の師匠のアカウントをwheelグループに追加して、急遽設定を見てもらう事にしました。
<h2>認証が通らない</h2>
どうやら、SMTP認証が通ってないもよう。
<pre class="brush:bash;">
/etc/sysconfig/saslauthd
</pre>
で認証機構をpamからshadowに変更して、
<pre class="brush:bash;">
[root@www0000xx ~]# chown root:mail /etc/sasldb2
</pre>
として、認証が通る事を確認しました。<br>
<h2>その他細々とした修正</h2>
/etc/sasl2/smtpd.confで
<pre class="brush:bash;">
pwcheck_method: saslauthd
mech_list: plain login
　↓
pwcheck_method: auxprop
# mech_list: plain login
</pre>
に変更。<br><br>
/etc/postfix/main.cfで
<pre class="brush:bash;">
mail_spool_directory = /var/mail
#mail_spool_directory = /var/spool/mail
　↓
#mail_spool_directory = /var/mail
#mail_spool_directory = /var/spool/mail
mail_spool_directory = /var/spool/dovecot/mails/

smtpd_sasl_auth_enable = yes
  smtpd_sasl_local_domain = $myhostname
  smtpd_recipient_restrictions =
      permit_mynetworks
      permit_sasl_authenticated
      reject_unauth_destination
 　↓
smtpd_sasl_auth_enable = yes
  smtpd_sasl_local_domain = $myhostname
  smtpd_recipient_restrictions =
      permit_mynetworks,
      permit_sasl_authenticated,
      reject_unauth_destination
</pre>
期待されている場所へのシンボリックリンク作成
<pre class="brush:bash;">
ln -s /etc/sasl2 /usr/lib/
ln -s /usr/lib/sasl2/smtpd.conf /usr/lib64/sasl2/
</pre>
<br>
<h2>dovecot</h2>
メールの送信はできるようになりましたが、受信がいまのままではできないので、受信サーバーをインストールして設定します。
<h3>dovecotのインストール</h3>
<pre class="brush:bash;">
[root@www0000xx ~]# yum install dovecot
</pre>
でdovecotをインストールします。<br>
<b>Complete!</b>が表示されればインストール完了です。
<h2>dovecotの設定</h2>
<h3>/etc/dovecot/dovecot.conf</h3>
プロトコルを設定します。
<pre class="brush:bash;">
protocols = imap pop3 lmtp
</pre>
として、IMAPとPOP3を提供します、lmtpはlocal mail transfer protocolの略で、ローカルでのメール配送のためのものですから、通常は外さない方が良いでしょう。
<h3>/etc/dovecot/conf.d/10-auth.conf</h3>
<b>auth_mecanisms</b>でユーザー認証に使う方法を指定します。<br>
有効な値は
<ul>
<li>plain</li>
<li>login</li>
<li>digest-md5</li>
<li>cram-md5</li>
<li>ntlm</li>
<li>gssapi</li>
<li>otp</li>
<li>rpa</li>
<li>apop</li>
<li>anonymous</li>
<li>skey</li>
<li>gss-spnego</li>
</ul>
です。plainおよびloginを除いた認証は、別途パスワードファイルなどを利用する必要があります。今回はplainに設定します。
<pre class="brush:bash;">
auth_mechanisms = plain
disable_plaintext_auth = no
</pre>
ファイル末尾に!include auth-system.conf.extという記述があります。これはsystemの認証、つまりCentOSでのユーザーアカウントを利用して認証する事を意味しています。<br>
<h3>/etc/dovecot/conf.d/10-mail.conf</h3>
メールの配送場所と配送形式を設定します。 ユーザーのホームディレクトリにMaildir形式（1メール1ファイル形式）で配送したい場合は、次のように設定します。
<pre class="brush:bash;">
mail_location = maildir:/var/spool/dovecot/mails/%u
</pre>
<h3>/etc/dovecot/conf.d/10-master.conf</h3>
dovecotの基本的動作スペックを決定する重要な設定ファイルです。<br><br>
今回は二カ所だけ設定します。
<pre class="brush:bash;">
#default_vsz_limit = 256M
　↓
default_vsz_limit = 256M
</pre>
メモリリークがあるような場合、メモリを消費しつくす前にサービスのプロセスを止めて、設定したメモリサイズを超えないように制限します。
<pre class="brush:bash;">
  # Postfix smtp-auth
  #unix_listener /var/spool/postfix/private/auth {
  #  mode = 0666
  #}
　↓
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
  }
</pre>
Postfixがdovecotの認証機構を利用してSMTP-Authを行うようにします。<br><br>
以上で、dovecotの基本設定は終わりです。では起動してみます。
<pre class="brush:bash;">
[root@www0000xx ~]# /etc/rc.d/init.d/dovecot start
Dovecot Imap を起動中:                                     [  OK  ]
[root@www0000xx ~]# chkconfig dovecot on
[root@www0000xx ~]# chkconfig --list dovecot
dovecot         0:off   1:off   2:on    3:on    4:on    5:on    6:off
</pre>
<h2>ポートを解放する</h2>
最後にSMTP, POP, IMAPのポートを解放します。
<pre class="brush:bash;">
[root@www0000xx ~]# iptables -A SERVICE -p tcp --dport 25 -j ACCEPT
[root@www0000xx ~]# iptables -A SERVICE -p tcp --dport 110 -j ACCEPT
[root@www0000xx ~]# iptables -A SERVICE -p tcp --dport 143 -j ACCEPT
[root@www0000xx ~]# /etc/rc.d/init.d/iptables save
iptables: ファイアウォールのルールを /etc/sysconfig/iptablesに保存中:[  OK  ] 
[root@www0000xx ~]# /etc/rc.d/init.d/iptables restart
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]
</pre>
<h2>サブミッションポートの利用</h2>
今更サブミッションポートを使う理由を説明する必要も無いかと思います。設定方法だけを記します。
<pre class="brush:bash;">
[root@www0000xx ~]# vi /etc/postfix/master.cf
#submission inet n       -       n       -       -       smtpd
　↓
submission inet n       -       n       -       -       smtpd
</pre>
として、コメントを外します。
<pre class="brush:bash;">
[root@www0000xx ~]# iptables -A SERVICE -p tcp --dport 587 -j ACCEPT
[root@www0000xx ~]# /etc/rc.d/init.d/iptables save
iptables: ファイアウォールのルールを /etc/sysconfig/iptablesに保存中:[  OK  ] 
[root@www0000xx ~]# /etc/rc.d/init.d/iptables restart
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]
</pre>
<h2>メール利用者のための準備</h2>
<pre class="brush:bash;">
[root@www0000xx ~]# /usr/bin/saslpasswd2 -c -u smtp.domain.com admin
</pre>
二人目からの登録には<b>-c</b>パラメータは不要です。<br><br>
/var/spool/dovecot/mailsに、ユーザー毎のスプールディレクトリを作成します。
<pre class="brush:bash;">
[root@www0000xx ~]# cd /var/spool/dovecot/mails
[root@www0000xx ~]# mkdir admin
[root@www0000xx ~]# chown admin:mail admin
</pre>
<h2>スパム対策</h2>
自分で立てたサーバーならば、迷惑メール対策も自分でしないとならないですよね。僕のメインで使っているアカウントは、GMail経由だった時に一日に500通を超える迷惑メールが届きました。<br><br>
これを、裸の状態で受信すると言うのは考えたく無い話です。いろいろと検討した結果、<a href="http://www.gabacho-net.jp/anti-spam/anti-spam-system.html" target="_blank">こちら</a>で詳説されているS25Rスパム対策を導入することにしました。
]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-12　webdavでファイル共有 </title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/05/vps-12webdav.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.303</id>

    <published>2012-05-04T07:28:55Z</published>
    <updated>2012-05-04T07:30:20Z</updated>

    <summary>既にwebdavはインストールされていますので、新しいディレクトリを作って、we...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        既にwebdavはインストールされていますので、新しいディレクトリを作って、webdavの設定をするだけで簡単にできます。
        <![CDATA[<h2>ユーザー追加</h2>
今回、もう一人のユーザーとファイルを共有する事になりましたので、ユーザーをWorkGroupに追加します。目的はファイル共有なので、シェルログイン無し、ホームディレクトリ無しです。
<pre class="brush:bash;">
[root@www0000xx ~]# adduser newuser -g WorkGroup --shell /sbin/nologin -d /dev/null
adduser: 警告: ホームディレクトリが既に存在します。
skel ディレクトリからのコピーは行いません。
[root@www0000xx ~]# passwd newuser
ユーザー newuser のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
</pre>
<h2>共有ディレクトリの作成</h2>
webdavを利用して共有するディレクトリを作成します。今回は/var/www/html/webdavとしました。共有ディレクトリの所有者・グループはapacheにします。
<pre class="brush:bash;">
[root@www0000xx ~]# mkdir /var/www/html/webdav
[root@www0000xx ~]# chown apache.apache /var/www/html/webdav
</pre>
次にwebdavの設定ファイル/etc/httpd/conf.d/webdav.confに、このディレクトリを追加します。
<pre class="brush:bash;">
[root@www0000xx ~]# vi /etc/httpd/conf.d/webdav.conf
Alias /websvn/ &quot;/var/lib/svn/&quot;
Alias /webdav/ &quot;/var/www/html/webdav/&quot;
&lt;IfModule mod_dav.c&gt;
    DAVMinTimeout 600
    &lt;Location /websvn&gt;
        DAV On
        EnableSendfile off
        SSLRequireSSL
        AuthType Basic
        AuthName &quot;Login SVN  WebDAV&quot;
        AuthUserFile &quot;/var/lib/svn/.htpasswd&quot;
        Require valid-user
        Order deny,allow
        Deny from all
        Allow from all
    &lt;/Location&gt;
    &lt;Location /webdav&gt;
        DAV On
        SSLRequireSSL
        EnableSendfile on
        AuthType Basic
        AuthName &quot;Login WebDAV&quot;
        AuthUserFile &quot;/var/www/html/webdav/.htpasswd
        Require valid-user
        Order deny,allow
        Deny from all
        Allow from all
    &lt;/Location&gt;
&lt;/IfModule&gt;
</pre>
新しく追加したディレクトリをこのように記述します。
<h3>ロックファイルの作成</h3>
webDAVはロックファイルというものを利用します。今回はdav.lockという名前で作ります。
<pre class="brush:bash;">
[root@www0000xx ~]# touch /var/www/html/webdav/dav.lock
[root@www0000xx ~]# chown apache.apache /var/www/html/webdav/dav.lock
</pre>
続いて、httpd.confをviで開いて
<pre class="brush:bash;">
DAVLockDB /var/www/html/webdav/dav.lock
</pre>
と記述します。<br><br>
<h2>ユーザーの追加</h2>
webdavにアクセスできるユーザーを設定します。/etc/httpd/conf.d/webdav.confに、AuthUserFile &quot;/var/www/html/webdav/.htpasswdと記述していますので、ここにユーザーを追加します。
<pre class="brush:bash;">
[root@www0000xx ~]# htpasswd -c /var/www/html/webdav/.htpasswd USERNAME
New password: 
Re-type new password: 
</pre>
更にユーザーを追加する場合は上記コマンドの「-c」を外してください。<br><br>
最後にhttpdを再起動して完了です。
<pre class="brush:bash;">
[root@www0000xx ~]# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中: Apache/2.2.15 mod_ssl/2.2.15 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server www8424ue.sakura.ne.jp:443 (RSA)
Enter pass phrase:

OK: Pass Phrase Dialog successful.
                                                           [  OK  ]
</pre>
Macからは移動メニューのサーバーへ接続で、https://www.domain.com/webdavとするとマウントされます。


]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-11　RedmineとSubversion </title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/05/vps-11redminesubversion.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.302</id>

    <published>2012-05-03T22:32:45Z</published>
    <updated>2012-05-04T06:33:11Z</updated>

    <summary>私が借りた、さくらのVPSには標準でSubversionがインストールされていま...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        <![CDATA[私が借りた、さくらのVPSには標準でSubversionがインストールされていました。
<pre class="brush:bash;">
[admin@www0000xx config]$ svn --version --quiet
1.6.11
</pre>
なぜ、RedmineとSubversionを連携させるのかについては、ググればたくさん答えが見つかりますので割愛します。]]>
        <![CDATA[<h2>Subversionで使うディレクトリ</h2>
Subversionで使うディレクトリを作成します。
<pre class="brush:bash;">
[root@www0000xx ~]# mkdir -p /var/lib/svn/
[root@www0000xx ~]# svnadmin create /var/lib/svn/project
[root@www0000xx ~]# chown -R apache:apache /var/lib/svn/project
</pre>
これで、projectがレポジトリになりました。
<h3>mod_dav_svnのインストールと設定</h3>
まずは、mod_dav_svnをインストールします。これはHTTPベースでSubversionを利用するためのApache用モジュールです。mov_dav_svnを導入する事により、SubversionにHTTPで接続できますので、Subversionのためにポートを開く必要がなくなります。
<pre class="brush:bash;">
[root@www0000xx ~]# yum -y install mod_dav_svn
</pre>
インストールはあっけない程簡単に終わります。<br><br>
次は設定です。mod_dav_svnはApache用のモジュールなので、/etc/httpd/conf.d/に専用のconfファイルを追加します。
<pre class="brush:bash;">
[root@www0000xx ~]# vi /etc/httpd/conf.d/svn.conf
&lt;Location /svn&gt;
    DAV           svn
    SVNParentPath /var/lib/svn
    AuthType      Basic
    AuthName      &quot;Subversion Repository&quot;
    AuthUserFile  /etc/httpd/conf.d/svn_auth
    Require       valid-user
&lt;/Location&gt;
</pre>
Locationディレクティブにはリポジトリのルートを指定します。そして、3行目のリポジトリ指定もルートとしています。この場合は全てのリポジトリに同じ設定が適用されます。こうする事によって、リポジトリを追加してもconfファイルの変更やApacheの再起動の必要がなくなります。<br><br>
続いて、Webdavの設定をします。これを行う事によって、RedmineからHTTPプロトコルでSubversionを利用可能になります。設定ファイルは/etc/httpd/conf.d/webdav.confです。
<pre class="brush:bash;">
[root@www0000xx ~]# vi /etc/httpd/conf.d/webdav.conf
Alias /websvn/ &quot;/var/lib/svn/&quot;
&lt;IfModule mod_dav.c&gt;
    DAVMinTimeout 600
    &lt;Location /websvn&gt;
        DAV On
        EnableSendfile off
        SSLRequireSSL
        AuthType Basic
        AuthName &quot;Login WebDAV&quot;
        AuthUserFile &quot;/var/lib/svn/.htpasswd&quot;
        Require valid-user
        Order deny,allow
        Deny from all
        Allow from all
    &lt;/Location&gt;
&lt;/IfModule&gt;
</pre>
続いてSVNに接続可能なユーザーを作成します。
<pre class="brush:bash;">
[root@www0000xx svn]# htpasswd -c /var/lib/svn/.htpasswd USERNAME
New password: 
Re-type new password: 
Adding password for user kitajima
</pre>
他にユーザーを追加する場合は、上記コマンドから-cオプションを外してください。
<h3>Subversionパスワードファイルの作成</h3>
svn.confに指定したAuthUserFileを作成します。touchコマンドでファイルを用意し、パスワード設定を行います。<strong>USERNAME</strong>の部部はSVNのリポジトリにアクセスするユーザーになります。<br><br>
Redmineからのリポジトリ参照にも、ここで設定した内容が必要になります。Redmineにユーザーを作成済みならば、そのユーザーとパスワードを指定することで、Redminenのログイン情報を利用したリポジトリ参照が行えて便利です。
<pre class="brush:bash;">
[root@www0000xx ~]# touch /etc/httpd/conf.d/svn_auth
[root@www0000xx ~]# htpasswd /etc/httpd/conf.d/svn_auth USERNAME
New password: 
Re-type new password: 
</pre>
すべての設定を終えたら、Apacheの設定チェックと再起動を行います。
<pre class="brush:bash;">
[root@www0000xx ~]# apachectl configtest
Syntax OK
[root@www0000xx ~]# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中: Apache/2.2.15 mod_ssl/2.2.15 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server www8424ue.sakura.ne.jp:443 (RSA)
Enter pass phrase:

OK: Pass Phrase Dialog successful.
                                                           [  OK  ]
</pre>
パスワードを入力して、httpdが起動したら完了です。<br><br>
Redmineのプロジェクトの管理でレポジトリを追加します。
]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-10　自己証明書 </title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/05/vps-11.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.301</id>

    <published>2012-05-02T16:43:10Z</published>
    <updated>2012-05-03T22:22:15Z</updated>

    <summary>特段VPSだから証明書が必要というわけでも無いのですが、今後の私の運用を考えると...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        <![CDATA[特段VPSだから証明書が必要というわけでも無いのですが、今後の私の運用を考えると証明書があった方が安心です。<br><br>
きちんとしたCAから証明書を発行してもらうというのは非常に費用がかかり、個人ベースでは現実的ではありません。<br><br>
そこで、今回は自己証明書（通称：オレオレ証明書）を用意します。
]]>
        <![CDATA[<h2>mod_sslのインストール</h2>
<pre class="brush:bash;">
[root@www0000xx ~]# yum install mod_ssl
</pre>
<h2>秘密鍵（.key）の作成</h2>
<pre class="brush:bash;">
[root@www0000xx ~]# cd /etc/pki/tls/certs
[root@www0000xx certs]# openssl genrsa -out www.domain.com.key 2048
[root@www0000xx certs]# openssl genrsa -out redmine.domain.com.key 2048
[root@www0000xx certs]# chmod 400 www.domain.com.key
[root@www0000xx certs]# chmod 400 redmine.domain.com.key
</pre>
Country Nameには「JP」と入力します。Common NameにはIPアドレスかドメイン名を入れます。ここで気を付けたいのは、ドメイン名は自分で取得した独自ドメインを設定します。さくらから割り当てられているホスト名を指定すると、ホスト名が一致しないためにSSL通信ができなくなります。<br><br>
また、今回はVirtualHostを利用して二つのサブドメインを運用しています。それぞれのサブドメイン用に鍵が必要になります。
<h2>証明書発行要求（.csr）の作成</h2>
証明書発行要求とは、証明書を作成する為に必要な情報をエンコードしたもので、外部の認証局に証明書を発行してもらう場合に必要になります。テスト用のオレオレ証明書を作成したい場合は必要ありません。<br><br>
ですが、一応作り方を記述しておきます。
<pre class="brush:bash;">
[root@www0000xx certs]# openssl req -new -key www.domain.com.key -out www.domain.com.csr
...
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:都道府県
Locality Name (eg, city) [Default City]:市町村
Organization Name (eg, company) [Default Company Ltd]:会社名
Organizational Unit Name (eg, section) []:部署名
Common Name (eg, your name or your server's hostname) []:www.domain.com
Email Address []:info@domain.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
[root@www0000xx certs]# chmod 400 www.domain.com.csr
</pre>
サーバー管理者の情報を入力します。外部の認証局に送るcsrファイルを作成する場合は、申請時と同じ正しい情報が必要です。<br><br>
同様の手順で、redmine.domain.comのcsrファイルも作成できます。
<h2>証明書（.crt）の作成</h2>
証明書もopensslで作成できます。ただし、自サーバー内で作成した証明書でSSLの設定は可能ですが、正規の認証局から発行されたものではないので、アクセスの度にアラートが発生する「オレオレ証明書」になります。
<pre class="brush:bash;">
[root@www0000xx certs]# openssl req -new -out www.domain.com.crt -key www.domain.com.key -x509 -days 3650
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:都道府県
Locality Name (eg, city) [Default City]:市町村
Organization Name (eg, company) [Default Company Ltd]:会社名
Organizational Unit Name (eg, section) []:部署名
Common Name (eg, your name or your server's hostname) []:www.domain.com
Email Address []:info@domain.com
</pre>
Redmine用のものも同様に作成しておきます。
<h2>Apacheの設定</h2>
<h3>ssl.confの設定</h3>
<pre class="brush:bash;">
[root@www0000xx certs]# vi /etc/httpd/conf.d/ssl.conf
&lt;VirtualHost _default_:443&gt;
から
&lt;/VirtualHost&gt;
</pre>
までの設定を全部コメントアウトします。
<h3>vhost_ssl.confの作成</h3>
<pre class="brush:bash;">
[root@www0000xx certs]# vi /etc/httpd/conf.d/vhost_ssl.conf
NameVirtualHost *:443
&lt;VirtualHost *:443&gt;
    ServerName www.domain.com
    DocumentRoot /var/www/html/domain
    ErrorLog /var/www/html/domain/log/ssl_error_log
    TransferLog /var/www/html/domain/log/ssl_access_log
    LogLevel warn

    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    SSLCertificateFile /etc/pki/tls/certs/www.domain.com.pem
    SSLCertificateKeyFile /etc/pki/tls/certs/www.domain.com.key
    &lt;Files ~ &quot;\.(cgi|shtml|phtml|php3?)$&quot;&gt;
    SSLOptions +StdEnvVars
    &lt;/Files&gt;
    SetEnvIf User-Agent &quot;.*MSIE.*&quot; nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    CustomLog logs/ssl_request_log &quot;%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \&quot;%r\&quot; %b&quot;
&lt;/VirtualHost&gt;


&lt;VirtualHost *:443&gt;
    ServerName redmine..domain.com
    DocumentRoot /var/www/html/redmine/public
    ErrorLog /var/www/html/redmine/log/ssl_error_log
    TransferLog /var/www/html/redmine/log/ssl_access_log
    LogLevel warn

    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    SSLCertificateFile /etc/pki/tls/certs/redmine..domain.com.pem
    SSLCertificateKeyFile /etc/pki/tls/certs/redmine..domain.com.key
    &lt;Files ~ &quot;\.(cgi|shtml|phtml|php3?)$&quot;&gt;
    SSLOptions +StdEnvVars
    &lt;/Files&gt;
    SetEnvIf User-Agent &quot;.*MSIE.*&quot; nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
    CustomLog logs/ssl_request_log &quot;%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \&quot;%r\&quot; %b&quot;
&lt;/VirtualHost&gt;
</pre>
<h2>動作確認</h2>
httpdをリブートします。
<pre class="brush:bash;">
[root@www0000xx certs]# /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中: Apache/2.2.15 mod_ssl/2.2.15 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server www.tachikoma.info:443 (RSA)
Enter pass phrase:

OK: Pass Phrase Dialog successful.
                                                           [  OK  ]
</pre>
今までと違い、秘密鍵のパスフレーズを要求されるようになりました。<br><br>
最後にポートを開きます。
<pre class="brush:bash;">
[root@www0000xx certs]# iptables -A SERVICE -p tcp --dport 443 -j ACCEPT
[root@www0000xx certs]# /etc/rc.d/init.d/iptables save
iptables: ファイアウォールのルールを /etc/sysconfig/iptablesに保存中:[  OK  ] 
[root@www0000xx certs]# /etc/rc.d/init.d/iptables restart
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]
</pre>
では、ブラウザで<br>
https://ホスト名
でアクセスしてみましょう。オレオレ証明書なので警告が出ますが、アクセスできればOKです。
]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-9　Redmine </title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/05/vps-10redmine.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.300</id>

    <published>2012-05-02T12:04:52Z</published>
    <updated>2012-05-03T22:21:23Z</updated>

    <summary>いよいよ、Redmineのインストールです。RubyとPassengerのインス...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        <![CDATA[いよいよ、Redmineのインストールです。<a href="http://www.section-9.jp/blog/bluez/2012/05/vps-9rubypassenger.html" target="_blank">RubyとPassengerのインストール</a>までが前提条件です。
]]>
        <![CDATA[<h2>Redmine用のデータベースの作成</h2>
Redmine用にデータベースと専用ユーザーを作成します。
<pre class="brush:bash;">
[root@www0000xx ~]# mysql -u root -p
Enter password: 
</pre>
<pre class="brush:sql;">
mysql> create database redmine;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on redmine.* to redmine@localhost identified by 'パスワード';
Query OK, 0 rows affected (0.02 sec)

mysql> select user, host, password from mysql.user;
+---------+-----------+-----------+
| user    | host      | password  |
+---------+-----------+-----------+
| root    | localhost | xxxxxxxx  |
| redmine | localhost | yyyyyyyy  |
+---------+-----------+-----------+
2 rows in set (0.00 sec)

mysql> exit
Bye
</pre>
正常にユーザーが作成されました。
<h3>Railsのバージョンダウン</h3>
Ruby Enterprise Editionをインストールしましたが、RedmineをインストールするにはRailsのバージョンが高すぎるので、一度削除した上で改めて低いバージョンをインストールします。
<pre class="brush:bash;">
[root@www0000xx ~]# gem uninstall rails
Successfully uninstalled rails-3.2.3
[root@www0000xx ~]# gem install -v=2.3.5 rails
</pre>
<h2>Redmineのインストール</h2>
ようやくRedmineのインストールです。<br><br>
ここでは、ファイルオーナーの設定を省く為、rootからexitとしてadminユーザーとして作業します。<br><br>
Redmineの最新版は<a href="http://redmine.jp/download/" target="_blank">ここ</a>でチェックしてください。<br><br>
また、「redmine.domain.com」の箇所は以前VirtualHostの設定でRedmine用に設定したディレクトリですので、ご自分の環境に合わせて変更してください。
<pre class="brush:bash;">
[root@www0000xx ~]# exit
exit
[admin@www0000xx ~]$ wget http://rubyforge.org/frs/download.php/76033/redmine-1.4.1.tar.gz
[admin@www0000xx ~]$ tar zxvf redmine-1.4.1.tar.gz
</pre>
解凍したファイルをWebディレクトリに移動して、使い終わったファイルを削除します。
<pre class="brush:bash;">
[admin@www0000xx ~]$ mv redmine-1.4.1/* /var/www/html/redmine.domain.com
[admin@www0000xx ~]$ rm -rf redmine*
</pre>
各種設定をするためにconfigディレクトリへcdします。<br><br>
データベースの設定ファイルの元ファイルをコピーしてから編集します。
<pre class="brush:bash;">
[admin@www0000xx ~]$ cd /var/www/html/redmine.domain.com/config
production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: パスワード
  encoding: utf8
</pre>
データベースのユーザー名とパスワードを設定します。<br><br>
Redmineが使用するGemをインストールします。
<pre class="brush:bash;">
[admin@www0000xx config]$ bundle install --without development test postgresql sqlite rmagick
</pre>
次にデータベースを初期化します。
<pre class="brush:bash;">
[admin@www0000xx config]$ rake generate_session_store
[admin@www0000xx config]$ rake db:migrate RAILS_ENV=production
[admin@www0000xx config]$ rake redmine:load_default_data RAILS_ENV=production
...
Select language: ar, bg, ..., zh-TW [en] ja
</pre>
途中で言語を質問されますので<strong>ja</strong>と入力してください。<br><br>
<h3>メールの設定</h3>
まず、グループとメールユーザーを作成します。<br>
グループはredmine、ややこしいけど、ユーザーもredmineとします。ユーザーredmineはシェルログイン無し、ホームディレクトリ無しです。
<pre class="brush:bash;">
[admin@www0000xx config]$ sudo groupadd redmine
[sudo] password for admin: 
[admin@www0000xx config]$ sudo adduser redmine -g redmine --shell /sbin/nologin -d /dev/null
adduser: 警告: ホームディレクトリが既に存在します。
skel ディレクトリからのコピーは行いません。
[admin@www0000xx config]$ sudo passwd redmine
ユーザー redmine のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
</pre>
では、設定ファイルを作成します。なお、この設定ファイルはメールに限らずいろいろな項目を設定できます。詳しくは<a href="http://blog.redmine.jp/articles/configuration_yml/" target="_blank">こちら</a>を参照してください。
<pre class="brush:bash;">
[admin@www0000xx config]$ vi configuration.yml
production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: smtp.domain.com
      port: 25
      authentication: :login
      domain: redmine.domain.com
      user_name: redmine
      password: password
</pre>
これはlogin認証を行っているSMTPサーバーの例です。私のところで、これから設置するSMTPサーバーはログイン認証を行う予定なので、こちらを使用します。
<h2>動作確認</h2>
redmine.domain.comにアクセスしてRedmineが表示されれば完了です。admin/adminでログインしてパスワードの変更と環境設定を行ってください。<br><br>
ログインしたら左上のAdministrationのSettingsメニューから設定をします。<br>
最低限、下記の項目は設定しないとエラーが出る場合があるそうです。<br>
<ol>
<li>Display
    <ol>
    <li>Default language→Japanese（日本語）</li>
    <li>Start calendars on→お好みで（Base'd on user's languageはNG）</li>
    <li>Date format→お好みで（Base'd on user's languageはNG）</li>
    <li>Time format→お好みで（Base'd on user's languageはNG）</li>
    </ol>
</li>
<li>Authentication
    <ol>
    <li>Authentication required→チェック</li>
    <li>Autologin→お好みで</li>
    <li>Self-registration→disabledの方が安全ですね</li>
    </ol>
</li>
<li>Email notifications
    <ol>
    <li>Emission email address→redmine@domain.com</li>
    </ol>
</li>
</ol>
ここまで設定すると、メニュー表示等が日本語化されてきたと思います。
<h3>ユーザーの追加</h3>
Redmineでプロジェクト管理をするにあたって、複数人で行う場合はadminでログインした状態で、管理のユーザーを選択し左のペインの右上に表示される「新しいユーザ」をクリックしてユーザーを追加してください。
]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-8　RubyとPassenger</title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/05/vps-9rubypassenger.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.299</id>

    <published>2012-05-02T00:34:24Z</published>
    <updated>2012-05-03T22:20:47Z</updated>

    <summary>今回はRedmineを使うために、RubyとPassengerをインストールしま...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        <![CDATA[今回はRedmineを使うために、RubyとPassengerをインストールします。<br><br>
<a href="http://www.section-9.jp/blog/bluez/2012/04/vps-4apache.html" target="_blank">Apacheのインストール</a>と<a href="http://www.section-9.jp/blog/bluez/2012/04/vps-5virtual-host.html" target="_blank">VirtualHostの設定</a>と<a href="http://www.section-9.jp/blog/bluez/2012/05/vps-8mysqlphpphpmyadmin.html" target="_blank">MySQLのインストール</a>が前提条件です。<br><br>
<h2>必要なパッケージのインストール</h2>
さくらインターネットのVPSには、元からDevelopment Toolsがインストール済みなので、その他に今回必要なパッケージをインストールしていきます。
]]>
        <![CDATA[<ul>
<li>ApacheとMySQLのヘッダファイル</li>
<pre class="brush:bash;">
[root@www0000xx ~]# yum -y install httpd-devel mysql-devel
</pre>
<li>Rubyのビルドに必要なライブラリのヘッダファイル</li>
<pre class="brush:bash;">
[root@www0000xx ~]# yum -y install openssl-devel readline-devel zlib-devel
</pre>
</ul>
<h2>Ruby Enterprise Editionのインストール</h2>
yumでも標準のRubyをインストールすることも可能ですが、Ruby Enterprise Editoinはインストールすると、passenger, rake, rails, fastthread, rackなどのRails実行環境を構築するのに必要なgemパッケージも同時にインストールされるので、楽です。さらに通常のRubyよりもメモリ効率が良いそうです。<br><br>
まずはRuby Enterprise Edtitionをダウンロードして展開します。
<pre class="brush:bash;">
[root@www0000xx ~]# wget http://rubyforge.org/frs/download.php/71096/ruby-enterprise-1.8.7-2010.02.tar.gz
[root@www0000xx ~]# tar xzvf ruby-enterprise-1.8.7-2010.02.tar.gz
</pre>
インストーラーを起動します。
<pre class="brush:bash;">
[root@www0000xx ~]# ./ruby-enterprise-1.8.7-2010.02/installer --no-dev-docs
...
[/opt/ruby-enterprise-1.8.7-2010.02] : /usr/local
</pre>
インストール場所を途中で聞いてきます。Ruby Enterprise Editionは標準のRubyではないオプション扱いなので、デフォルトは/opt/...になっていますが、標準のRubyと同じく/usr/localにインストールすることで、ライブラリにパスを通したりなどの設定が不要になります。<br><br>
しばらくすると以下のような警告文が表示されます。
<pre class="brush:bash;">
The following gems could not be installed, probably because of an Internet
connection error:

 * sqlite3-ruby
 * pg
</pre>
Ruby用SQLiteアダプタとPostgreSQLアダプタのgemがインストールできないという警告ですが、今回はMySQLを利用するので、関係ありません。そのままEnterで進めます。<br><br>
しばらくすると、完了しますので、使い終わったインストーラーを消去します。
<pre class="brush:bash;">
[root@www0000xx ~]# rm -rf ruby-enterprise*
</pre>
<h2>PassengerのApache用モジュールのインストール</h2>
<pre class="brush:bash;">
[root@www0000xx ~]# passenger-install-apache2-module
...
&lt;VirtualHost *:80&gt;
      ServerName www.yourhost.com
      # !!! Be sure to point DocumentRoot to 'public'!
      DocumentRoot /somewhere/public    
      &lt;Directory /somewhere/public&gt;
         # This relaxes Apache security settings.
         AllowOverride all
         # MultiViews must be turned off.
         Options -MultiViews
      &lt;/Directory&gt;
   &lt;/VirtualHost&gt;
</pre>
インストール後半で、上記のようにApacheに設定すべき内容が表示されます。必ず控えておきましょう。<br><br>
続いて、Passenger用のhttpd設定ファイルを作成します。
<pre class="brush:bash;">
[root@www0000xx ~]# vi /etc/httpd/conf.d/passenger.conf
# Passengerの基本設定
# passenger-install-apache2-moduleインストール中に表示された内容を記載
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.15
PassengerRuby /usr/local/bin/ruby

# Passengerのチューニングのための設定
PassengerMaxPoolSize 5
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 900
PassengerUseGlobalQueue on
PassengerHighPerformance on
PassengerStatThrottleRate 10
RailsAppSpawnerIdleTime 0
RailsFrameworkSpawnerIdleTime 0
</pre>
概ね、上記の設定で問題ないはずです。弊社は大規模ではないので、少人数運用を考えてRedmineのインスタンスを少なめに設定しています。<br><br>
次にVirtualHostの設定も変更します。/etc/httpd/conf.d/vhost.confをviで開きます。<br><br>
今回Passengerを動かすのは、Redmine用のredmine.domain.comなので、以下の様にインストール時の指定に従って修正します。
<pre class="brush:bash;">
&lt;VirtualHost *:80&gt;
    DocumentRoot /var/www/html/redmine.domain.com
    ServerName redmine.domain.com
    ErrorLog logs/redmine-error_log
    CustomLog logs/redmine-access_log combined env=!no_log
&lt;/VirtualHost&gt;
　↓
&lt;VirtualHost *:80&gt;
    DocumentRoot /var/www/html/redmine.domain.com/public
    ServerName redmine.domain.com
    ErrorLog logs/redmine-error_log
    CustomLog logs/redmine-access_log combined env=!no_log
    &lt;Directory /var/www/html/redmine.domain.com/public&gt;
        AllowOverride all
        Options -MultiViews
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</pre>
最後にhttpdを再起動します。
<pre class="brush:bash;">
[root@www0000xx ~]# /etc/rc.d/init.d/httpd restart
httpd を停止中:                                            [失敗]
httpd を起動中: Warning: DocumentRoot [/var/www/html/redmine/public] does not exist
                                                           [  OK  ]
[root@www0000xx ~]# 
</pre>
publicディレクトリが無いため警告が出ますが、Redminenをインストールする時に作成しますので、今は気にしなくて大丈夫です。]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-7　MySQLとPHPとphpMyAdmin </title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/05/vps-8mysqlphpphpmyadmin.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.298</id>

    <published>2012-05-01T06:17:33Z</published>
    <updated>2012-05-03T22:20:16Z</updated>

    <summary>今回運用するサーバーではVirtualHostでRedmineを使う予定です。R...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        今回運用するサーバーではVirtualHostでRedmineを使う予定です。Redmineはデータベースを必要としますので、MySQLをインストールします。

        <![CDATA[<h2>MySQLのインストール</h2>
<pre class="brush:bash;">
[root@www0000xx ~]# yum -y install mysql-server
</pre>
<strong>Complete!</strong>と表示されればインストール完了です。今回はmysql-server.x86_64 0:5.1.61-1.el6_2.1がインストールされました。<br><br>
MySQLをインストールした後に起動前に初期化とシステムテーブルを生成します。通常は初回起動時に生成されますが、公式サイトには明示的に実行するコマンドが書かれていますので、実行します。
<pre class="brush:bash;">
[root@www0000xx ~]# mysql_install_db
</pre>
続いてサービスの起動と自動起動の設定をします。
<pre class="brush:bash;">
[root@www0000xx ~]# /etc/rc.d/init.d/mysqld start
mysqld を起動中:                                           [  OK  ]
[root@www0000xx ~]# chkconfig mysqld on
[root@www0000xx ~]# chkconfig --list mysqld
mysqld         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
</pre>
<br>
<h3>設定</h3>
MySQLの設定ですが、ここでは文字コードをutf-8にするだけにします。MySQLの設定フィル/etc/my.confをviで開きます。
<pre class="brush:bash;">
[mysqld]
...
default-character-set=utf8
skip-character-set-client-handshake
</pre>
設定が終わったらMySQLを再起動します。
<pre class="brush:bash;">
[root@www0000xx ~]# /etc/rc.d/init.d/mysqld restart
mysqld を停止中:                                           [  OK  ]
mysqld を起動中:                                           [  OK  ]
</pre>
<br>
<h3>rootユーザーのパスワード設定</h3>
初期状態のMySQLでは、全ての権限を持つrootユーザーのパスワードが空なので、まずはパスワードを設定します。
<pre class="brush:bash;">
[root@www0000xx ~]# mysqladmin -u root password 'パスワード'
</pre>
では、rootでログインしてみます。
<pre class="brush:bash;">
[root@www0000xx ~]# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.1.61 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
</pre>
<br>
<h3>不要なユーザーの削除</h3>
初期ユーザーを確認してみましょう。
<pre class="brush:sql;">
mysql> select user, host, password from mysql.user;
+------+------------------------+----------+
| user | host                   | password |
+------+------------------------+----------+
| root | localhost              | xxxxxxxx |
| root | www0000xx.sakura.ne.jp |          |
| root | 127.0.0.1              |          |
|      | localhost              |          |
|      | www0000xx.sakura.ne.jp |          |
+------+------------------------+----------+
5 rows in set (0.00 sec)
</pre>
localhostしか利用する予定がないので、他のユーザーは削除します。他のユーザーはパスワードが無いので、パスワードが空のユーザーを削除すれば良いはずです。
<pre class="brush:sql;">
mysql> delete from mysql.user where password='';
Query OK, 4 rows affected (0.00 sec)
</pre>
うまく反映されたか確認します。
<pre class="brush:sql;">
mysql> select user, host, password from mysql.user;
+------+------------------------+----------+
| user | host                   | password |
+------+------------------------+----------+
| root | localhost              | xxxxxxxx |
+------+------------------------+----------+
1 rows in set (0.00 sec)
</pre>
<br>
<h3>不要なデータベースの削除</h3>
続いて初期状態のデータベースを確認してみます。
<pre class="brush:sql;">
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)
</pre>
SQL練習用のtestデータベースが不要なので削除します。
<pre class="brush:sql;">
mysql> drop database test;
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.01 sec)
</pre>
これで、MySQLの初期設定は終わりです。ログアウトします。
<pre class="brush:sql;">
mysql> exit;
Bye
</pre>
<br><br>
<h2>PHPのインストール</h2>
PHPをインストールする際に、マルチバイトを扱うモジュールと、MySQLにアクセスするモジュールと、画像処理に必要なモジュールも一緒にインストールしてしまいます。
<pre class="brush:bash;">
[root@www0000xx ~]# yum -y install php php-mbstring php-mysql php-gd
</pre>
<strong>Complete!</strong>でインストール完了です。今回インストールされたモジュールは全てバージョン5.3.3でした。<br><br>
今のところ、php.iniに設定は不要なので、httpdを再起動します。
<pre class="brush:bash;">
[root@www0000xx ~]# /etc/rc.d/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]
</pre>
これで、PHPを使う準備ができました。
<br>
<h2>phpMyAdminのインストール</h2>
phpMyAdminは<a href="http://www.phpmyadmin.net/home_page/index.php" target="_blank">ここ</a>からダウンロードできます。現在の最新版は3.5.0です。<br><br>
ローカルにダウンロードして、解凍したらサーバーのドキュメントルートにftpを使ってアップロードします。今回は/var/www/html/domain/にアップロードします。<br><br>
解凍したファイルは「phpMyAdmin-3.5.0-all-languages」のような名前のフォルダに格納されていますが、アクセスしにくいので、phpMyAdminというフォルダ名に変更してからアップロードします。<br><br>
作成されたフォルダ内のconfig.sample.inc.phpをconfig.inc.phpにコピーします。万が一の時のために元ファイルは残しておきます。<br><br>
アップロードが完了したら、http://www.domain.com/phpMyAdminにアクセスしてみましょう。]]>
    </content>
</entry>

<entry>
    <title>PEAR::Pagerを装飾する</title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/05/pearpager.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.297</id>

    <published>2012-04-30T22:56:40Z</published>
    <updated>2012-04-30T23:05:45Z</updated>

    <summary>ここ数日、さくらのVPSの話題ばかりだったので、閑話休題...と言う訳ではないの...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="お仕事" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        <![CDATA[ここ数日、さくらのVPSの話題ばかりだったので、閑話休題...と言う訳ではないのですが、PEAR::Pagerの装飾について。<br><br>
PEAR::Pagerは大量のデータベースデータを一覧する時等に非常に便利なのですが、いかんせん、ページ遷移のリンクが可愛くない（笑）<br><br>
と、言う事でちょっと装飾してみました。]]>
        <![CDATA[まず、CSSを書きます。
<pre class="brush:css;">

div.pager {
    margin-top: 20px;
    font-size: 85%;
}

div.pager a,
div.pager span {
    display: block;
    float: left;
    margin-right: 0.1em;
    padding: 0.2em 0.5em;
}

div.pager a {
    color: #105cb6;
    background-color: #fff;
    border: 1px solid #9aafe5;
    text-decoration: none;
}

div.pager a:hover {
    color: #003;
    background-color: #fff;
    border: 1px solid #2e6ab1;
}

div.pager span.current {
    color: #fff;
    background-color: #2e6ab1;
    border: 1px solid #2e6ab1;
    font-weight: bold;
}

div.pager span.nextprev {
    border: 1px solid #ddd;
    color: #999;
    background-color: #fff;
}

div.pager a.nextprev {
    font-weight: bold;
}
</pre>
<br>
まぁ、色や線種や幅などはお好みに応じて変えてください。

で、肝心のPHPの方ですが
<pre class="brush:php;">
// １ページ当たりの表示件数
	$perPage = 10;
	// PEAR::pagerの動作パラメータ設定
	$params = array(
		'perPage'=&gt;$perPage,
		'totalItems'=&gt;$ttlcnt,
		'curPageLinkClassName'=&gt;'current',
		'prevImg'=&gt;'&amp;#171; Previous',
		'nextImg'=&gt;'Next &amp;#187;',
		'spacesBeforeSeparator'=&gt;0,
		'spacesAfterSeparator'=&gt;0,
		'firstPagePre'=&gt;'',
		'firstPageText'=&gt;'≪',
		'firstPagePost'=&gt;'',
		'lastPagePre'=&gt;'',
		'lastPageText'=&gt;'≫',
		'lastPagePost'=&gt;'',
		'prevImg'=&gt;'&lt;',
		'nextImg'=&gt;'&gt;',
		'httpMethod'=&gt;'POST',
		'importQuery'=&gt;'FALSE',
		'extraVars'=&gt;$extvar
		);
	// Pagerオブジェクト生成
	$p = Pager::factory( $params );
	// リンク情報取得
	$links = $p-&gt;GetLinks();
	$page_range = $p-&gt;getPageRangeByPageId();
	$page_range = range( $page_range[0], $page_range[1] );
	$link = '';
	if( $links['pages'] != '' )
	{
		// 前のページ
		if ( $links['back'] != '' )
		{
			// クラスを付ける
			$link .= str_replace( '&lt;a href', '&lt;a class=&quot;nextprev&quot; href', $links['back'] );
		}
		else
		{
			$link .= '&lt;span class=&quot;nextprev&quot;&gt;' . $p-&gt;getOption( 'prevImg' ) . '&lt;/span&gt;';
		}
		// 最初のページ
		if( $links['first'] != '' &amp;&amp; !in_array( 1, $page_range ))
		{
			$link .= $links['first'] . '&lt;span&gt;....&lt;/span&gt;';
		}
		// ページ
		$link .= $links['pages'];
		// 最後のページ
	    if( $links['last'] != '' &amp;&amp; !in_array( $p-&gt;numPages(), $page_range ))
	    {
			$link .= '&lt;span&gt;....&lt;/span&gt;' . $links['last'];
		}
		// 次のページ
		if( $links['next'] != '' )
		{
			// クラスを付ける
			$link .= str_replace( '&lt;a href', '&lt;a class=&quot;nextprev&quot; href', $links['next'] );
		}
		else
		{
			$link .= '&lt;span class=&quot;nextprev&quot;&gt;' . $p-&gt;getOption( 'nextImg' ) . '&lt;/span&gt;';
		}
	}
	// 現在ページの内容を出力
	if( $ttlcnt &gt; 0 )
	{
		showPage(( $p-&gt;GetCurrentPageID() - 1 ) * $perPage, $perPage, $id );
	}
?&gt;
	&lt;div class=&quot;pager&quot; style=&quot;position: absolute; left: 50%; width: 320px;&quot;&gt;
		&lt;?php echo( $link ); ?&gt;
	&lt;/div&gt;
</pre>
と、こんな感じで書きます。

これだけで、驚くほど外観が変わりますので、お薦めです♪]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-6　FTPの設定 </title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/04/vps-6ftp.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.296</id>

    <published>2012-04-30T09:52:57Z</published>
    <updated>2012-05-03T03:13:32Z</updated>

    <summary>普通、ファイルのアップロードにはSSH経由のSFTPで接続していますので、FTP...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        普通、ファイルのアップロードにはSSH経由のSFTPで接続していますので、FTPサーバーを導入しなくても良いのですが多数のファイルをアップロードしたり、WEBサイトの事を考えると、WEB構築ツールのほとんどがFTP接続をしていますので、FTPサーバーは入れておいた方が無難でしょう。

        <![CDATA[<h2>vsftpdのインストール</h2>
メジャーなFTPサーバーであるvsftpdを利用する事にします。
<pre class="brush:bash;">
[root@www0000xx ~]# yum -y install vsftpd
</pre>
<strong>Complete!</strong>を確認したら、続いてサービスの起動と自動起動の設定をします。
<pre class="brush:bash;">
[root@www0000xx ~]# /etc/rc.d/init.d/vsftpd start
vsftpd 用の vsftpd を起動中:                               [  OK  ]
[root@www0000xx ~]# chkconfig vsftpd on
[root@www0000xx ~]# chkconfig --list vsftpd
vsftpd         	0:off	1:off	2:on	3:on	4:on	5:on	6:off
</pre>
問題が無いようなので、設定を行います。
<h2>vsftpdの設定</h2>
vsftpdの設定ファイルは/etc/vsftpd/vsftpd.confです。これをviで開きます。<br>
匿名アクセス禁止
<pre class="brush:bash;">
anonymous_enable=YES
　↓
anonymous_enable=NO
</pre>
アスキーモード有効
<pre class="brush:bash;">
#ascii_upload_enable=YES
#ascii_download_enable=YES
　↓
ascii_upload_enable=YES
ascii_download_enable=YES
</pre>
シグニチャ隠蔽
<pre class="brush:bash;">
#ftpd_banner=Welcome to blah FTP service.
　↓
ftpd_banner=Welcome to blah FTP service.
</pre>
デフォルトでホームの上位は見せない
<pre class="brush:bash;">
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
　↓
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
</pre>
サブフォルダを含む一括アップロード・ダウンロードを許可
<pre class="brush:bash;">
#ls_recurse_enable=YES
　↓
ls_recurse_enable=YES
</pre>
/etc/vsftpd/user_listのユーザーだけを許可（ここからは、ファイルの末尾に追加）
<pre class="brush:bash;">
userlist_deny=NO
</pre>
ユーザーごとの設定ファイルを有効にする
<pre class="brush:bash;">
user_config_dir=/etc/vsftpd/vsftpd_user_conf
</pre>
タイムスタンプ時間をローカル時間にする
<pre class="bursh:bash;">
use_localtime=YES
</pre>
設定を簡単にするたにPASVポートのポート範囲を限定
<pre class="brush:bash;">
pasv_min_port=50000
pasv_max_port=50030
</pre>
保存して終了します。
<h2>ftpユーザーの作成</h2>
アクセス許可をするユーザーを/etc/vsftpd/user_listに設定します。<br><br>
FTPはパスワードが平文で転送されますので、suやsudoなどの管理者用のコマンドが使えるユーザーは避けます。<br><br>
今回はシェルが使えず、ホームディレクトリが/var/wwwのユーザーを作り、WEBサイトの管理をします。
また、私自身のユーザーアカウントであるkitajimaも作成します。kitajimaもシェルが使えません。ホームディレクトリは/home/kitajimaになります。
<pre class="brush:bash;">
[root@www0000xx ~]# adduser --shell /sbin/nologin --home /var/www ftpuser
adduser: 警告: ホームディレクトリが既に存在します。
skel ディレクトリからのコピーは行いません。
[root@www0000xx ~]# adduser --shell /sbin/nologin kitajima
[root@www0000xx ~]# passwd ftpuser
ユーザー ftpuser のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
[root@www0000xx ~]# passwd kitajima
ユーザー kitajima のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
</pre>
ftpuser作成時に、既にホームディレクトリが存在していると言う警告が出ますが無視して構いません。<br><br>
/etc/vsftpd/user_listをviで開いてftpuserとkitajimaだけを記述します。<br><br>
上位ディレクトリにアクセスを許可するユーザーを/etc/vsftpd/chroot_listに記述します。今回はどのユーザーにも許可しないので、viで開いて保存して空のファイルを作成します。<br><br>
これで、ftpuserはWebコンテンツの操作だけ、kitajimaは自分のホームだけを操作できるようになりました。vsftpdを再起動します。
<pre class="brush:bash;">
/etc/rc.d/init.d/vsftpd restart
vsftpd を停止中:                                           [  OK  ]
vsftpd 用の vsftpd を起動中:                               [  OK  ]
</pre>
<h2>iptablesの設定追加</h2>
実際にアクセスするためにiptablesにFTP用の設定を追加して保存・再起動します。
<pre class="brush:bash;">
[root@www0000xx ~]# iptables -A SERVICE -p tcp --dport 20 -j ACCEPT
[root@www0000xx ~]# iptables -A SERVICE -p tcp --dport 21 -j ACCEPT
[root@www0000xx ~]# iptables -A SERVICE -p tcp --dport 50000:50030 -j ACCEPT
[root@www0000xx ~]# /etc/rc.d/init.d/iptables save
iptables: ファイアウォールのルールを /etc/sysconfig/iptablesに保存中:[  OK  ] 
[root@www0000xx ~]# /etc/rc.d/init.d/iptables restart
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]
</pre>
これでFTPでのアクセスが可能になりました。
<h2>グループの作成</h2>
運用中にユーザーが増えた場合は、kitajimaと同じ様に追加していきます。<br><br>
ここで、ユーザー管理を少し楽にする為にグループを作成してユーザーを追加します。<br><br>
今回はFTPGroupを作ってftpuserを追加、WorkGroupを作ってkitajimaを追加します。今後メンバーが増えた時は<i>adduser --shell /sbin/nologin -G WorkGroup newuser</i>とすれば、シェルログイン不可・/home/newuserがホーム・グループがWorkGroupのユーザーを作成できます。FTPでホームにアクセスさせる場合は/etc/vsftpd/user_listにnewuserを追加します。
<pre class="brush:bash;">
[root@www0000xx ~]# groupadd FTPGroup
[root@www0000xx ~]# groupadd WorkGroup
[root@www0000xx ~]# usermod -G FTPGroup ftpuser
[root@www0000xx ~]# usermod -G WorkGroup kitajima
</pre>
]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-5　Virtual Hostの設定</title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/04/vps-5virtual-host.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.295</id>

    <published>2012-04-30T00:41:54Z</published>
    <updated>2012-05-02T02:40:42Z</updated>

    <summary>Virtual Hostを設定する理由 前回、Apacheをインストールしました...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        <![CDATA[<h2>Virtual Hostを設定する理由</h2>
前回、Apacheをインストールしましたが、前回の設定では一つのドメインしか運営できません。<br>
私の計画はwww.domain.comで通常のWebサイトを、redmine.domain.comでRedmineを運用する事です。<br><br>
CentOSでは標準でSuEXECがONで、実行ディレクトリが「/var/www」と「~/public_html」以下に固定されています。<br><br>
複数のサイトを運用する場合、それぞれ専用のユーザーを作成して「/home/userdir/public_html/」で運用する方法もあります。しかし、今回は私が管理しやすいように、デフォルトのドキュメントルートである「/var/www/html/」以下に各ドメインのディレクトリを作って管理します。
]]>
        <![CDATA[<h2>ディレクトリ構成</h2>
<table>
<tr>
<td style="background-color:#AFD170;">Domain</td>
<td style="background-color:#AFD170;">Document Root</td>
<td style="background-color:#AFD170;">Remarks</td>
</tr>
<tr>
<td>www.domain.com</td>
<td>/var/www/html/domain</td>
<td>Web Site</td>
</tr>
<tr>
<td>redmine.domain.com</td>
<td>/var/www/html/redmine</td>
<td>Redmine Site</td>
</tr>
</table>
<h2>ドキュメントディレクトリの作成</h2>
上記で定義したディレクトリを作成します。
<pre class="brush:bash;">
[root@www0000xx ~]# mkdir /var/www/html/domain
[root@www0000xx ~]# mkdir /var/www/html/redmine
</pre>
<h2>httpd.confの設定</h2>
次にVirtualHostの設定をhttpd.confに記述します。<br>
しかし、後から構成変更や、更にVirtualHostが増える可能性を考慮すると、別ファイルにした方が管理しやすそうです。<br>
/etc/httpd/conf.d/内の*.confファイルはhttpd起動時に自動的に読み込まれますので、ここではvhost.confというファイルを作成します。
<pre class="brush:bash;">
[root@www0000xx ~]# vi /etc/httpd/conf.d/vhost.conf
</pre>
以下の内容を記述します。URLはご自分のドメインに合わせて適宜書き換えてください。
<pre class="brush:bash;">
NameVirtualHost *:80

&lt;VirtualHost *:80&gt;
    DocumentRoot /var/www/html/domain
    ServerName www.domain.com
    ServerAlias domain.com
    &lt;Directory &quot;/var/www/html/domain&quot;&gt;
        AllowOverride All
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;

&lt;VirtualHost *:80&gt;
    DocumentRoot /var/www/html/redmine
    ServerName redmine.domain.com
    ErrorLog logs/redmine-error_log
    CustomLog logs/redmine-access_log combined env=!no_log
&lt;/VirtualHost&gt;
</pre>
「/var/www/html/」内にディレクトリを作成していますので、Directory設定はhttpd.confの<strong>&lt;Directory &quot;/var/www/html&quot;&gt;</strong>を承継します。<br><br>
上のVirtualHost設定がwww.domain.comの設定で、<strong>ServerAlias</strong>の指定をすることで、www有りでも無しでも、このホストを参照できます。また、ログファイルの指定をしていませんので、httpd.confで指定したログファイルに記録されます。また、<strong>AllowOverride All</strong>の指定をする事で、「.htaccess」による設定上書きを許可しました。<br><br>
下のVirtualHost設定がredmine.domain.comの設定です。ログファイルが別に記録されるように設定しています。<br><br>
設定ファイルを保存したら、httpdを再起動します。
<pre class="brush:bash;">
[root@www0000xx ~]# /etc/rc.d/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]
</pre>
最後に、adminユーザーが内容を書き換えできるように、/var/www/html/以下のファイルを全部、オーナー権限を変更しておきます。
<pre class="brush:bash;">
[root@www0000xx ~]# chown -R admin.admin /var/www/html/
</pre>]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-4　Apacheをインストールして設定する</title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/04/vps-4apache.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.294</id>

    <published>2012-04-29T20:07:25Z</published>
    <updated>2012-04-29T20:14:31Z</updated>

    <summary>Apache 今回は、メジャーなWebサーバーのApache HTTP Serv...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        <![CDATA[<h2>Apache</h2>
今回は、メジャーなWebサーバーのApache HTTP Serviceをインストールします。
<h2>rootになる</h2>
インストールと設定はroot権限が必要なコマンドばかりなので、各種インストールの間だけ<strong>sudo</strong>ではなく、<strong>su</strong>でrootになって作業します。<pre class="brush:bash;">
[admin@www0000xx ~]$ su
パスワード:
[root@www0000xx admin]# cd
[root@www0000xx ~]# 
</pre>
]]>
        <![CDATA[<h2>yumのアップデート</h2>
CentOSでは、パッケージのインストールと管理にyumというプログラムを使います。さくらのVPSには最初からyumがインストール済みで、起動直後から利用できます。<br><br>
他のプログラムをインストールする前に、yum自体を最新版にアップデートします。
<pre class="brush:bash;">
[root@www0000xx ~]# yum -y update
</pre>
<h2>Apacheのインストール</h2>
yumのアップデートが済んだら、yumを使ってApacheをインストールします。
<pre class="brush:bash;">
[root@www0000xx ~]# yum -y install httpd
</pre>
<strong>Complete!</strong>と表示されれば、インストールは成功です。<br><br>
では、Apacheを起動してインストールに問題が無いか確認します。
<pre class="brush:bash;">
[root@www0000xx ~]# /etc/rc.d/init.d/httpd start
httpd を起動中:                                            [  OK  ]
</pre>
無事に起動できました。<br><br>
続いて自動起動の設定をして、確認をします。
<pre class="brush:bash;">
[root@www0000xx ~]# chkconfig httpd on
[root@www0000xx ~]# chkconfig --list httpd
httpd          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
</pre>
<strong>chkconfig --list</strong>を実行すると、起動されたラン・レベルの一覧が表示されます。<br><br>
ランレベルとはLinux系OSを動作させる環境に応じて番号が設定されており、その環境で動かすアプリケーションなどを設定できます。
<table>
<tr>
<td style="background-color:#FCE794;">0</td>
<td style="background-color:#BBFF99;">システムの停止</td>
<td style="background-color:#86D85D;">システムを停止するときに指定</td>
</tr>
<tr>
<td style="background-color:#FCE794;">1</td>
<td style="background-color:#BBFF99;">シングルユーザー</td>
<td style="background-color:#86D85D;">システムを一人で占有するときに指定</td>
</tr>
<tr>
<td style="background-color:#FCE794;">2</td>
<td style="background-color:#BBFF99;">ネットワーク機能無しのマルチユーザー</td>
<td style="background-color:#86D85D;">システムを複数ユーザが利用するときに指定</td>
</tr>
<tr>
<td style="background-color:#FCE794;">3</td>
<td  style="background-color:#BBFF99;">CUIログインのマルチユーザー</td>
<td style="background-color:#86D85D;">システムを複数ユーザーが利用する時に指定。ログインはCUI（テキストベース）</td>
</tr>
<tr>
<td style="background-color:#FCE794;">4</td>
<td  style="background-color:#BBFF99;">カスタム</td>
<td style="background-color:#86D85D;">起動するサービスをカスタマイズして設定</td>
</tr>
<tr>
<td style="background-color:#FCE794;">5</td>
<td style="background-color:#BBFF99;">GUIログインのマルチユーザー</td>
<td style="background-color:#86D85D;">システムを複数ユーザーが利用する時にシチエ。ログ委員はGUIベース</td>
</tr>
<tr>
<td style="background-color:#FCE794;">6</td>
<td style="background-color:#BBFF99;">システムの再起動</td>
<td style="background-color:#86D85D;">システムをリブートする時に指定</td>
</tr>
</table>
通常起動時にはランレベル3と5がonになっていればOKだと考えて差し支えありません。
<h2>Apacheの設定</h2>
念のために元ファイルをコピーしてからviで開きます。
<pre class="brush:bash;">
[root@www0000xx ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
[root@www0000xx ~]# vi /etc/httpd/conf/httpd.conf
</pre>
<h3>レスポンスヘッダにOSのバージョンを表示しないようにする</h3>
<pre class="brush:bash;">
ServerTokens OS
　↓
ServerTokens Prod
</pre>
<h3>KeepAliveを有効にします。</h3>
HTTPはステートレスプロトコルです。クライアント・サーバー間の接続を永続させないで、要求に応じて接続の開始・切断を行います。<br>
しかし、通常のWEBページはHTMLドキュメントや画像など、複数のファイルから成り立っています。クライアントが一つのWEBページを取得する間に、ファイル毎にTCP接続の開始・切断を行うのは非効率的です。ですから、KeepAliveを利用して一つの接続を使い回して、複数のリクエストに応えられるようにします。
<pre class="brush:bash;">
KeepAlive Off
　↓
KeepAlive On
</pre>
<br>
<h3>モジュールの読み込み設定</h3>
モジュールは必要に応じて設定してください。私は以下のように設定しました。
<pre class="brush:bash;">
LoadModule auth_basic_module modules/mod_auth_basic.so
　→基本認証を行う
LoadModule auth_digest_module modules/mod_auth_digest.so
　→ダイジェスト認証を行う
LoadModule authn_file_module modules/mod_authn_file.so
　→テキストファイルを用いたユーザー認証を行う
#LoadModule authn_alias_module modules/mod_authn_alias.so
　→認証に成功したユーザーを指定したURLへリダイレクトしない
#LoadModule authn_anon_module modules/mod_authn_anon.so
　→認証領域への匿名ユーザーのアクセスを許可しない
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
　→DMBファイルを用いたユーザー認証を行わない
LoadModule authn_default_module modules/mod_authn_default.so
　→認証モジュールがロードされなかった場合、すべての認証を拒否する
LoadModule authz_host_module modules/mod_authz_host.so
　→ホスト名／IPアドレスに基づいた承認を行う
LoadModule authz_user_module modules/mod_authz_user.so
　→ユーザー名に基づいた承認を行う
LoadModule authz_owner_module modules/mod_authz_owner.so
　→ファイルの所有者に基づいた承認を行う
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
　→グループに基づいた承認を行う（テキストファイル）
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
　→グループに基づいた承認を行わない（DBMファイル）
LoadModule authz_default_module modules/mod_authz_default.so
　→承認用モジュールがロードされなかった場合、すべての承認を拒否する
#LoadModule ldap_module modules/mod_ldap.so
　→他のLDAPモジュールにLDAPの接続プールとLDAP共有メモリキャッシュ機能を提供しない
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
　→ユーザー認証にLDAPを使用しない
LoadModule include_module modules/mod_include.so
　→Server Side Includes(SSI)を有効にする
LoadModule log_config_module modules/mod_log_config.so
　→カスタマイズ可能なログ収集機能を提供する
LoadModule logio_module modules/mod_logio.so
　→送受信バイト数をログに記録する
LoadModule env_module modules/mod_env.so
　→CGI/SSIで使用される環境変数を制御する
#LoadModule ext_filter_module modules/mod_ext_filter.so
　→外部プログラムで処理を行ってからレスポンスボディを送信しない
LoadModule mime_magic_module modules/mod_mime_magic.so
　→ユーザーから要求されたファイルの種類をファイルの内容を元に指定する
#LoadModule expires_module modules/mod_expires.so
　→期限切れ日を設定しない
LoadModule deflate_module modules/mod_deflate.so
　→レスポンスを圧縮して送信する
#LoadModule headers_module modules/mod_headers.so
　→リクエスト／レスポンスヘッダの制御・変更を行わない
#LoadModule usertrack_module modules/mod_usertrack.so
　→Cookieを使用してユーザーを追跡しない
LoadModule setenvif_module modules/mod_setenvif.so
　→リクエストに応じて、環境変数を設定する機能を提供する
LoadModule mime_module modules/mod_mime.so
　→ユーザーから要求されたファイルの種類を拡張子を元に指定する
#LoadModule dav_module modules/mod_dav.so
　→WebDav機能を提供しない
#LoadModule status_module modules/mod_status.so
　→サーバーの活動状況と性能に関する情報を提供しない
#LoadModule autoindex_module modules/mod_autoindex.so
　→DirectoryIndexディレクティブで指定されたファイルが無い場合に自動でインデックスの生成を行わない
#LoadModule info_module modules/mod_info.so
　→サーバーの設定の包括的な概観を提供しない
#LoadModule dav_fs_module modules/mod_dav_fs.so
　→サーバーファイルシステム上のリソースへのアクセスを提供しない
LoadModule vhost_alias_module modules/mod_vhost_alias.so
　→バーチャルホストのエイリアス機能を提供する
LoadModule negotiation_module modules/mod_negotiation.so
　→クライアントに合ったファイルを選択して返す機能を提供する
LoadModule dir_module modules/mod_dir.so
　→リダイレクトとディレクトリのインデックスを扱う機能を提供する
LoadModule actions_module modules/mod_actions.so
　→特定の拡張子やメソッドのリクエストに対してはCGIを実行する
LoadModule speling_module modules/mod_speling.so
　→大文字個別の区別を無くし、1文字のスペルミスは訂正する機能を提供する
#LoadModule userdir_module modules/mod_userdir.so
　→ユーザー専用ディレクトリにアクセスさせない
LoadModule alias_module modules/mod_alias.so
　→URLのリダイレクトやマッピング機能を提供する
LoadModule rewrite_module modules/mod_rewrite.so
　→リクエストURLをリアルタイムで書き換えるための機能を提供する
#LoadModule proxy_module modules/mod_proxy.so
　→プロキシ／ゲートウェイ機能を提供しない
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
　→mod_proxyの拡張機能である負荷分散機能を提供しない
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
　→mod_proxyの拡張機能であるftp接続機能を提供しない
#LoadModule proxy_http_module modules/mod_proxy_http.so
　→mod_proxyの拡張機能であるhttp接続機能を提供しない
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
　→mod_proxyの拡張機能であるHTTP CONNECTメソッドを提供しない
LoadModule cache_module modules/mod_cache.so
　→localコンテンツをキャッシュする機能を提供する
LoadModule suexec_module modules/mod_suexec.so
　→指定されたユーザーとグループでCGIを実行する機能を提供する
LoadModule disk_cache_module modules/mod_disk_cache.so
　→ディスクを使用したストレージ管理機能を提供する
LoadModule cgi_module modules/mod_cgi.so
　→CGIの実行機能を提供する
#LoadModule version_module modules/mod_version.so
　→Apacheのバージョンを識別して、特定バージョンに提供する機能を設定する機能を提供しない
</pre>
<h3>サーバー管理者の指定</h3>
<pre class="brush:bash;">
ServerAdmin root@localhost
　↓
ServerAdmin admin@domain.com
</pre>
<h3>サーバー名の指定</h3>
<pre class="brush:bash;">
ServerName www.example.com:80
　↓
ServerName www.domain.com:80
</pre>
<h3>ドキュメントルートの確認</h3>
<pre class="brush:bash;">
DocumentRoot "/var/www/html"
</pre>
<h3>ディレクトリ内のファイル表示を無効化</h3>
<pre class="brush:bash;">
&lt;Directory &quot;/var/www/html&quot;&gt;
...
    Options Indexes FollowSymLinks
　↓
    Options -Indexes FollowSymLinks
...
&lt;/Directory&gt;
</pre>
<h3>indexの指定</h3>
<pre class="brush:bash;">
DirectoryIndex index.html index.html.var
　↓
DirectoryIndex index.html index.php index.cgi index.html.var
</pre>
<h3>ログの設定：414 ERROR(Requested URI too long)を記録しない</h3>
<pre class="brush:bash;">
LogFormat &quot;%h %l %u %t \&quot;%r\&quot; %&gt;s %b \&quot;%{Referer}i\&quot; \&quot;%{User-Agent}i\&quot;&quot; combined
　↓
LogFormat &quot;%h %l %u %t \&quot;%!414r\&quot; %&gt;s %b \&quot;%{Referer}i\&quot; \&quot;%{User-Agent}i\&quot;&quot; combined
</pre>
<h3>カスタムログの設定（wormと画像のアクセスログを記録しない）</h3>
<pre class="brush:bash;">
CustomLog logs/access_log combined
　↓
SetEnvIf Request_URI &quot;cmd\.exe&quot; nolog
SetEnvIf Request_URI &quot;root\.exe&quot; nolog
SetEnvIf Request_URI &quot;Admin\.dll&quot; nolog
SetEnvIf Request_URI &quot;NULL\.IDA&quot; nolog
SetEnvIf Request_URI &quot;^/_mem_bin/&quot; nolog
SetEnvIf Request_URI &quot;^/_vti_bin/&quot; nolog
SetEnvIf Request_URI &quot;^/c/&quot; nolog
SetEnvIf Request_URI &quot;^/d/&quot; nolog
SetEnvIf Request_URI &quot;^/msadc/&quot; nolog
SetEnvIf Request_URI &quot;^/MSADC/&quot; nolog
SetEnvIf Request_URI &quot;^/scripts/&quot; nolog
SetEnvIf Request_URI &quot;^/default.ida&quot; nolog
SetEnvIf Request_URI &quot;\.(gif)|(jpg)|(png)|(ico)|(css)$&quot; nolog
SetEnvIf Remote_Addr 192.168. no_log
CustomLog logs/access_log combined env=!no_log
</pre>
<h3>エラー画面でApacheのバージョン非表示</h3>
<pre class="brush:bash;">
ServerSignature On
　↓
ServerSignature Off
</pre>
<h3>indexesがOFFなので、ファイル表示のアイコン設定をコメントアウト</h3>
<pre class="brush:bash;">
Alias /icons/ &quot;/var/www/icons/&quot;
&lt;Directory &quot;/var/www/icons&quot;&gt;
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
&lt;/Directory&gt;
　↓
#Alias /icons/ &quot;/var/www/icons/&quot;
#&lt;Directory &quot;/var/www/icons&quot;&gt;
#    Options Indexes MultiViews
#    AllowOverride None
#    Order allow,deny
#    Allow from all
#&lt;/Directory&gt;
</pre>
<h3>ScriptAliasをコメントアウト</h3>
<pre class="brush:bash;">
ScriptAlias /cgi-bin/ &quot;/var/www/cgi-bin/&quot;
&lt;Directory &quot;/var/www/cgi-bin&quot;&gt;
     AllowOverride None
     Options None
     Order allow,deny
     Allow from all
&lt;/Directory&gt;
　↓
#ScriptAlias /cgi-bin/ &quot;/var/www/cgi-bin/&quot;
#&lt;Directory &quot;/var/www/cgi-bin&quot;&gt;
#     AllowOverride None
#     Options None
#     Order allow,deny
#     Allow from all
#&lt;/Directory&gt;
</pre>
<h3>autoindexに関係する設定をコメントアウトする</h3>
<pre class="brush:bash;">
#IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable
#AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
#AddIconByType (TXT,/icons/text.gif) text/*
#AddIconByType (IMG,/icons/image2.gif) image/*
#AddIconByType (SND,/icons/sound2.gif) audio/*
#AddIconByType (VID,/icons/movie.gif) video/*
#AddIcon /icons/binary.gif .bin .exe
#AddIcon /icons/binhex.gif .hqx
#AddIcon /icons/tar.gif .tar
#AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
#AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
#AddIcon /icons/a.gif .ps .ai .eps
#AddIcon /icons/layout.gif .html .shtml .htm .pdf
#AddIcon /icons/text.gif .txt
#AddIcon /icons/c.gif .c
#AddIcon /icons/p.gif .pl .py
#AddIcon /icons/f.gif .for
#AddIcon /icons/dvi.gif .dvi
#AddIcon /icons/uuencoded.gif .uu
#AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
#AddIcon /icons/tex.gif .tex
#AddIcon /icons/bomb.gif core
#AddIcon /icons/back.gif ..
#AddIcon /icons/hand.right.gif README
#AddIcon /icons/folder.gif ^^DIRECTORY^^
#AddIcon /icons/blank.gif ^^BLANKICON^^
#DefaultIcon /icons/unknown.gif
#ReadmeName README.html
#HeaderName HEADER.html
#IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
</pre>
<h3>MIME言語タイプの適用優先順位を日本語優先にする</h3>
<pre class="brush:bash;">
LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ..
　↓
LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ..
</pre>
<h3>CGIスクリプトを有効化して拡張子.plを追加</h3>
<pre class="brush:bash;">
#AddHandler cgi-script .cgi
　↓
AddHandler cgi-script .cgi .pl
</pre>
以上で設定は終わりです。保存して終了します。
<h2>設定の確認</h2>
設定ファイルの編集が終わったらシンタックスチェックをします。
<pre class="brush:bash;">
[root@www0000xx ~]# apachectl configtest
Syntax OK
</pre>
問題は無いようです。<br>
新しい設定を反映してhttpdを再起動します。
<pre class="brush:bash;">
[root@www0000xx ~]# /etc/rc.d/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]
</pre>
<h2>iptablesの設定追加</h2>
HTTPで使う80番ポートのパケットを許可するために、iptablesに設定を追加します。<br>
iptablesに設定を追加したら、保存してiptablesを再起動します。
<pre class="brush:bash;">
[root@www0000xx ~]# iptables -A SERVICE -p tcp --dport 80 -j ACCEPT
[root@www0000xx ~]# /etc/rc.d/init.d/iptables save
iptables: ファイアウォールのルールを /etc/sysconfig/iptablesに保存中:[  OK  ] 
[root@www0000xx ~]# /etc/rc.d/init.d/iptables restart
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]
</pre>
<h2>Webブラウザで表示の確認</h2>
Webブラウザから、設定したドメインwww.domain.comへアクセスしてみます。<br>
通常、Apacheのインストール直後だとApacheのテストページが表示されるのですが、先程httpd.confの設定でテストページを表示しないように設定したので、404エラーが表示されれば、Apacheは問題なく起動しています。]]>
    </content>
</entry>

<entry>
    <title>さくらのVPS-3　iptablesを設定する </title>
    <link rel="alternate" type="text/html" href="http://www.section-9.jp/blog/bluez/2012/04/vps-3iptables.html" />
    <id>tag:www.section-9.jp,2012:/blog/bluez//4.293</id>

    <published>2012-04-29T17:35:27Z</published>
    <updated>2012-04-29T17:41:26Z</updated>

    <summary>iptables iptablesはパケットフィルタリング機能を提供するプログラ...</summary>
    <author>
        <name>bluez</name>
        
    </author>
    
        <category term="さくらVPS" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://www.section-9.jp/blog/bluez/">
        <![CDATA[<h2>iptables</h2>
iptablesはパケットフィルタリング機能を提供するプログラムで、ファイアウォールの構築などに利用できます。<br>
iptablesは非常に多機能で奥の深いプログラムなのですが、とりあえず必要最小限の設定をします。
]]>
        <![CDATA[<h2>インストールと設定の確認</h2>
まず、さくらのVPSにiptablesがインストールされている事を確認します。<br>
<pre class="brush:bash;">
[admin@www0000xx ~]$ yum list installed | grep iptables
iptables.x86_64     1.4.7-5.1.el6_2     @updates/6.2                            
iptables-ipv6.x86_64
</pre>
インストールはされています。では、設定状況を確認します。
<pre class="brush:bash;">
[admin@www0000xx ~]$ sudo iptables -L
[sudo] password for admin: 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
</pre>
何も設定されていないようです。

<h2>ポートの設定</h2>
今回は以下のポリシーで設定します。
<ul>
<li>設定が無い受信と転送は全部拒否</li>
<li>メンテナンスのしやすを考えて、TCPの新規セッション用に「SERVICE」と言うチェインを作成</li>
<li>ローカルループバックは全部許可</li>
<li>プライベートアドレスからの受信は全部拒否</li>
<li>ICMPはPINGの出入りのみ許可</li>
<li>名前解決のために、UDP Port 53の受信を許可</li>
<li>継続的なセッションを許可</li>
<li>新規セッションなのにSYNフラグの立っていないパケットは拒否</li>
<li>上記以外の新規セッションはSERVICEチェインも評価する</li>
<li>10022ポートの通信を許可</li>
</ul>
この設定では、SSH(10022)のサービスしか設定しない事になります。HTTPやFTPなどを使用する場合は、随時SERVICEチェインに追加することにします。
<br><br>
iptablesの設定は/etc/sysconfig/iptablesに対して記述しますが、初期状態ではこのファイルが存在していないので、作成します。root権限が必要な場所に保存するので、sudo viで作成します。
<pre class="brush:bash;">
[admin@www0000xx ~]$ sudo vi /etc/sysconfig/iptables
[sudo] password for admin: 
*filter
:INPUT   DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT  ACCEPT [0:0]
:SERVICE - [0:0]

-A INPUT -i lo -j ACCEPT
-A INPUT -s 10.0.0.0/8 -j DROP
-A INPUT -s 172.16.0.0/12 -j DROP
-A INPUT -s 192.168.0.0/16 -j DROP
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
-A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m state --state NEW ! --syn -j DROP
-A INPUT -p tcp -m state --state NEW -j SERVICE

-A SERVICE -p tcp --dport 10022 -j ACCEPT
COMMIT
</pre>
保存して終了したら、iptablesを再起動させて設定を反映させます。
<pre class="brush:bash;">
[admin@www0000xx ~]$ sudo /etc/rc.d/init.d/iptables restart
[sudo] password for admin: 
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]
</pre>
<h2>設定の確認</h2>
最後に設定内容を確認します。
<pre class="brush:bash;">
[admin@www0000xx ~]$ sudo iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
DROP       all  --  10.0.0.0/8           anywhere            
DROP       all  --  172.16.0.0/12        anywhere            
DROP       all  --  192.168.0.0/16       anywhere            
ACCEPT     icmp --  anywhere             anywhere            icmp echo-request 
ACCEPT     icmp --  anywhere             anywhere            icmp echo-reply 
ACCEPT     udp  --  anywhere             anywhere            udp spt:domain 
ACCEPT     tcp  --  anywhere             anywhere            state RELATED,ESTABLISHED 
DROP       tcp  --  anywhere             anywhere            state NEW tcp flags:!FIN,SYN,RST,ACK/SYN 
SERVICE    tcp  --  anywhere             anywhere            state NEW 

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain SERVICE (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:10022 
</pre>
]]>
    </content>
</entry>

</feed>

