Alavarサイトの構成の構造

みなさんこんにちは!

Alawarサイトは、 ロシアアメリカ 、ヨーロッパなどの市場向けのサイト、モバイルデバイス用の個別のサイト、アフィリエイトプログラムのサイトなどです。これらはすべて、ハブのブログで既に書いた同じYiiインスタンスにデプロイされています。

今日は、サイトの構成のストレージ、構造、および管理をどのように整理したかを説明します。 また、さまざまな環境でプロジェクトを展開する方法についても説明します。







構成


サイトを構成するために、Yiiの構成の次の構造を使用しました。



protected/config /console /config.php /import.php /cache.php /log.php … /mobile /config.php /import.php /cache.php /log.php … /sites /alawar.ru.php /iphone.alawar.ru.php /ipad.alawar.ru.php /site.php … /test /config.php /import.php … /web /config.php /import.php /log.php … /~server /amqp.php /crontab.txt /db.php /eauth.php /mongo.php /redis.php /smsgate.php /services.php /comment.php …
      
      





すべての構成ファイルは、目的に応じて分類されています。



構成構造の特徴は、保護された/〜サーバーに「シルバー依存」のパラメーターと設定が集中し、各サーバーの個別のリポジトリに保存されることです(〜サーバーはリポジトリの1つをチェックアウトする単なるシンボリックリンクです)。 この構造により、松葉杖を使わずに簡単に、すばやく、さまざまな環境でプロジェクトを展開できます。



展開する


現時点では、プロジェクトを3つのサーバーに展開できます。



したがって、各サーバーには設定を含む独自のリポジトリがあります。





プロジェクトをデプロイするとき( jenkinsphingツールを使用してこれを行います )、どのブランチとどのリポジトリを構成するかを指定するだけです:

 #  task-xx  dev- phing -Dbranch=task-xx -Dconfig=dev-config deploy #     phing -Dbranch=prod -Dconfig=prod-config deploy
      
      







phingがこれで行うことは次のとおりです。

 <!--     --> <target name="deploy" depends="-get-properties"> <!--   ,     --> <mkdir dir="${deploy.path}" /> <!--   ,          --> <mkdir dir="${deploy.path}/application" /> <!--   ,        --> <mkdir dir="${deploy.path}/config" /> <echo msg="checkout application and config..." /> <!--   --> <exec command="bzr co ${bzr.branch.path} ./" dir="${deploy.path}" checkreturn="FALSE" returnProperty="bzr.co.return" outputProperty="bzr.co.out" /> <if> <!--    ,  ,     --> <equals arg1="${bzr.co.return}" arg2="3" /> <then> <exec command="bzr co ${bzr.trunk.path} ./" dir="${deploy.path}/application" /> <exec command="bzr switch -b ${bzr.branch.path}" dir="${deploy.path}/application" /> </then> </if> <!--     --> <exec command="bzr co ${bzr.config.path} ./" dir="${deploy.path}/config" /> <!--      runtime --> <chmod file="${deploy.path}/application/protected/runtime" mode="0777" /> <!--     --> <exec command="ln -s ${deploy.path}/config/server server" dir="${deploy.path}/application/protected/config/" level="info"/> <!--    php error log --> <exec command="ln -s ${php.error.log.path} phplog" dir="${deploy.path}/application/protected/runtime/" level="info"/> <!--      css  js       protected/runtime/sites/{site.ru.php} --> <exec command="php ${deploy.path}/application/protected/yiic deploy data=css" /> <exec command="php ${deploy.path}/application/protected/yiic deploy data=js" /> <!--    redis  mysql --> <exec command="php ${deploy.path}/application/protected/yiic deploy data=shardmap" /> </target>
      
      







したがって、展開後、プロジェクト全体の構造は次のようになります。

 application/ #     protected/ … config/ … ~server/ #  config/server … … public/ … config/ #    … server/ …
      
      





合計


私たちが使用した構成構造は許可されました:



ただし、もちろん、構成用のさまざまなリポジトリを使用するアプローチには欠点があり、主なものは変更の同期です。 環境設定を考慮して、1つのリポジトリの変更を他のすべてのリポジトリに手動で転送する必要があります。



All Articles