過去ログ/さくらVPS導入記のソースを表示
←
過去ログ/さくらVPS導入記
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''※この記事は [[過去ログ]] に含まれている記事です''' == 目的 == VPSを利用したサーバ構築の練習。 共用サーバから移行できたらいいなとも。 === 短期的な目標 === * ほぼ休眠ドメインである「switchover.info」をここで運用する。 * Movable Type 5をインストールできる環境を整える === 中期的な目標 === * 1ni.coをさくらVPSにて運用 * 1ni.coの運用が順調ならもう1契約して、nplllを移行 === 長期的な目標 === * サービス2サーバ、バックグランド用サーバの3サーバー体制 ** 本当はMySQLをサーバとして独立させたいけど、その辺はコストの問題 == 手順 == === 申し込み === [http://vps.sakura.ad.jp/ VPS(仮想専用サーバ)のさくらインターネット] * 必要な情報を入力(要クレジットカード情報) * すぐに「お申込受付完了のお知らせ」というメールが来て受け付け完了 その間7分くらい。ほぼ待ち時間無し。 === サーバ設定 === サーバ1 IP: 49.212.36.180 pass: [may] サーバ2 IP: 49.212.39.68 pass: [may] ==== ユーザーを設定する ==== 以下のサイトを参考にユーザーを設定し、ssh接続する [http://suin.asia/2010/10/11/sakura_vps_ssh さくらVPS+CentOS:SSHの設定 | Suinasia] [http://tanaka.sakura.ad.jp/archives/001061.html 「さくらの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 ==== 秘密鍵/公開鍵の設定 ==== この辺りを参考に。 [http://www.studio-kingdom.com/?p=486 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に。 [http://wota.jp/ac/?date=20061011#p06 ヽ( ・∀・)ノくまくまー(2006-10-11)] サーバ起動時に起動するようにchkconfigを変更。 sbin/chkconfig mysqld on ==== PHP ==== yumだと5.2系になるが、ここは5.3系を入れる。 [http://d.hatena.ne.jp/sotarok/20100717/modern_phpenv モダンな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を入れて設定する。 [http://akibe.com/2010/09/centos-setup-6-ftp/ AKIBE - さくらのVPS CentOSでサーバ構築 6 – FTP] アクセスユーザーは「ftpuser」 ==== Subversion ==== yum経由で1.6.11が入っているのでそれを使用。 ユーザーのパーミッションで嵌るが、ユーザーをapacheグループに入れることで解決。 サーバ内での設定はここを参考に。 [http://akabeko.me/blog/2010/09/%E3%81%95%E3%81%8F%E3%82%89%E3%81%AEvps-%E3%82%92%E4%BD%BF%E3%81%84%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B-8/ さくらの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 ==== 以下を参考に。 [http://d.hatena.ne.jp/mizincogrammer/20101118/1290059754 さくら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への設定 ==== この辺りを参考に。 [http://pc.rouxril.com/mtc/2009/09/dns.php ムームー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サーバを再起動することで対処している。
過去ログ/さくらVPS導入記
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報