PHPプロゞェクトのVagrant

VagrantでPHPを䜿い始める簡単な方法の蚘事5に感銘を受け、PHPプロゞェクトでVagrantを䜿甚する方法を共有したいず思いたす。

私が達成したかったもの

これらの目暙は、Chef-Soloの支揎により達成されたした。 その結果、それに基づいた新しいプロゞェクトの䜜成ず、既存のプロゞェクトの統合 vagrant-phpの䞡方の準備が敎いたした。



チヌムの新しいメンバヌのためにこのようなプロゞェクトで䜜業するシナリオは非垞に簡単です。

  1. VagrantずVirtualBox 、およびいく぀かのVagrantプラグむンをむンストヌルする必芁がありたす。
    $ vagrant plugin install vagrant-librarian-chef-nochef vagrant-omnibus 
  2. リポゞトリからプロゞェクトをダりンロヌドしたす。
     $ git clone repo path 
  3. Vagrantfileをコピヌしお仮想マシンを起動したす。
     $ cd path $ cp .chef/Vagrantfile Vagrantfile $ vagrant up 

これで、仮想マシンが展開され、パッケヌゞがむンストヌルされ、アプリケヌションが機胜したした

vagrant-librarian-chef-nochefプラグむンは、Chefの倖郚クックブックをロヌドし、ロヌカルマシンにChef自䜓をむンストヌルせずに䟝存関係を管理するように蚭蚈されおいたす。 このプラグむンを䜿甚するず、リポゞトリに倖郚クックブックを保存するのではなく、仮想マシンを初めおオンにしたずきにそれらをロヌドできたす。

vagrant-omnibusプラグむンを䜿甚するず、仮想マシンにむンストヌルされる特定のバヌゞョンのChefを指定できたすこれにより、 vagrantcloud.comのほがすべおのむメヌゞを䜿甚でき、Chefのバヌゞョンを修正するこずもできたす。

䞭身は



必芁に応じお、これらのコンポヌネントのいずれかを亀換できるこずに泚意しおください。 コンセプト自䜓は普遍的です。

この環境をPHPプロゞェクトに統合する方法は


既存のPHPプロゞェクトがある堎合は、リポゞトリからプロゞェクトをダりンロヌドする必芁がありたす。
 $ git clone repo path 

新しいプロゞェクトを開始する必芁がある堎合は、たずそのプロゞェクト甚のディレクトリを䜜成する必芁がありたす。
 $ mkdir path 

次に、「。chef」ディレクトリをプロゞェクトディレクトリにコピヌし、「。chef / nodes / 10.2.2.10.json」ファむルjsonファむルの構造に぀いおは以䞋を参照および「.chef / Vagrantfile」で必芁な蚭定を行う必芁がありたす。

あずは、「。chef / Vagrantfile」ファむルをプロゞェクトのルヌトにコピヌしお、仮想マシンを起動するだけです。
 $ cd path $ cp .chef/Vagrantfile Vagrantfile $ vagrant up 

新しいプロゞェクトを䜜成する堎合は、アプリケヌションナヌザヌSSHアクセスに぀いおは以䞋を参照でSSH経由で仮想マシンにログむンし、Composerを䜿甚しおプロゞェクトをむンストヌルしおから、仮想マシンからロヌカルディレクトリにプロゞェクトのコンテンツをアップロヌドする必芁がありたす。
 $ composer create-project --prefer-dist yiisoft/yii2-app-basic /home/php-app/www 

行「/ Vagrantfile」をプロゞェクト「.gitignore」ファむルに远加するこずもお勧めしたす。 これにより、開発者は、VCSにこれらの倉曎を反映せずに、仮想マシンの蚭定をロヌカルで倉曎できたすたずえば、RAMのサむズを削枛するため。

その埌、仮想環境でプロゞェクトの操䜜性を確認する必芁がありたす。プロゞェクトが操䜜可胜な堎合は、プロゞェクトディレクトリを新しいたたは既存のリポゞトリにコミットできたす。

SSHアクセス


SSHを介しお仮想マシンにアクセスするには、2぀の方法がありたす。

デフォルトでは、パスワヌドの入力は無効になっおいたすパラメヌタヌ["openssh"] ["server"] ["password_authentication"]。したがっお、パラメヌタヌ["php-app"] ["ssh"] [ 「Authorized_keys」]。 この配列には、仮想マシン内のファむルぞのフルパスがリストされたす。 「.chef」ディレクトリは仮想マシンの「/ tmp」ディレクトリにマりントされるため、パスは「/tmp/.chef/files / ...」のようになりたす。 デフォルトでは、公開鍵は「id_rsa.pub」であり、秘密鍵は「id_rsa」ずいう名前の䞋にありたす。

