さくら専用サーバエントリープラン@MyNETS構築ガイド(上級者向け)
注意事項 : iptablesの設定とsshのポートの変更は慎重に設定してください。
設定をミスするとサーバにアクセス出来なくなります。
CENTOS5編(エントリープラン)
エントリープランの標準設定で申し込むこと
viの編集が出来ること、rootでの編集作業・ホスト名はmail.box9.net・MyNETSはbox9.net
ipは000.00.000.000での設定の例として記載します。
sakura vpsではyumコマンドで必要なソフトをインストールしてください。
たとえばyum -y install php php-gd php-mysql httpd
※設定での動作保証はいたしません。
ご自身の責任において設定してください。
ホスト名を変更する
[root@mail ~]# vi /etc/hosts
追加
000.00.000.000 mail.box9.net mail
[root@mail ~]# vi /etc/sysconfig/network
localhost.localdomainをmail.box9.netに変更する
HOSTNAME=mail.box9.net
localhost.localdomainをmail.box9.netに変更する
[root@mail ~]# hostname mail.box9.net
サーバの再起動を依頼する。
※さくらインターネットに連絡する
sshの設定と変更
編集
[root@mail ~]# vi /etc/ssh/sshd_config
#Port 22
Port 8022
※port22は攻撃が多いための変更
変更した後はPort 22では接続できなくなります。
再起動で設定を反映する
[root@mail ~]# /etc/rc.d/init.d/sshd restart
iptablesの編集
※sshのポートを塞ぐとアクセス出来なくなりますので気をつけてください。
[root@mail ~]# vi /etc/sysconfig/iptables
# Generated by iptables-save v1.3.5 on Wed Sep 15 00:00:00 2010
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8022 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
再起動
[root@mail ~]# /etc/init.d/iptables restart
DNSの設定例:バリュードメイン
txt @ v=spf1 a mx ~all
mx mail.box9.net. 20
a mail 000.00.000.000
a * 000.00.000.000
バーチャルホストの設定
var/www/html/
└ box9.net/www ← MyNETSの設置場所
└ logs ← アクセスログとエラーログ
設定に間違えた時ようにコピーでバックアップを取っておく
[root@mail ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.orig
httpd.confを編集する。
[root@mail ~]# vi /etc/httpd/conf/httpd.conf
KeepAlive OffをOnにする
※KeepAliveについて理解しておくこと
文字化けの問題の解決
すでにコメントアウトになっているか確認する
なっていなければコメントアウトする。
#AddDefaultCharset UTF-8
CGI,SSIを許可でIndexesを削除
#Options Indexes Includes FollowSymLinks ExecCGI
Options Includes FollowSymLinks ExecCGI
#AddHandler cgi-script .cgiをコメントを消して.plを追加
AddHandler cgi-script .cgi .pl
.htaccessの許可
Allになっているか確認する
AllowOverride Noneであれば
AllowOverride All
にする
バーチャルホストの設定です。
注意: < = <
一番したに追加する
NameVirtualHost 000.00.000.000:80
<VirtualHost 000.00.000.000:80>
ServerName box9.net
ServerAlias www.box9.net
ServerAdmin admin@localhost
DocumentRoot /var/www/html/box9.net/www
ErrorLog /var/www/html/box9.net/logs/error_log
CustomLog /var/www/html/box9.net/logs/access_log combined
</VirtualHost>
再起動で設定を反映する。
[root@mail ~]# /etc/rc.d/init.d/httpd stop
[root@mail ~]# /etc/rc.d/init.d/httpd start
Postfixの設定とsendmailの停止
sendmailの停止
[root@mail ~]# /etc/rc.d/init.d/sendmail stop
[root@mail ~]# chkconfig --del sendmail
Postfixのインストール
[root@mail ~]# yum -y install postfix
mtaをPostfixに切り替え
[root@mail ~]# alternatives --config mta
/usr/sbin/sendmail.postfix ←これにするので2を選ぶ
Postfixを起動する
[root@mail ~]# /etc/rc.d/init.d/postfix start
main.cfを編集する
[root@mail ~]# vi /etc/postfix/main.cf
変更したところや確認したところ
#ホスト名
myhostname = mail.box9.net
#ドメイン
mydomain = box9.net
#設定したドメインネームで認証
myorigin = $mydomain
#メール受信の許可
inet_interfaces = all
#リレーを許可するドメインを指定
#relay_domains = $mydestinationのコメントを削除
relay_domains = $mydestination
#受信時のドメイン
#mydestination = $myhostname, localhost.$mydomain, localhostをコメントアウトで以下に変更
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
unknown_local_recipient_reject_code = 550
#メールボックス形式をMaildir形式にする
home_mailbox = Maildir/
#メールサーバーソフト名の隠蔽化
smtpd_banner = $myhostname ESMTP unknown
追加項目
#SMTP-Auth
# saslによるSMTP認証を許可
smtpd_sasl_auth_enable = yes
# ローカル認証 realm名の設定
smtpd_sasl_local_domain = $myhostname
# リレーを許可するものを設定
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
#ユーザーの存在確認をさせない
disable_vrfy_command = yes
#ホスト名を通知しない接続を拒否
smtpd_helo_required = yes
#RFC821形式以外のアドレスを拒否
strict_rfc821_envelopes = no
#MyNETSのメール投稿
virtual_alias_maps = pcre:/etc/postfix/virtual.pcre
Postfixを再起動して反映する
[root@mail ~]# /etc/rc.d/init.d/postfix restart
自動でMaildirを作成させる
[root@mail ~]# mkdir -p /etc/skel/Maildir/new
[root@mail ~]# mkdir -p /etc/skel/Maildir/cur
[root@mail ~]# mkdir -p /etc/skel/Maildir/tmp
[root@mail ~]# chmod -R 700 /etc/skel/Maildir/
SMTP-Authはすでに起動しているため確認だけする。
[root@mail ~]# chkconfig --list saslauthd
以下を確認する
saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
自動起動をせっていする
[root@mail ~]# chkconfig saslauthd on
Dovecotの設定
[root@mail ~]# vi /etc/dovecot.conf
protocols = imap imaps pop3 pop3s
はすでにコメント削除をされているため確認のみ
mail_location = に
maildir:~/Maildirを追加
コメントを外して下記のようにする。
mail_location = maildir:~/Maildir
再起動をして設定を反映する
[root@mail ~]# /etc/rc.d/init.d/dovecot restart
自動起動を設定する
[root@mail ~]# chkconfig dovecot on
メールアカウントの作成
※すでにあるadminでするなら作成しなくてもよい
メール用に新たにアカウントを用意してもいいです。
webmaiというユーザを作ってそれを使うのならadminのところがwebmailとしてください。
sshさせないアカウント作成
[root@mail ~]# useradd -s /sbin/nologin アカウント
ファイルを作成
[root@mail ~]# vi /etc/postfix/virtual.pcre
/^get\@box9\.net$/ admin
/^p[0-9]+-[0-9a-z]{12}@box9\.net$/ admin
/^t[0-9]+-[0-9a-z]{12}@box9\.net$/ admin
/^e[0-9]+-[0-9a-z]{12}@box9\.net$/ admin
/^et[0-9]+-[0-9a-z]{12}@box9\.net$/ admin
/^copic[0-9]+-[0-9]+-[0-9a-z]{12}@box9\.net$/ admin
/^b[0-9]+-[0-9a-z]{12}@box9\.net$/ admin
/^c[0-9]+-[0-9a-z]{12}@box9\.net$/ admin
/^dpic[0-9]+-[0-9]+-[0-9a-z]{12}@box9\.net$/ admin
adminをbox9-adminにすると失敗することがある。
[root@mail ~]# vi /etc/aliases
admin:"|/usr/bin/php /var/www/html/box9.net/www/bin/mail.php"
を追加する
Postfixを再起動して反映する
[root@mail ~]# /etc/rc.d/init.d/postfix restart
/var/www/html/box9.net/にMNETSを設置してwwwに
フォルダーを変更する
MySQLの起動
[root@mail ~]# service mysqld start
再起動時の自動設定
[root@mail ~]# chkconfig mysqld on
MySQLのパスワード設定
[root@mail ~]# mysql -u root
rootのパスワード設定
mysql> set password for root@localhost=password('rootパスワード');
登録済ユーザ、パスワード確認
mysql> select user,host,password from mysql.user;
mysql> exit
パスワードなしでログインできないことを確認する
[root@mail ~]# mysql -u root -h localhost
データベースの作成とユーザ作成
ログインする
[root@mail ~]# mysql -u root -pパスワード
MyNETSのデータベースbox9 を作成します。
mysql> create database box9 DEFAULT CHARACTER SET utf8;
MyNETSのユーザのbox9を作成し権限を与えます。
mysql> grant all privileges on box9.* to box9@localhost identified by 'パスワード';
mysql> exit
[root@mail ~] cd /var/www/html/box9.net/www/setup/sql/MySQL4.1/install
[root@mail ~] mysql -u box9 -p --default-character-set=utf8 box9 < install-mynets-create-mysql41.sql
[root@mail ~] mysql -u box9 -p --default-character-set=utf8 box9 < install-mynets-insert_data.sql
config.phpの設定
/var/www/html/box9.net/www/conf/config.phpを編集する
// メールサーバードメイン
// 携帯メール投稿の宛先などのドメイン名に使われる
define('MAIL_SERVER_DOMAIN', 'box9.net');
他は適切に設定してください
CRONの設定
[root@mail ~] vi /etc/crontab
# MyNETS
05 6 * * * root sh /var/www/html/box9.net/www/bin/tool_send_dairy_news.cron /var/www/html/box9.net/www/bin/ /usr/bin/php
25 6 * * * root sh /var/www/html/box9.net/www/bin/tool_send_birthday_mail.cron /var/www/html/box9.net/www/bin/ /usr/bin/php
35 6 * * * root sh /var/www/html/box9.net/www/bin/tool_send_schedule_mail.cron /var/www/html/box9.net/www/bin/ /usr/bin/php
*/20 * * * * root sh /var/www/html/box9.net/www/bin/tool_rss_cache.cron /var/www/html/box9.net/www/bin/ /usr/bin/php
再起動して設定を反映する
[root@mail ~] /etc/rc.d/init.d/crond restart
MyNETSにアクセスする
http://mynets.box9.net/?m=setup
以上で終わりです。
参考にしたサイト
Hidde’s Tipsさん
http://d.hatena.ne.jp/hidde/20080507/1210140962
参考にさせていただいたサイトに感謝いたします。
おまけ:バックアップシェル
#!/bin/sh
#MyNETS初心者ガイド
#さくら用エントリー
#保存数
keepday=1
#ホーム
home_file=/home/アカウント
#保存先
backup_file=$home_file/バックアップフォルダー
#DBアカウント
db_user=DBアカウント
#DBホスト
db_host=localhost
#DB名前
db_name=DB名前
#DBパスワード
db_pass=DBパスワード
#ここまで設定
today=`date +'%y%m%d'`
db_backup=mysql.$today.gz
de_backup=$backup_file/mysql.`date --date "$keepday days ago" +"%y%m%d"`.gz
cd $backup_file
mysqldump --quick --host=$db_host --user=$db_user --password=$db_pass $db_name | gzip > $backup_file/$db_backup
if [ $? -eq 0 ]; then
echo "backup!!okok!!"
rm -f $de_backup
exit 0
fi
xcacheをいれて高速にする(サイトが遅いと感じたら)
現在の最新版は1.2.2ですがサイトに行って確認しておくこと最新版が出ていればそちらを使うこと
phpizeをインストール
[root@mail ~]# yum -y install php-devel
[root@mail ~]# cd /usr/local/src/
[root@mail ~]# wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
[root@mail ~]# tar xzvf xcache-1.2.2.tar.gz
[root@mail ~]# cd xcache-1.2.2
[root@mail ~]# phpize
[root@mail ~]# ./configure --enable-xcache --enable-xcache-coverager --with-php-config=/usr/bin/php-config
[root@mail ~]# make
[root@mail ~]# make test
[root@mail ~]# make install
エクステンション用のパスが表示されるのでメモ
/usr/lib/php/modules/
コピーと編集
[root@mail ~]# cp xcache.ini /etc/php.d/xcache.ini
[root@mail ~]# vi /etc/php.d/xcache.ini
#zend_extension = /usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.soを先ほどメモした場所に修正する。
zend_extension = /usr/lib/php/modules/xcache.so
xcache.size = 32M
xcache.var_size = 16M
#xcache.mmap_path = "/dev/zero"を
xcache.mmap_path = "/tmp/xcache"
xcache.coveragedump_directory = "/tmp/xcache_cov"
httpdを再起動して設定を反映
[root@mail ~]# /etc/rc.d/init.d/httpd restart
補足
[root@mail ~]# /etc/rc.d/init.d/postfix restart
※何故かエラーが出ていたので・・
/etc/rc.d/init.d/postfix: line 26: [: =: unary operator expected
[root@mail ~]# vi /etc/rc.d/init.d/postfix
修正前
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
修正後
# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 0
再起動
[root@mail ~]# /etc/rc.d/init.d/postfix restart
補足2
アクセスログがたまったのでcronでローテーション
#!/bin/sh
/bin/rm /var/www/html/box9.net/logs/access_log4.gz
/bin/mv /var/www/html/box9.net/logs/access_log3.gz /var/www/html/box9.net/logs/access_log4.gz
/bin/mv /var/www/html/box9.net/logs/access_log2.gz /var/www/html/box9.net/logs/access_log3.gz
/bin/mv /var/www/html/box9.net/logs/access_log1.gz /var/www/html/box9.net/logs/access_log2.gz
/bin/gzip -c /var/www/html/box9.net/logs/access_log >> /var/www/html/box9.net/logs/access_log1.gz
/bin/cp /dev/null /var/www/html/box9.net/logs/access_log
補足3(MYSQLの基本的な操作)
MyNETSのデータベースを作成
mysql> create database データベース名 DEFAULT CHARACTER SET utf8;
MyNETSのユーザを作成し権限
mysql> grant all privileges on ユーザ名.* to ユーザ名@localhost identified by 'パスワード';
テーブル削除
mysql> drop table データベース名;
テーブルの確認
mysql> show tables;
データベースの削除
mysql> drop database データベース名;
データベースの確認
mysql> show databases;
ユーザから全てのデータベースへのアクセス権限を剥奪
mysql> revoke all privileges on *.* from ユーザ名@localhost;
ユーザ削除
mysql> delete from mysql.user where user='ユーザ名' and host='localhost';
ユーザの確認
mysql> select user from mysql.user where user='ユーザ名';
ユーザの削除をMySQLサーバーへ反映
mysql> flush privileges;
ユーザの確認
select host, user, password from mysql.user;