はじめに
自社用の検証用サーバーの移転をしないといけないことに。かなり昔のサーバーで過去の遺物も・・・・・
自社用なのでサーバー屋さんへお願いできる費用もなく・・・・
仮想サイトで24ドメインあるので、面倒・・・・
新サーバーはPlesk なので、コンパネで1サイト毎設定なんて・・・・いや・・・・、コンパネアレルギーが・・・
といっても・・コンソールも・・・・・・・
調べてみた。
まず、Pleskで24ドメインもあるので、入れたくないので。。
/usr/local/psa/bin/の中にコマンドラインの実行ファイルがあるこの中にsiteってファイルがあるがこれかと思いリファレンスみると
思った感じではない・・・ftpsubaccountとかmailとかuserとかそれぽいのがあるが個別ぽい。
海外サイトでググると、subscriptionってのらしい。。
サイトの作成と、サイトアカウント、FTPアカウントを1コマンドで作ってくれるらしい。。これだー。SSLの設定、CGIの設定も同時でできるー
コマンド
cd /usr/local/psa/bin/
./subscription --create 作成ドメイン名 -owner admin -service-plan "Unlimited" -ip 割り当てるIP -login 作成するアカウント -passwd "作成するアカウントパスワード" -perl true -cgi true -ssl false -hst_type phys -hosting true
-owner admin -service-planの部分、各種オプションは合わせてくださいね。
下記はリファレンスです。
https://docs.plesk.com/en-US/obsidian/cli-linux/using-command-line-utilities/subscription-subscriptions.37768/
ちなみに載ってても動作しないのもありました。。
①は-ssl true/false
②は-ssl-redirect true/false
③は-cgi true/false
更新するコマンド、例はテストサイトのなのでSSLを外したときのコマンド
cd /usr/local/psa/bin/
./subscription --update 対象ドメイン名 -ssl false -ssl-redirect false
ちなみに今回はメールアカウントはないので使わなかったけど。メモで
cd /usr/local/psa/bin/
./mail --create 指定のメールアドレス -mailbox true -passwd 'パスワード'
また、上記を実行後は、ヒストリーに残ってしまうので、history -cとかわすれないように・・パスワードがあるので、わすれないでね・・・
旧サイトからファイルを
サイトが多いのでtarでは、一括でできないことが・・圧縮も時間が・・・
rsyncが動いたーー、新サーバーのplesk側もインストールしないで動いたのでこれで・・いこう・・
はじめは、pleskのhomeが空いていたので、そこから、mountして/etc/fstabと思ったんだけど。。ちょっとまて。。pleskでサイト削除しちゃうと・・
fstabでエラーになって起動しないとか・・・・・あ・ぶ・な・い。。
rsyncで旧homeから新サーバーのhomeは
rsync -rav /home アカウント@IPアドレスなど:/
vは表示なのでいらない場合は-raとか・・
ちなみにコマンドはこれ。
mount --bind 元のパス 新しいパス(/var/www/vhosts/xxxxxxx/htdocs)
mountは再起動すると戻ってしまうので、恒久的設定はfstabで行う・・
/etc/fstab
元のパス 新しいパス(/var/www/vhosts/xxxxxxx/htdocs) none bind 0 0
上記だと1回の同期で楽かとおもったけど。。危ないのでやめて、個別rsyncで書くことに。。その時にパスワードが面倒・・・・
検証用サーバーなので、メンテナンスごとに、だれかが触るので・・24ドメイン毎、コマンド打つのとパスワードが面倒・・・・
あれだな。。expectコマンド、cronでお世話に。。。旧サーバーみると、expectがない・・・yumもつながらない。。。
rsyncは、ほんとは、認証ファイル使ってやったほうがいいですよ・・・・
旧サーバーのバージョンを確認。。
grep -H "" /etc/*version ; grep -H "" /etc/*release
該当のexpect-xxxxx.i386.rpmを落としてきて。。個別インストールした。
下記のスクリプトを24サイト分記述してsync.shで保存して・・実行・・・
#!/bin/bash
expect -c "
spawn rsync -rav /home/旧サーバーの絶対パス 新アカウント@新サーバーIP:/var/www/vhosts/新サーバー絶対パス/httpdocs
expect \"Password:\"
send \"新サーバーのパスワード\"
interact
"
この後複数。。。
楽だわーーー、こちらも移転完了時。sync.shは削除しないとね。。パスワード書いてあるからね。。
のこりの問題点1
ユーザーとグループ権限・・旧サーバーはapacheグループなのでpleskグループに変えておく・・
pleskはファイルのグループがpsaclnでhttpdocsのグループがpsaservなのでこちらで。変更
chown -hR FTPアカウント:psacln /var/www/vhosts/新サーバー絶対パス/httpdocs
chown FTPアカウント:psaserv /var/www/vhosts/新サーバー絶対パス/httpdocs
これも面倒なのでアカウントとパスをスペース区切りで作成して。以前紹介した。下記で
FTPアカウント1 /var/www/vhosts/新サーバー絶対パス1/httpdocs
FTPアカウント2 /var/www/vhosts/新サーバー絶対パス2/httpdocs
FTPアカウント3 /var/www/vhosts/新サーバー絶対パス3/httpdocs
(.+) (.+)
chown -hR $1:psacln $2
chown $1:psaserv $2
エクセルとかでもできるので一括でコマントをつくります。
のこりの問題点2
検証用サーバーにはすべて、フォルダーにベーシック認証がかかっているので・・・・全部で170ファイル近く・・・・
下記から.htaccessでhome/のパスが含まれているファイル数をみる・・・
find /var/www/vhosts/新サーバー絶対パス1/httpdocs/ -name '.htaccess' -type f | xargs grep home/
パスの場合正規表現の区切り文字を|と便利です。
htaccess置換用コマンド、こちらもサイト分24個つくります。
find /var/www/vhosts/新サーバー絶対パス1/httpdocs/ -name '.htaccess' -type f | xargs sed -i 's|/home/旧サーバーの絶対パス1|/var/www/vhosts/新サーバー絶対パス1/httpdocs/|g'
追記
検証用サーバーの中にふるーーぃPHPが、半ばあきらめていたのが。。
下記からPHP 5.3 (outdated) が入れれるのを発見!pleskは仮想サイト毎にphpバージョン設定できるので。これで・・・
たしか、5.4からいろいろなくなったので5.3を入れてみて。。動きました....
まぁ。検証サイトは、ベーシック認証かけているので....
SQLはきっと担当がいれるでしょぉ・・
さいごに
すぐわすれちゃうのでメモです。。