インターネット上のサーバに求められる要件は以下のようなもの。
- 適切なDNS登録
- 時刻合わせ
- 適切なメール配送設定
- セキュリティ対策
- 適切なリソース監視
- バックアップ
メール配送設定のため postfix を設定する。
方針:
手軽に apt でインストールする。
サーバからメールを出した際に適切なドメインが付与されるようにする。
そのドメイン宛のメールは自前で受信できるようにする。
メールボックスはMaildir形式にする。
まずはインストール。apt でさくっと。
sudo apt-get install postfix
インストール時に聞かれることは後でも設定できるけど、
ここで設定しちゃうほうが楽。
Postfix Configuration では以下を選択。
自前でメールのやりとりをするようにする。
Internet Site
System mail name では以下を入力
kuro.pochi.cc
以上でインストールは完了。
設定ファイルは、/etc/postfix 以下にできており、
このままでも、特に問題はないようになっている。
起動も完了している。
素敵。
外部から、インターネット接続するために、ufw で、smtp ポートも開放。
sudo ufw allow Postfix
確認用に、mailx をインストール。
sudo apt-get install bsd-mailx
mailx コマンドで、メールを送信。
mailx 適当な@アドレス
無事にメール送信完了。
ただ、さくらの VPS の使い始めだと、OPS25B設定のため、
外向きにメールが送れないので注意。
正式に契約すれば、
5分ぐらい悩んだ。
Q:「さくらのVPS」のお試し期間中に制限はありますか?
http://sakura.cb-faq.com/faq/public/app/servlet/qadoc?QID=001401-3
- OP25B設定 メール送信用のポート番号となる外向きの
25番ポートを閉じた設定でのご提供です。
正式に申しこんで、1時間ほどで、無事に25番が開放。
メール送信がちゃんとできることを確認。
次はメールが受信できることの確認。
DNS に以下のレコードを登録。
kuro.pochi.cc. IN MX 10 kuro.pochi.cc.
先程外に送ったメールに返信。
サーバ上で mail コマンドで受信を確認。
Maildir の設定は、postconf コマンドで投入。
sudo postconf -e "home_mailbox = Maildir/"
sudo postconf -e "mailbox_command ="
念のため /etc/postfix/main.cf に書きこまれていることを確認。
再度外部から送信テスト。
~/Maildir/new/ 以下にメールが配送されたことを確認。
基本設定は以上。
ちなみに、こういう設定をするにあたって、ググった情報は、
あまりあてにならないことが多い。
なので、この情報も参考程度に思ってね。
一番正しい情報は、ソースコードなんだけど読むのは無茶。
その代わり、かなり信頼できる情報は、配布元からの情報で、
今回のような場合は、以下のファイルをまず読むのが正解。
/usr/share/doc/postfix/README.Debian
これを読んで、ふむふむ、と思った後に、Debian の Wiki
なんかを見て、さらに勉強すると吉。
Maildir の設定は Debian のWikiに書いてある情報で行なっている。
Postfix - Debian Wiki
http://wiki.debian.org/Postfix#Maildir
http://www.omgubuntu.co.uk/2012/05/skype-release-minor-bugfix-update-for-linux-client/
via ekly Topics UWN#265
http://gihyo.jp/admin/clip/01/ubuntu-topics/201205/18
お!!
配布サイトを見に行ったら、64bit版のSkypeが出てる!!。
http://www.skype.com/intl/ja/get-skype/on-your-computer/linux/
今までは 32bit版のSkypeを使うしかなくて、64bit環境に入れるのが面倒だったのよね。
Ubuntu 11.10 amd64 で Skype を使う方法 --> [2011-10-19-4]
でも残念なことに、deb パッケージは、まだ 2.2.0.35 と古いまま。
でもまあ、入れちゃえ。
これで、突然落ちたり、CPUを100%使いきっちゃったまま反応がなくなったり、
ってことがなくなると良いな。
sudo apt-get remove skype:i386
として、i386版を消してからインストール、と。
http://httpd.apache.org/docs/2.2/ja/mod/mod_cgid.html
CGI用の外部デーモンを使うようになったのね。
使い方は変わらないのでユーザーレベルでは意識する必要はない。
ちなみに Ubuntu 12.04 の apache では標準で mod_cgid が
読みこまれるようになっている。
(/etc/apache2/mods-enabled 以下に cgid.conf cgid.load がある)
さくらの VPS なんかだとまだ 12.04 は提供されてない。
でも do-release-upgrade でアップグレードは可能。
sudo do-release-upgrade -d
いろいろ聞かれるけど、とりあえず yes でOK。
grub は一番上のを選んでインストールしとく。
ただ 12.04 では、DNSでの名前解決の仕方が若干変更になっている。
/etc/resolv.conf ではなく
/etc/resolvconf/resolv.conf.d/base を参照するようになってる。
元の /etc/resolv.conf は、
/etc/resolvconf/resolv.conf.d/original にバックアップされるので
original を base にコピー
sudo cp /etc/resolvconf/resolv.conf.d/original /etc/resolvconf/resolv.conf.d/base
その上で resolvconf -u でアップデートをすると名前が引けるようになる。
sudo resolvconf -u
aptでインストール
sudo apt-get install ntp
必要なら設定を修正。
sudo vi /etc/ntp.conf
そのままでも動くけど、できれば近くのサーバを指定したほうが良いと思う。
たとえば、さくらのVPSなんかで使うなら、
ntp1.sakura.ad.jp(210.188.224.14)を使うほうが良いかと。
さくらのFAQ: NTPサーバは用意されているのですか?
http://sakura.cb-faq.com/faq/public/app/servlet/qadoc?QID=000207
/etc/init.d 以下を見ると、そのままでも自動起動の設定になってるので、
update-rc.d コマンドを使う必要はなし。
ファイアウォール(ufw)にも穴を開ける。
sudo ufw allow ntp
sudo ufw status
ntpq -p コマンドで動作確認。
各サーバの前に * が付けば同期できている。
起動直後は付いてないけど、しばらくすれば付くはず。
iptablesを素で使うほうが馴れてるんだけど、
Ubuntu流では ufw を使うものらしい。
ufw を使うと、簡単にファイアウォールの設定ができる。
具体的には iptableのルールをそれっぽく作ってくれて便利。
IPv6のルールも作ってくれるのがおいしいところ。
ちなみに iptables を素で使うやり方は以下。
Ubuntu で iptables を起動時に立ち上げる --> [2010-10-04-2]
下準備として sshd のポートは変更しておきたいので、
sshd の設定を変更。
sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.dist
sudo vi /etc/ssh/sshd_config
変更点。
diff -u /etc/ssh/sshd_config.dist /etc/ssh/sshd_config
...
-Port 22
+Port <変更したポート番号>
sshd再起動。
sudo vi /etc/init.d/ssh restart
接続確認。
ssh -p <変更したポート番号> ホスト名
ufwのアプリケーション設定ファイルにも、
ポートを変更したsshdサーバの設定を追加。
cd /etc/ufw/applications.d
sudo cp openssh-server openssh-server-another
sudo vi openssh-server-another
変更点は以下。
diff -u openssh-server openssh-server-another
-[OpenSSH]
+[OpenSSH Another]
..
-ports=22/tcp
+ports=<変更したポート番号>/tcp
sshに関する下準備終了。
いよいよ、ufwの設定。
まずは現状確認。
sudo ufw status
ufwの有効化。
sudo ufw enable
ステータスの確認。
sudo ufw status
その時の iptables の確認。
ちゃんとそれっぽいベースルールができている。
icmp回りのルールもしっかりできている。
sudo iptables -L
いよいよ、ルール投入。
ssh と apache のポートだけ空けてる。
Apache Fulle を指定すると 80番と443番が開く。
sshの接続には limit も追加。
sudo ufw default deny && sudo ufw allow 'OpenSSH Another'
sudo ufw allow 'Apache Full'
sudo ufw limit 'OpenSSH Another'
最初の1行は分けても良いけど、ssh接続して設定してる場合では、
SSH接続してる足場がなくなっちゃうので && で繋げてる。
ステータスを確認。
sudo ufw status
iptables のルールを見ると、ちゃんと limit もかかっている。
便利で簡単。
とりあえずやったこと。
apache2 をインストール
sudo apt-get install apache2
基本設定の修正
cd /etc/apache2/
sudo cp -p apache2.conf apache2.conf.dist
sudo vi apache2.conf
diff -u apache2.conf.dist apache2.conf は以下。
-KeepAlive On
+KeepAlive Off
...
<IfModule mpm_prefork_module>
...
- MaxClients 150
+ MaxClients 20
...
- MaxRequestsPerChild 0
+ MaxRequestsPerChild 100
</IfModule>
...
アクセスが膨大になったときに困らないように設定。
KeepAlive は On のほうがパフォーマンス的には良いけど、
DDoSっぽいアクセスがあると酷いことになるので。
その対策。
userdirモジュールをロードするようにする。
cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/userdir.load .
でも userdir の conf は sites-enabled 以下のファイルに書く。
なので userdir.conf はリンクしない。
サイトの本体は、vhost に持たせるようにする。
sudo mkdir /var/vhost
sudo mkdir /var/vhost/www.pochi.cc
sudo mkdir /var/vhost/www.pochi.cc/htdocs
sudo mkdir /var/vhost/www.pochi.cc/logs
cd /etc/apache2/sites-enabled/
sudo cp 000-default 001-www.pochi.cc
sudo vi 001-www.pochi.cc
diff -u 000-default 001-www.pochi.cc ↓
<VirtualHost *:80>
+ ServerName www.pochi.cc
- ServerAdmin webmaster@localhost
+ ServerAdmin *****@pochi.cc
- DocumentRoot /var/www
+ DocumentRoot /var/vhost/www.pochi.cc/htdocs
- <Directory /var/www/>
+ <Directory /var/vhost/www.pochi.cc/htdocs/>
...
+ UserDir public_html
+ UserDir disabled root
+
+ <Directory /home/*/public_html>
+ AllowOverride FileInfo AuthConfig Limit Indexes Options
+ Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
+ <Limit GET POST OPTIONS PROPFIND>
+ Order allow,deny
+ Allow from all
+ </Limit>
+ <LimitExcept GET POST OPTIONS PROPFIND>
+ Order deny,allow
+ Deny from all
+ </LimitExcept>
+ </Directory>
- ErrorLog ${APACHE_LOG_DIR}/error.log
+ ErrorLog "|/usr/sbin/rotatelogs /var/vhost/www.pochi.cc/logs/error.log.%Y%m%d 86400 540"
- CustomLog ${APACHE_LOG_DIR}/access.log combined
+ CustomLog "|/usr/sbin/rotatelogs /var/vhost/www.pochi.cc/logs/access.log.%Y%m%d 86400 540" combined
https://wiki.ubuntulinux.jp/UbuntuTips/DedicatedServer/ApacheVirtualHost
/etc/apache2/sites-available 以下にファイルを追加すればOK。
1. 32bit版をインストールする。64bit版は使っちゃ駄目。
sudo dpkg -i skype-ubuntu_2.2.0.35-1_i386.deb
2. 依存するパッケージを入れる
sudo apt-get -f install
若干はまったあるよ。ふぅ。
https://answers.launchpad.net/emgd/+faq/1450
http://ecl.info.kindai.ac.jp/~typewriter/blog/?date=20110519
TPM module をoff
やってみたけどうまくいかな。
64bit環境だとそもそも駄目なのかもなあ。