「過去ログ/さくらVPS導入記」の版間の差分
Ippei Suzuki (トーク | 投稿記録) |
Ippei Suzuki (トーク | 投稿記録) 編集の要約なし |
||
| 1行目: | 1行目: | ||
'''※この記事は [[過去ログ]] に含まれている記事です''' | '''※この記事は [[過去ログ]] に含まれている記事です''' | ||
== 目的 == | == 目的 == | ||
VPSを利用したサーバ構築の練習。 | VPSを利用したサーバ構築の練習。 | ||
| 453行目: | 453行目: | ||
今のところ、backendサーバを再起動することで対処している。 | 今のところ、backendサーバを再起動することで対処している。 | ||
[[Category:過去ログ]] | |||
2019年5月24日 (金) 11:04時点における最新版
※この記事は 過去ログ に含まれている記事です
目的
VPSを利用したサーバ構築の練習。 共用サーバから移行できたらいいなとも。
短期的な目標
- ほぼ休眠ドメインである「switchover.info」をここで運用する。
- Movable Type 5をインストールできる環境を整える
中期的な目標
- 1ni.coをさくらVPSにて運用
- 1ni.coの運用が順調ならもう1契約して、nplllを移行
長期的な目標
- サービス2サーバ、バックグランド用サーバの3サーバー体制
- 本当はMySQLをサーバとして独立させたいけど、その辺はコストの問題
手順
申し込み
- 必要な情報を入力(要クレジットカード情報)
- すぐに「お申込受付完了のお知らせ」というメールが来て受け付け完了
その間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に。
サーバ起動時に起動するように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
以下を参考に。
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サーバを再起動することで対処している。