過去ログ/さくらVPS導入記

提供: NOBODY:PLACE Wiki
2019年5月24日 (金) 11:04時点におけるIppei Suzuki (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動
※この記事は 過去ログ に含まれている記事です

目的

VPSを利用したサーバ構築の練習。 共用サーバから移行できたらいいなとも。

短期的な目標

  • ほぼ休眠ドメインである「switchover.info」をここで運用する。
  • Movable Type 5をインストールできる環境を整える

中期的な目標

  • 1ni.coをさくらVPSにて運用
  • 1ni.coの運用が順調ならもう1契約して、nplllを移行

長期的な目標

  • サービス2サーバ、バックグランド用サーバの3サーバー体制
    • 本当はMySQLをサーバとして独立させたいけど、その辺はコストの問題


手順

申し込み

VPS(仮想専用サーバ)のさくらインターネット

  • 必要な情報を入力(要クレジットカード情報)
  • すぐに「お申込受付完了のお知らせ」というメールが来て受け付け完了

その間7分くらい。ほぼ待ち時間無し。

サーバ設定

サーバ1

IP: 49.212.36.180
pass: [may]

サーバ2

IP: 49.212.39.68
pass: [may]

ユーザーを設定する

以下のサイトを参考にユーザーを設定し、ssh接続する

さくらVPS+CentOS:SSHの設定 | Suinasia

「さくらのVPS」を使ってみる - さくらインターネット創業日記

adduser ippei ← ippeiというユーザーを追加する
passwd ippei ← ippeiというユーザーのパスワードを設定する

パスワードはあまりに単純すぎると、

it is based on a dictionary word

と怒られてしまうけど設定自体は出来る。どうせあとで公開鍵のみにするし問題ない。


ユーザーの権限を追加

まず、wheelグループに追加する

usermod -G wheel ippei

次にsudoの使用を許可する。

visudo

としてsudoの設定ファイルを開いた上で、以下の通りに変更する。

# %wheel  ALL=(ALL)       ALL
↓
%wheel  ALL=(ALL)       ALL


秘密鍵/公開鍵の設定

この辺りを参考に。

STUDIO KINGDOM - さくらVPSのsshによる鍵認証の設定

authorize_keysに秘密鍵をコピーするとき、なぜか先頭のsが欠けて「sh_rsa」という書き出しになってしまい、認証が出来なくて嵌った(Poderosaのコピーの問題のような気がする)きちんと設定したら問題なかった。


インストール/設定

Apache

yum -y install httpd

問題なし。

サーバ起動時に起動するようにchkconfigを変更。

sbin/chkconfig httpd on


MySQL

yum -y install mysql-server

5.1.56が入った。

/etc/my.cnfに設定を追加して文字コードをUTF-8に。

ヽ( ・∀・)ノくまくまー(2006-10-11)

サーバ起動時に起動するようにchkconfigを変更。

sbin/chkconfig mysqld on


PHP

yumだと5.2系になるが、ここは5.3系を入れる。

モダンなPHPの開発環境の構築方法 - 肉とご飯と甘いもの @ sotarok

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
vi /etc/yum.repos.d/remi.repo
yum -y install php php-devel php-pear php-mbstring php-gd php-mysql

5.3.6が入った。


ここまでで、メモリ使用量は215.7MB。


FTP

vsftpdを入れて設定する。

AKIBE - さくらのVPS CentOSでサーバ構築 6 – FTP

アクセスユーザーは「ftpuser」

Subversion

yum経由で1.6.11が入っているのでそれを使用。

ユーザーのパーミッションで嵌るが、ユーザーをapacheグループに入れることで解決。

サーバ内での設定はここを参考に。

さくらのVPS を使いはじめる 8 – Redmine と Subversion | アカベコマイリ

Symfony

PEARからさくっと。

pear channel-discover pear.symfony-project.com
pear install symfony/symfony

1.4.11が入った。

Perl

元から入っているのでそれを使う。

バージョンは5.8.8。


Movable Type5

以下を参考に。

さくらVPSでMTOS5を動かすまで - みじんこ日記

CGIの実行に関する設定が必要。

httpd.confでコメントアウトを解除

AddHandler cgi-script .cgi

httpd.confのDirectoryに追加

Options ExecCGI

このままでもインストール可能だけど、不足しているライブラリを足す。

yum install perl-Crypt-DSA
yum install perl-GD
yum install perl-Archive-Tar
yum install perl-Mail-Sendmail
yum install ImageMagick-perl
yum install perl-XML-Parser
yum install perl-XML-Dumper

あとは適当に進めればインストールできる。


フレッシュリーダー

適当な場所にファイルをダウンロードし解凍。

cd ~/src
wget http://www.freshreader.com/ver2/archive/sffr20lin64_ja.tar.gz
tar zxvf sffr20lin64_ja.tar.gz

ディレクトリ移動

mv freshreader /var/web/www/is1977.com

データベースを旧ディレクトリからrsyncを使ってコピー

rsync -auz --delete --exclude=".svn" -e "ssh -p 4031" /home/nplll/www/nplll.com/freshreader/db ippei@49.212.39.68:/var/web/www/is1977.com/freshreader

ionCubeではまったけど、Xdebugとのロード順が問題だった。先にionCube。


ドメインの設定

ムームーDNSへの設定

この辺りを参考に。

ムームーDNS+さくらのサーバーでドメイン設定 | MTカスタマイズ記録

これはそんなに難しくない。必要なのはダウンタイムと覚悟だけ。

Apacheの設定

これで嵌った。

基本的な部分はここを参考に。

[ ブログみたいなもの:http://www4311u.sakura.ne.jp/blog/entry/128/ さくらのVPSにドメイン設定した ]

NameVirtualHost 49.212.36.180:80
<VirtualHost 49.212.36.180:80>
DocumentRoot /home/ippei/symfony/www/switchover.info/default
ServerName www.switchover.info
</VirtualHost>

これで設定はOKのはずだけどアクセスすると403が出る。理由は、Apacheのユーザー/グループとアクセス先のファイルの所有者が違うのが原因。

Apacheの設定

User apache
Group apache

ファイルの所有者

ippei

Apacheの設定を変更し、

User ippei
Group ippei

としてやることで直った。

なお、このままだとIPアドレスでアクセスしたときもこのディレクトリにアクセスしてしまうので、デフォルトの設定を追加しておく。

NameVirtualHost 49.212.36.180:80
<VirtualHost 49.212.36.180:80>
DocumentRoot /home/ippei/symfony/www/switchover.info/default
ServerName www.switchover.info
</VirtualHost>
<VirtualHost 49.212.36.180:80>
</VirtualHost>

これで、http://www28142u.sakura.ne.jp/ のアクセス先はデフォルトのDocumentRootになる。

マウント

マウント

sshfs -p 4031 ippei@49.212.36.180:/web/www /mnt/vps1

ただしこれだと、MovableTypeの書き込みでエラーが出た。

この解決のため、オプションでrenameを可に。

sshfs -p 4031 ippei@49.212.36.180:/web/www /mnt/vps1 -o workaround=rename

これで問題なく再構築できる。

アンマウント

fusermount -u /mnt/vps1

MovableTypeの設定

シンボリックリンクを貼って対応

/web/www/1ni.co
↓
/web/www/is1977.com/vps1/1ni.co

サーバを再起動したときは

サーバを再起動した時に行うこと を参照

iptablesの設定

iptables-init.sh

#!/bin/sh

iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#---------------------------------------------------------------------------
# コネクション済のパケットを通過させる
#---------------------------------------------------------------------------
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#---------------------------------------------------------------------------
# pingに応答させる。pingに応答させないならコメントアウト
#---------------------------------------------------------------------------
iptables -A INPUT -p icmp -j ACCEPT

#---------------------------------------------------------------------------
# ローカルネットワークからの接続を許可する
#---------------------------------------------------------------------------
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -s 192.168.0.0/16 -j ACCEPT
iptables -A INPUT -p udp -s 192.168.0.0/16 -j ACCEPT

#---------------------------------------------------------------------------
# 他の所有サーバや決まった出先など、
# 特別に許可するネットワークをIPで指定する
#---------------------------------------------------------------------------
#iptables -A INPUT -p tcp -s 111.222.xxx.xxx -j ACCEPT

#---------------------------------------------------------------------------
# 過去にアタックしてきた等、既知の危険なホストを拒否する
#---------------------------------------------------------------------------
# 2009/02/07 DNS attack
iptables -A INPUT -s 89.149.221.182 -j DROP
# 2009/02/21 DNS attack
iptables -A INPUT -s 62.109.4.89 -j DROP

#---------------------------------------------------------------------------
# 外向きに公開するサービスのポートを空ける
# ここでは pop や ssh などのパスワード付サービスは開けない
#---------------------------------------------------------------------------
iptables -A INPUT -p udp --dport domain -j ACCEPT
iptables -A INPUT -p udp --dport ntp -j ACCEPT
iptables -A INPUT -p tcp --dport http -j ACCEPT
iptables -A INPUT -p tcp --dport https -j ACCEPT
iptables -A INPUT -p tcp --dport smtp -j ACCEPT
iptables -A INPUT -p tcp --dport ftp -j ACCEPT
iptables -A INPUT -p tcp --dport submission -j ACCEPT

#---------------------------------------------------------------------------
# パスワード付サービスをアクセス回数制限付で空ける
# 以下は各IPごとに1時間に30回のアクセス制限
# (例)5/m:1分5回まで、10/h:1時間10回まで、30/d:1日30回まで
#---------------------------------------------------------------------------
iptables -A INPUT -p tcp --dport 4031  -m hashlimit --hashlimit-name ssh --hashlimit 30/h --hashlimit-mode srcport --hashlimit-burst 10 -j ACCEPT

設定反映、保存

# sh iptables-init.sh
# service iptables save




問題の解決など

Apacheの設定

.htaccess

デフォルトでは「AllowOverride None」となっていて.htaccessが使えない。

重要な設定はhttpd.confに書く、というのも大事ではあるのだけど、.htaccessが使えないのはそれはそれで不便なので使えるようにしておく。

AllowOverride None
 ↓
AllowOverride All


PHPの設定

date.timezone

Symfonyで次のエラーが出た。

PHP Warning:  date(): It is not safe to rely on the system's timezone settings. You are == required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /usr/share/pear/symfony/config/sfRootConfigHandler.class.php on line ==91

文字通り、php.iniで、date.timezoneをAsia/Tokyoに設定してやれば解決。

それでも解決しない場合には明示的に設定。

date_default_timezone_set('Asia/Tokyo');

PEAR

インストールはsudoで。

sudo pear install HTTP_Client

Xdebugで表組みが表示されない

エラーは表示されるけど表組みが崩れて表示されてしまう。そんなときは、php.iniのhtml_errorsをチェック。 デフォルトではOffになっているのでこれをOnに変更。

html_errors = Off
 ↓
html_errors = On


Eclipse

VPS関係ないけど。

継承の補完

継承を辿れなくなっていてなんだなんだと思ってあれこれやってみたのだけど、結局、

プロジェクトを右クリック → 構成 → Add PHP Support

で直った。


MySQL

phpMyAdminをインストール

cd /var/web/is1977.com/admin
wget http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.3.10/phpMyAdmin-3.3.10-all-languages.tar.gz
tar zxvf phpMyAdmin-3.3.10-all-languages.tar.gz
rm phpMyAdmin-3.3.10-all-languages.tar.gz
mv phpMyAdmin-3.3.10-all-languages phpMyAdmin


ログインできない

パスワードの設定を、アクセスされる場所に応じてきちんと設定しなくてはいけない。

例えば下記のようになっている場合、

-% ippei -localhost ippei -www28142u.sakura.ne.jp ippei

それぞれに対してパスワードを設定する必要がある。


再起動

MySQLの再起動はあんまりおいそれとやるものではないけど、いざやってみたら問題は特に起きなかった。

なお、/etc/init.d/mysqldには以下のコマンドがあるけど実はそんなに種類がない。

# /etc/init.d/mysqld
Usage: /etc/init.d/mysqld {start|stop|status|restart|condrestart|try-restart|reload|force-reload|startsos}

-stat -stop -status - ステータスの確認 -restart - 起動していなくてもstartする -condrestart - 起動している場合のみrestart -try-restart - condrestartと同じ -reload - 設定ファイルの再読み込み -force-reload - restartと同じ -startsos - 「--skip-grant-tables」「--skip-networking」を付けて起動する

startsosのオプションの説明は以下の通り -「--skip-grant-tables」 --どんなユーザでも接続可能な状態で起動 -「--skip-networking」 --ローカル接続のみ可能な状態で起動

サーバのレスポンスが悪いまたは停止している場合

2013年10月頃から頻発している問題。基本的にはバッチ処理のいずれかがロックすることで起きているようなのだけど、原因は特定出来ていない。

今のところ、backendサーバを再起動することで対処している。