2009-08-15 11 views
5

私はローカルマシン、ステージングサーバー、数多くの運用サーバーがあるWeb開発会社で働いています。私たちはperlのMacで作業し、svnを使用してステージにコミットし、perlスクリプトをプロダクションサーバーにロードしました。今私は私自身のプロジェクトに取り組んでおり、共有Webホスティングを使用し、unixベースの環境(perl/bashスクリプト/ cronジョブなどでできるすべての魔法)で作業していないときに、Web開発の良いプラクティスを見つけたいと考えています。共有ホスティングへの(php/mysql)導入のベストプラクティス?

私は、少なくとも1人の他の人と一緒に働いている私は(SSHアクセスの)外部のプロバイダからウェブホスティング、共有、単一の標準
  • を使用しています

    • :ある

      だから私の質問が与えられている私の条件、ソース管理にSVNを使用することを意図しています。

    • 私はWindowsでphp/mysqlを開発していますがLinuxは可能性があります)

    コード/データのテスト、展開、移行についてはどのような設定をお勧めしますか?私はローカルマシンにxamppサーバーをインストールしていますが、どの方法を使用してWindows下のデータなどを移行するのかはわかりませんでした。

  • 答えて

    10

    私は共有ホスティングでPHP personnal-projectsをいくつか持っています。ここでは、私はそれらのいずれかで何をやっているから、いくつかの考えがあります(最もアクティブで、少なくとも半自動化された同期方法を必要とするもの)

    私のセットアップに関するいくつかの言葉:

    • 少し前、私はSVNですべてを持っていました。今、私はbazaarを使用しています。しかし、考え方はまったく同じ
    • (バザーで、私は地元の歴史やそのすべてを持って、除いて)あなたは、私がLinux上で動作する
    • を行うように私は、本番サーバへのSSHアクセスを持って独占的(そうです、今、私がどのように動作するか私は窓のように簡単ではないかもしれませんん)

    • TE本番サーバー上(ソースコード、画像でいるすべて.. 。)は、私は一つだけだSVN/bazarr /何でも
    • Iは、Apache/PHP/MySQLの(私は私はしばらくの間に一度ローカルにインポートする生産DBのダンプを使用)
    • で、ローカルで動作するようにコミットされますそのプロジェクトに取り組んでいます。おそらく2/3の開発者の小さなチームであれば問題ありませんが、それ以上はありません。私は、この自家製を推測している間の変更のためのSVNサーバをチェックし、いくつかのPHPスクリプト「最後のリビジョンが生産にプッシュ」だったとHEAD
        • :私は前にやった

        PHPスクリプトはあなたが現在usngしているPerlスクリプトのようです^^

    • このスクリプトは、プロダクションにアップロードするディレクトリ/ファイルのリストを作成しました
    • FTPアクセス経由でアップロードしました
    • これはあまり満足できるものではありませんでした(私のスクリプトにはバグがありました。私はそれらを修正するために時間がかかりませんでした);そして私は今、何

    (まあ、それは自動的にスクリプトによってファイルに保存され、そうではないという難しい^^ました)私は最後の生産にプッシュ時間のリビジョン番号を覚えておくために私を余儀なくさ:

    • バザーに切り替えるとき、私は本番サーバーへのsshアクセスを持っているとして、私は、スクリプト全く
    • を落としている
    • とにかく非常にうまく動作しませんでした、そのスクリプトを書き換えたくありませんでした、私はrsyncを使って同期します私の開発マシンからプロダクションサーバーに、私がローカルに持っているものが安定している/プロダクションの準備が整っていると考えられるときです。

    物事のその方法についてのメモのカップル:

    • 私は、ステージングサーバーを持っていない:私の地元のセットアップには、生産者の1
    • は、ステージングサーバーを持っていないに十分近いです私は、ステージングサーバーを持っていた場合は1つのまたは2 developpers
    • との単純なプロジェクトは、私はおそらく一緒に行きたいためにOKです:
      • あなたがSTAにしたいときの「SVN更新」を行いますGE
      • それがOKであれば、より多くのと、大きなプロジェクトで(最新の「安定」改正のBAは、そのOKが生産にプッシュするだろう)ステージングサーバーからrsyncコマンド
    • を起動私はおそらく、そのような設定で行くつもりはないでしょう。私はそれほど大きな人のプロジェクトでは大丈夫だと思っています。


    の「Linux志向は」rsyncのを使用しているかもしれません、ここで「特別な」唯一のもの;すばやく検索すると、Windowsにインストールできるrsync実行可能ファイルがあるようです:http://www.itefix.no/i2/node/10650

    私はそれを試したことはありません。追記として


    、ここに私のrsyncコマンドは次のようになります。

    rsync --checksum \ 
        --ignore-times \ 
        --human-readable \ 
        --progress \ 
        --itemize-changes \ 
        --archive \ 
        --recursive \ 
        --update \ 
        --verbose \ 
        --executability \ 
        --delay-updates \ 
        --compress --skip-compress=gz/zip/z/rpm/deb/iso/bz2/t[gb]z/7z/mp[34]/mov/avi/ogg/jpg/jpeg/png/gif \ 
        --exclude-from=/SOME_LOCAL_PATH/ignore-rsync.txt \ 
        /LOCAL_PATH/ \ 
        [email protected]:/REMOTE_PATH/ 
    

    私は、公開鍵/秘密鍵のmecanismを使用していますので、rsyncはところで、パスワードを要求しません。

    そして、もちろん、私は一般的にオプションで、synchorisedされようとしているかを確認するために、最初の「ドライラン」モードで「--dry-run

    を同じコマンドを使用して、ignore-rsync.txtはのリストが含まれています私は生産にプッシュしたくないファイル:

    ここ
    .svn 
    cache/cbfeed/* 
    cache/cbtpl/* 
    cache/dcstaticcache/* 
    cache/delicious.cache.html 
    cache/versions/* 
    

    、私はちょうど生産にプッシュするためにキャッシュディレクトリを防ぐ - それらを送信しないように論理的なようで、生産データは、開発と同じではありませんとしてデータ。

    (私はちょうど「.svn」は、このファイルにはまだあります気づい私はそのプロジェクトのもうSVNを使用していないよう...私は^^、それを削除することもできます)


    ・ホープこれは...少し助けSVNについて

    +1

    ありがとうございます。そのような細部と明快さをもって、あなた自身のような答えを人々に伝える努力は時々私を驚かせます。 – zenna

    +1

    あなたは大歓迎です:-)(私は何か答えを得て、そして/または私を驚かせることもあります;-)ので、私が助けることができるとき...まあ、それはSOのためです! ) –

    1

    、私はあなたが豆の木のような専用のSVNのホストで行くか、両方の開発者がそれをオフに働くことができるようにSVNサーバを実行するために、同じサーバー・マシンを使用することをお勧めします。後者の場合

    、デプロイメントスクリプトは、単純に(アクセスbeta.mysite.com経由)ステージングウェブフォルダにビットを移動するだろうし、別の展開スクリプトは、ライブWebディレクトリにそれを移動することができます。実際のサイトに直接展開することは、明らかに良い考えではありません。あなたは、専用のホストに行くことに決めるか、サーバにあなたのマシンからデプロイする場合

    、rsyncのを使用しています。これは私の現在の設定です。 RSyncは(SSHを介して)差分同期を行いますので速く、この種のもののために構築されました。あなたはユニットテストやその他もろもろでビルドツールを使用開始することができます成長するにつれ

    。これにより、データ同期の問題のみが残されます。

    私はremote - > localのデータを同期し、mysqldumpを使ってSSHでこれを行うDOSバッチファイルを使用します。 CygwinはWindowsマシンには便利ですが、スキップすることはできます。また、SQLインポートスクリプトは、ローカル配備のためにホスト名やWebルートなどの一部のセルを更新するために1行のクエリを実行します。

    あなたは、このセットアップを持っていたら、あなただけのコードとリモート配備またはローカル同期とdeployementを書くことに集中することができますは、ワンクリックのプロセスになります。

    +0

    ありがとう、私は本当にそのサーバー上でスクリプトを実行することはできませんので、SVNホストのためにアセンブラを使用しています。 – zenna

    +0

    コードはマシン上で同期されているので、自分のマシンからスクリプトを実行できます(またはパートナーがマシン上でスクリプトを実行できます)。スクリプトはデポにチェックインすることもできます。 – aleemb

    1

    1つのオプションは、タスクのために、専用のフレームワークを使用することです。 Capistranoは、PHPなどのスクリプト言語に非常によく合います。これはRubyに基づいていますが、検索を行う場合は、PHPアプリケーションのデプロイにどのように使用するかについての指示を見つけることができます。

    関連する問題