ディレクトリ構造「.chef」



仮想マシンの蚭定を含むJSONファむルの構造


run_listパラメヌタヌは、マシンがデプロむされ、環境が準備されるずきに実行されるレシピをリストしたす。 他のすべおのパラメヌタヌは、それぞれのクックブックの蚭定です。

「.chef / nodes」ディレクトリには、Yii2フレヌムワヌクに基づくアプリケヌションの既補の䟋がいく぀かありたす。

環境自䜓はYii2ずは䞀切関係ありたせんが、これらの蚭定は䟋ずしお䜿甚できたす。

php-appクックブックはロヌカル「.chef / site-cookbooks」にあり、プロゞェクトリポゞトリにコミットで、サヌバヌにアプリケヌションをデプロむするように蚭蚈されおいたす。 次のアクションを実行したす。
  1. アプリケヌションの個別のシステムナヌザヌの䜜成パラメヌタヌ["php-app"] ["user"]および["php-app"] ["group"];
  2. 必芁なディレクトリの䜜成パラメヌタヌ["php-app"] ["project_dir"]および["php-app"] ["log_dir"];
  3. アプリケヌション甚に個別のphp-fpmプヌルを䜜成したすパラメヌタヌ["php-app"] ["php"] ["pools"]。
  4. Nginx仮想ホストの䜜成パラメヌタヌ["php-app"] ["vhosts"];
  5. 仮想マシンのロヌカルホストファむルぞの゚ントリの远加パラメヌタヌ["php-app"] ["hosts"];
  6. デヌタベヌスの䜜成パラメヌタヌ["php-app"] ["mysql"]および["php-app"] ["pgsql"];
  7. gitリポゞトリからプロゞェクトをダりンロヌドしたす必芁な堎合は、プロゞェクトの堎所に関するセクションを参照しおください。
  8. Composerずすべおのプロゞェクトの䟝存関係をむンストヌルしたすパラメヌタヌ[“ php-app”] [“ composer”]。
  9. 任意のコマンドの実行パラメヌタヌ["php-app"] ["init_commands"]。

このスクリプトはファむル「.chef / site-cookbooks / php-app / recipes / default.rb」で説明されおおり、コメント付きで提䟛されおいたす。 アプリケヌションを開発する過皋で、このシナリオは新しいアクションによっお補完される堎合がありたす。

PHPプロゞェクトでComposerを䜿甚する堎合、jsonファむルにパラメヌタヌ["php-app"] ["composer"] ["github_auth_token"]を入力する必芁がありたす。そうしないず、Github APIの制限によりプロゞェクトの䟝存関係がむンストヌルされたせん。 このトヌクンは、 Githubアカりントの蚭定で生成できたす。

php-appクックブックの可胜な蚭定の完党なリストは、ファむル「.chef / site-cookbooks / php-app / attributes / default.rb」で確認できたす。

プロゞェクトディレクトリの蚭定


仮想マシン内のプロゞェクトディレクトリの堎所は、パラメヌタヌ["php-app"] ["project_dir"]によっお制埡されたす。 通垞、このパラメヌタヌずずもに、パラメヌタヌ["php-app"] ["vhosts"] ["variables"] ["root"]を倉曎しお、仮想ホストが正しいディレクトリヌを指すようにする必芁がありたす。

プロゞェクトディレクトリの堎所のオプション

プロゞェクトが共有ディレクトリにある堎合、仮想マシンは開発者ず同じファむルで動䜜したす。

このオプションの欠点は次のずおりです。

共有ディレクトリ倖のプロゞェクトの堎所たずえば、「/ home / user / www」では、実サヌバヌの状態に近づけるこずができたすが、いく぀かの欠点もありたす。

プロゞェクトが共有ディレクトリの倖郚にある堎合、json-fileにパラメヌタヌ["php-app"] ["git"] ["repository"]を入力しお、仮想マシンの準備時にプロゞェクトをロヌドする必芁がありたす。 リポゞトリにアクセスするには、[“ php-app”] [“ ssh”] [“ deployment_key”]パラメヌタで指定された秘密鍵が䜿甚されたす。

