さくら専用サーバエントリープラン@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;