#contents *2012/04 [#yb2216ef] さくらのVPS512から1Gへ移行。 **スケジュール [#od6163e2] -2012/04/04 apacheコンテンツ移行。DBインポート完了。設定まだ。wiki.rutake.com移行完了 -2012/04/05 DB設定完了。cakephp,blog.rutake.com移行完了 -2012/04/09 SVN移行完了。SSLはIP指定をしているのでそこを変えないといけなかった。 -2012/04/11 Cronジョブ移行。バックアップでDBパスワードが変わっていたためそれなりにシェルを変更 **トラブル [#rfb3a05e] -PostgreSQLのEUC_JPのDBを作成するときにそのままだとエラーが出るようになった。-T template1で回避 -PostgreSQLの仕様変更により、date型をsubstrする場合は明示的にtext型にする必要が生じた。substr(userdate::text,4,3) -MySQLの全部のデータを移行したが、ユーザ認証のみできない。コマンドラインから権限変更もできない状態だったので、phpMyAdminから該当ユーザ削除→追加で復旧。後日flush privilegesでOKということが判明 *2013/07 自宅内サーバー移行 [#r60f5665] 一か月かけて準備。普段からrsyncでデータの同期はとっていた。 **トラブル [#x95ab77f] IP変えて再起動したら反応せず。コンソールから復旧させたが、原因不明だった。 ファイヤーウォールでSquidのポートを通していなかった。こちら設定漏れが多いので注意。Sambaのユーザー移行漏れ! *2013/12 さくらVPS再構築 [#z9c8448e] **下準備 [#j9750ef5] まずは、それほどアクセスのないページや自分専用コンテンツなどを自作サーバーに移行する。基本的にhttpd.confとssl.confを持ってきて、SVNのアクセス制限元を変更するぐらいで動いた。ssl.conf持ってこないとSSLに強制接続になるので今後の課題。 **移行対象 [#g835d28e] +tools.rutake.com以下のアプリ +wiki.rutake.com **要塞化 [#sa5fcb6d] -SSHDのアクセス元制限。ポートを閉じる。 **tools.rutake.comのpostgres移行 [#c056dfdb] +postgres自動起動の設定 +DBインポート(DB作成必要) +PHPツール移植(ツールは問題なしだが、DB接続で下記問題発覚) -トラブル発生 psql: FATAL: Ident authentication failed for user "postgres" SQLSTATE[08006] [7] FATAL: Ident authentication failed for user "postgres" -pg_hda.confを下記のように編集し再起動。ローカルからのUNIX接続をOKにした。 # "local" is for Unix domain socket connections only local all all trust -PHPからの接続は元の設定をコメントアウトし、パスワード認証をかけるようにした。 #host all all 127.0.0.1/32 ident sameuser host all all 127.0.0.1/32 md5 -12/4 toolsのpostgres部分移行完了(一部svn登録モレモジュールがあり消滅・・・) -CakePHPをTools配下へ移植 2.4にしてみた。いつものようにhttpd.confの設定が必要。 appのみSVNからコピーして無事接続成功 DB単位でエクスポート mysqldump -u root -p MYDATABASE > /var/tmp/MYDATABASEdmp.sql 移行元のDBを消す。 [root@epox cake2.4]# mysqladmin -u root -p drop MYDATABASE 空のDBを作成 mysql> create database MYDATABASE default charset utf8; インポート mysql -u root -p MYDATABASE < MYDATABASEdmp.sql -12/5 cakephpのツールを移行完了。残る大物はblogのみ -12/7 バックアップを実施だが、mysqlがパスワードなしでバックアップできている理由が不明。コマンドラインにもろ記載が後日判明 -12/30 blogの移行テスト。DB移動とblog以下一括移動が一番楽とのことでそれで実施。コンテンツ領域20MとDBが2M 目的のディレクトリの一階層上に移動 cd /var/www/UPPER_DIR tar cvzf blog.tar.gz blog/ DBも同じようにバックアップして圧縮しておく(18Mが十分の一に) 受け取りサーバー側では同じく一階層上で解凍 DBもインポートしておく 空のDBを作成(utf-8でOK) mysql> create database MYDATABASE default charset utf8; インポート mysql -u root -p MYDATABASE < MYDATABASEdmp.sql -12/31 空室情報取得バッチの移植に苦労。理由は<?phpを入れてなくてバッチ実行クラスが見つからないというなんとも初歩的なもの。翌日に移植完了とhtml形式の違いで取得できなかったものにも対応。 -1/1 テーブル移行 移行元 mysqldump -u root -p --add-drop-table cakephp rooms > rooms.sql gzip rooms.sql 移行先 gzip -d rooms.sql.gz mysql -u root -p cakephp < /var/tmp/rooms.sql -1/1 httpdのカウントテーブル作成 mysql> CREATE TABLE httpd_count ( -> recorded DATETIME not null, -> httpd_count int unsigned not null -> ); mysql> LOAD DATA LOCAL INFILE '/var/log/httpd_count.log' INTO TABLE httpd_count FIELDS TERMINATED BY ','; -1/6 svn移行 svnadmin dump /home/svn/repos | gzip > /var/tmp/myrepos.tar.gz -1/6 夜移行 サーバー再インストールからコンソール上がりきるまで10分は見ておいたほうがよい。DNSがなかなか切替わらず見切り発車で実施。SSLの秘密鍵のバックアップを忘れてSSL月だと起動失敗したのでSSLは後日。blogとwikiは移行完了。cronの改行コードがおかしくてエラーとなっていた。LFじゃないとNG -1/16 セキュリティ設定 SVN移行,hosts設定, -1/17 IP設定 210.148.59.13,serverToken除去,php.iniの設定変更など *移行漏れ [#z9bb5946] SSL証明書,.htpasswd *移行前の下準備 [#a93e7d30] +公開鍵のバックアップ(OK) +blog関係バックアップ +cron関係チェック(OK) +yumの履歴(OK) +SVNバックアップ(OK) -2/4 UTF-8移行 createdb homedb_uft -E UTF-8 -T template0 ダンプSQLをUTF-8に変換 SET client_encoding = 'UTF-8'; -4/19 cakephp戻し データベース移行は順調。 シンボリックリンクを介してのリライトはNGのようなのでディレクトリ名変更 DBアクセス。ユーザーを追加していなくてアクセス失敗。 simple_dom_htmlライブラリを入れてなくて失敗 -6/02 pukiwiki更新検討 *2015/04 攻撃を受けてセキュリティ強化とアプリケーション分離と作り直し [#jf9aea84] **基本方針 [#w97e0c01] 内部向けは自宅サーバーにおいておくか? wikiはアクセス数が減少しているのでどうする? 旧MTのコンテンツを廃止したい。 **対象 [#ff1e215a] **作業手順 [#da913c76] **トラブル [#y09767b6] *2015/11 一部アプリケーション分離 [#r71a0eb0] **移行スケジュール [#c2a9a26b] |11/17-12/07|KAGOYA VSPでCentOS7検証。wiki| |12/07-|Azureにてより自動構築重視の設定。wiki,postgresqlのtools| **空白時間帯 [#qe9b0a58] |0,20,40|道路情報| |0,15,30,45|道路情報jpeg| |0,15,30,45|株式情報5時に終了して7時に開始| |毎時10分|鉄道情報。4-23まで| |毎時15分|空室情報、10-24まで| |毎日13時5分|スキーエリア情報| 結論毎時50-00までが一番あいている時間帯。 鉄道情報は更新状況を整理して15分ヘッドにできないか見直す。jpegも20分単位にできないか見直す。 **全体計画 [#jba4e101] |項目|計画日|実施日|備考| |wiki|11/16|11/16|| |S3バックアップ|11/16|11/17|バックアップスクリプト修正| |toolsアプリのみ|11/17|11/17|cake2.6で動かしてみる。.htacessではまった| |バッチをローカルDBにて動かす|11/17|11/17|すんなり動いた。| |cake2.6プロビジョニング|11/18|11/19|ちょいと後回しで、無事成功。| |cronプロビジョニング|11/18|11/18|ansible化するが、cronファイルを復元するのでもよいかも| |postgresリモート接続にて、tftool移植|11/18|11/18|postgresql.conf,hg_hda.conf,iptables,postgresユーザー以外での接続に変更など結構大変だったがphpモジュールは普通に動いた| |postgres移植|11/20|11/20|ローカルから接続させる| |postgresバックアップansible化|11/20|11/20|ローカルから接続させる| |CentOS7 iptables化|11/25||ほんとはfirewalldにしたいが、共存させたいので!| |Azureに舞台を移し,postgresアプリAnsible化|12/05|12/05|OK| |postgre設定をAnsible化|12/07|12/07|ローカル接続はOK!| |IP更新できない理由を突き止める|12/07||publicipは取得できている| |S3バックアップジョブ分離|12/16|12/18|credential周りでcron経由だとトラブルあり!| |svn移行|12/26|12/25|ほぼ自動で行けた。svnだけ証明書があるので手動となる。| ***チェックリスト [#zee56420] +認証周りがキチンとされているか?(管理画面に入ること) +旧コンテンツ(blog/techmemo)やwikiのリダイレクトが完璧であること。 +アクセス制限が移行されていること ***postgresのユーザーに権限付与(シーケンスリード権限がなかった) [#tb2938a8] GRANT ALL ON テーブル名 TO ユーザー名; GRANT ALL ON シーケンス名 TO ユーザー名; ***cron移行周りのはまり(現在進行中) [#m7a684ef] -ntpdateが見えない フルパスに変更 -さくらでaws configureの内容が見えてない。翌日cron経由だと動かなくて発覚。 →単なる設定ミス。 aws s3 lsで設定の確認をすること -未解決 /etc/cron.daily/s3_backup.shがさくらだけ上記のエラーがでる。 5分ごとに実行だとでないのに! #counter