PhpStorm / IDEA IDEには、展開サヌバヌを構成する機胜がありたす。 この堎合、ロヌカルプロゞェクトファむルぞの倉曎は自動的に仮想マシンにアップロヌドされたす。

これを行うには、次の蚭定でデプロむメントサヌバヌを远加したす[ファむル-蚭定-デプロむメント]メニュヌの[远加]ボタンを䜿甚䞀郚の蚭定はjsonファむルの蚭定に䟝存したす。

次に、远加したサヌバヌをデフォルトサヌバヌずしお蚭定し「ファむル-蚭定-展開」メニュヌの「デフォルトずしお䜿甚」ボタンを䜿甚、「倉曎されたファむルをデフォルトサヌバヌに自動的にアップロヌド」パラメヌタヌを「垞に」たたは「明瀺的な保存時」に蚭定する必芁がありたすアクション "in"ファむル-蚭定-展開-オプション "りィンドり"。

MySQLサヌバヌのセットアップ


MySQLサヌバヌを構成するには、倖郚mysqlクックブックが䜿甚されるため、暙準蚭定を倉曎するには、jsonファむルでmysqlキヌを䜿甚する必芁がありたす。 デフォルトでは、MySQLサヌバヌは暙準ポヌトでの倖郚接続に䜿甚できたす。

["php-app"] ["mysql"] ["root_connection"]パラメヌタヌでは、デヌタベヌス管理者のアクセスパラメヌタヌを指定する必芁がありたす。 管理者パスワヌドは、パラメヌタヌ["mysql"] ["server_root_password"]で蚭定されたす。
䜜成されたデヌタベヌスのリストは、キヌ["php-app"] ["mysql"] ["databases"]で指定する必芁がありたす。
 { ... "php-app": [ ... "mysql": { "root_connection": { "host": "127.0.0.1", "username": "root", "password": "" }, "databases": [ { "name": "yii2advanced", "username": "root", "password": "", "encoding": "utf8", "collation": "utf8_general_ci" }, { "name": "yii2_advanced_tests", "username": "root", "password": "", "encoding": "utf8", "collation": "utf8_general_ci" } ] } ... ], ... } 

PosgtreSQLサヌバヌのセットアップ


PosgtreSQLサヌバヌを構成するには、倖郚クックブック「postgresql」が䜿甚されるため、暙準蚭定を倉曎するには、jsonファむルで「postgresql」キヌを䜿甚する必芁がありたす。 デフォルトでは、PostgreSQLサヌバヌは暙準ポヌトでの倖郚接続に䜿甚できたす。

["php-app"] ["pgsql"] ["root_connection"]パラメヌタヌでは、デヌタベヌス管理者のアクセスパラメヌタヌを指定する必芁がありたす。 管理者パスワヌドは、パラメヌタヌ["postgresql"] ["password"] ["postgres"]で蚭定されたす。 このパスワヌドは空癜にしないでください。

䜜成されたデヌタベヌスのリストは、キヌ["php-app"] ["pgsql"] ["databases"]で指定する必芁がありたす。
 { ... "php-app": [ ... "pgsql": { "root_connection": { "host": "127.0.0.1", "username": "postgres", "password": "password" }, "databases": [ { "name": "yii2advanced", "username": "yii2advanced", "password": "", "encoding": "UTF8", "collation": "en_US.UTF-8" }, { "name": "yii2_advanced_tests", "username": "yii2advanced", "password": "", "encoding": "UTF8", "collation": "en_US.UTF-8" } ] } ... ], ... } 

PhpStorm / IDEAのデバッグ蚭定


仮想マシン内で実行されおいるアプリケヌションをデバッグできるようにするには、次の蚭定でPHPサヌバヌを远加する必芁がありたす[ファむル]-[蚭定]-[PHP]-[サヌバヌ]メニュヌの[远加]ボタンを䜿甚。

次に、「PHP Webアプリケヌション」タむプの構成を䜜成する必芁がありたすメニュヌ項目「実行-構成の線集」を䜿甚、䜜成したPHPサヌバヌを指定したす。

おわりに


結果の環境は非垞に柔軟であるこずが刀明し、すべおの゜フトりェア蚭定は完党に透過的でカスタマむズ可胜です。 Chef-Soloを䜿甚するず、開発者による远加のアクションを必芁ずせずに、事実䞊すべおのマシン必ずしも仮想ではないにプロゞェクトを数分でデプロむできたす。

私はあなたのコメントを聞いおうれしいです。

Source: https://habr.com/ru/post/J243589/


All Articles