私は少数の開発者グループのチームリーダーです。私の経歴は主にアプリケーション開発にあり、バージョン管理(SVN、Gitなど)が使用され、非常に有用であることが証明されている大規模なグループで働いてきました。現在、一人の孤独なphp開発者であるWeb開発を監督し始めていますが、まもなく2人目のphp/web開発者を追加する予定です。現在、私たちの孤独なphp開発者プログラムは生きています(つまり、彼はphpファイルに変更を加え、新しいコードをアップロードし、何が起こるかを確認します)。これはただ災害が起こることを求めているだけなので、これを変えたいと思います。彼のプロセスに何らかのバージョン管理を追加することも考えています。すでにアプリケーション開発にSVNサーバーが使用されているため、それを何らかの形で活用したいと思います。これにどのようにアプローチするのが最善か、どのような変更を加えるべきかについてのアドバイスを探しています。
開発に既存のWebサーバーを使用する必要がありますか?既存のWebサイトの完全なコピーを作成し、これらのコピーをサブドメインに置くことができます。次に、これらのコピーに変更を加え、すべてがうまくいった場合、サブドメインをメインサイトと同期します。これが適切なアプローチである場合、同期に使用するのに最適なツールセット(ソフトウェアなど)はどれでしょうか。 Webサーバー上のものを同期しながら、これらの変更をSVNサーバーにコミットできるソフトウェアはありますか?これらの変更に関係する手順が少ないほど良いです。
または、開発用に完全に別個のサーバーを用意する方が良いでしょうか?これのマイナス面はメンテナンスです...現状ではスタッフが不足しています。
ありとあらゆるアドバイスは大歓迎です。 Web/PHP開発は、私が慣れ親しんでいる標準アプリケーション(Java、C++など)の開発とは少し異なるため、この部門をどのように実行するのが最適かについて、私は間違いなくオープンです。
ありがとう、ハリー
実稼働サーバー上で動作することは決してなく、「何が起こるかを見る」。
チームに次のことを精通させます。
そして、私が強くお勧めするこの本のコピーを全員に配布(送信)してください。 継続的配信:ビルド、テスト、展開の自動化による信頼性の高いソフトウェアリリース
可能な限り自動化します。テスト、リンター、ビルドを手間をかけずにトリガーします。開発、ステージング、および実稼働用の仮想環境を作成します。仮想環境を使用すると、完全に新しいシナリオをテストしたり、運用サーバーを模倣したりできます(たとえば、「virtualbox headless」を検索する、 このような記事を読む )。セットアップが完了すると、マウスのクリックまたは次のコミットですべてのステップを調整するため、実際には複雑さはありません。
Deliveryのコンテキストでは、Capistranoや Fabric (Python)、またはもちろん Jenkins (Java)など、自動化に役立つツールがたくさんあります。
すべてのアプローチに適したサイズはありません(本を読んでください)が、チームはプロセスを段階的に改善していきます。
私のチームは同じボートに乗っており、私たちのソリューションは、展開サーバーとまったく同じ構成(Apache conf/php.ini/versions)でローカル開発サーバーを作成し、従来のアプリの場合と同様にバージョン管理にSVNを使用することでした開発。開発サーバーはSVN + Bugtrackingシステムも処理するため、バグ/機能リクエストの処理がはるかに簡単になります。開発サーバーと展開サーバーの構成は同一であるため、展開中にのみ転送エラーが発生します。
開発専用のステージング/テストサーバーを用意する価値があるかどうかを自分で決定する必要があります。
使用できるツールについては、SVNで動作するCIツールと展開自動化ツールがたくさんあります。 Capistrano はRubyの知識を必要とする非常に軽量なツールですが、それを使用すると、複数のサーバーにアプリを簡単にデプロイ/構成できます。 (SVNコミットフックを使用して)新しいコミットが行われたときにステージングサーバーに自動的に展開するCapistranoレシピを作成し、その後ステージングサイトで機能テストを自動的に実行し、テストが成功した場合、自動的に展開することもできます実動サーバー。
Capistranoを使用すると、ステージングサーバーまたは運用サーバーを任意の以前のバージョンに簡単にロールバックできるだけでなく、他のタスクを自動化することもできます(サイトやその他のメンテナンスタスクのバックアップなど)。
ただし、この種のセットアップで問題になったのは、物事を単純化するために、Capistranoがリビジョンを保存し、アクティブなリビジョンを追跡する方法のために、サイトのwebrootにシンボリックリンクを使用する必要があることです。残念ながら、Apacheは時々シンボリックリンクをキャッシュするため、変更をすぐに反映するには、いくつかのいハック(シンボリックリンクの削除、wget
を使用したサーバーエラーのトリガー、シンボリックリンクの再作成など)を行う必要があります。
Webrootを実際の現在のバージョンパスに変更できる場合、問題を回避できますが、毎回Webサーバーを再起動する必要があります(アクセスできる場合)。別の方法は、.htaccessとmod_rewriteを使用することです。