2016-11-26 5 views
1

lftpを使用してTravis CIからWebサイトを展開しています。ビルドの前にビルドプロセスが存在するため、ビルドディレクトリが存在し、ftpサーバのルートにプッシュされます。lftpミラーを使用してダウンタイムを防ぐ

lftp $FTP_URL -e "glob -d mirror build . --reverse --delete-first --parallel=10 && exit" 

は、これはかなりうまく動作しますが、私はので、私のウェブサイト上のファイルを行方不明のダウンタイム/一時的なPHPのパースエラーを持つことが嫌い。その問題を解決する最善の方法は何ですか?


私の最初のアプローチは、一時ディレクトリを設定するオプションでしたが、lftpのmanページには、一時ファイルのための唯一の選択肢があると言います。私はまだこのオプションを試しましたが、それは役に立たなかった。


私の2番目のアプローチは、一時フォルダーを使用してルートを置き換えるために "ミラービルドtemp"を使用することでした。ここでの問題は、rm -rf *のような古いファイルやフォルダを削除している間はtempフォルダを除外できないということです。

+0

xfer:use-temp-file設定を試しましたか? – lav

+0

Webルートの親ディレクトリにアクセスできますか? – lav

+0

ディレクトリの一時ファイル設定が機能しません。私は親ディレクトリへのアクセス権がありません、アイデアは各cronjobのための別々のアクセスを持っていた - 親ディレクトリへのアクセスを与えることは私の問題を解決するかもしれませんが、ftpユーザーは他のプロジェクトへのアクセス権を持っています。 – redaxmedia

答えて

1

PHPファイルの追加/削除を含まない小さな変更の場合は、set xfer:use-temp-fileで十分です。 --remove-firstも使用しないでください。アップロードする前にlftpが古いファイルを削除するためです。

大きな変更を加えるには、サイトの各バージョンごとに別々のディレクトリを作成し、.htaccess mod_rewriteまたはその他の設定ファイルを使用してWebサーバーをディレクトリにリダイレクトします。この技術は、新しいバージョンへのアトミックな切り替えを可能にします。さらに、IPアドレスに基づいて条件付きで新しいバージョンにリダイレクトする場合や、他のルールを使用する場合は、新しいバージョンの最終的なプリプロダクションテストを行うことができます。

あなたがそれぞれの新しいバージョンを再アップロードし、サイト全体にしたくないとFTPサーバーは、自分自身とのFXPをサポートしている場合は、その後、mirror -eR local_dir new_directoryを使用して、新しいディレクトリを更新し、mirror old_directory ftp://[email protected]/new_directoryを使用して新しいディレクトリに古いバージョンをコピーすることができます。

関連する問題