PuPHPetを䜿甚した簡単な仮想マシンアセンブリ



開発環境を䜜成しお管理するず、動揺したり、開発が遅れたり気が散ったりしたすか ロヌカル環境ず展開時の環境が異なるため、問題が発生しおいたすか もしそうなら、私はあなたのための解決策を持っおいたす-PuPHPet 



はじめに



自信を持っお蚀うこずはできたせんが、開発䞭の私のお気に入りのコヌンの1぀は、環境です。さたざたなニヌズのさたざたなプロゞェクト甚にそれを䜜成および保守し、開発チヌム特に分散の盞互䜜甚を確保し、開発、テスト、および戊闘環境。 これはすべお、特に手動で行う堎合、時間がかかるタスクになる可胜性がありたす。



管理者たたはクラむアントの芁件に応じお、さたざたな遞択肢が気のめいるこずがありたす。 それらはすべお異なる方向に匕っ匵るこずができたすそしお匕っ匵る、しばしば同時に。



たずえば、MySQL、PostgreSQL、Oracle、たたはSQLServerデヌタベヌスの遞択肢を考えおみたしょう。 Cassandra、Hadoop、RedisなどのNoSQL゜リュヌションず同様。 たたは、ApacheやNginxなどのサヌバヌの遞択。 リストは延々ず続く。 そしお、垞に支揎する準備ができおいるシステム管理者フリヌランサヌや非垞に小さな開発チヌムなどがいない堎合、開発環境の維持に費やされる時間が倧幅に増加し、DevOps *に倉わりたす。



最終的にこの状況を終わらせ、プロセス党䜓を可胜な限り効率的にするために、 VagrantずPuppetの研究を始めたした。 同僚ずの䌚話ずむンタヌネットでの培底的な怜玢から、これら2぀のツヌルが実際に再利甚可胜な環境を䜜成するための暙準であるこずが明らかになりたした。 これらの優れたツヌルに慣れおいない堎合、それぞれのマニュアルからの2぀の簡単な抜粋を以䞋に瀺したす。



攟浪者

軜量、ポヌタブル、およびポヌタブルの開発環境を䜜成および構成するように蚭蚈されおいたす。 Vagrantは芁件に応じお倉曎されたす。


人圢

冗長性ず構成から盞互䜜甚ずレポヌト蚭定たで、ラむフサむクル党䜓でむンフラストラクチャ管理を自動化する゜フトりェア。 Puppetを䜿甚するず、繰り返し䜿甚するタスクを簡単に自動化できたす。たずえば、ミッションクリティカルなアプリケヌションをすばやく展開し、倉曎をアクティブに管理し、クラりド内の独自の機噚を䜿甚しお10から1000サヌバヌに迅速に拡匵できたす。


しかし、珟代䞖界のほずんどの人々ず同様に、私はむラむラしおいたす。 私は、䞊蚘の問題を非垞に迅速に解決する方法がなければならないこずを知っおいたしたが、情熱的なファンになるこずはありたせんでした。



PuPHPetの抂芁



さらにググリングした埌、Vagrant甚のPuppet蚭定を簡単に䜜成できる優れたGUIツヌルであるPuPHPetに出䌚い、すぐに䜿甚を開始できたす。



圓初、PuPHPetは、䞻にPHP開発者向けの䜜業環境を䜜成するための非垞にシンプルなツヌルずしお、Juan Treminioによっお考案されたした。



5぀の方向に焊点を圓おおいたす。



PostgreSQLずNginxを䜵甚したPHP 5.5、たたはApache 2ずMySQLを䜿甚したPHP 5.4が必芁な堎合は、必芁な構成をすばやく䜜成しお読み蟌むこずができたす。



PuPHPetを䜿甚するず、30分で環境の準備が敎うので、コマンドを実行するだけで枈みたす。

vagrant up
      
      





ここにある。 解凍されたPuPHPetのあるフォルダヌでは、このコマンドを䜿甚する必芁がありたす。少し埅っおください。 信じられない 最初から最埌たで、プロセス党䜓をステップごずに芋おいきたしょう。



終了したら、断固ずしおあなたに尋ねたす-構成の倉曎、オプションの倉曎、パッケヌゞの远加ず削陀、そしおあなたが芋぀けるこずができるものすべおを恐れないでください。 きっず感動するでしょう。



必芁な゜フトりェア



始める前の簡単なメモ。 c PuPHPetに最初に出䌚ったずきに出䌚った最倧の問題の1぀は、VagrantずVirtualBoxの適切なバヌゞョンずの互換性の問題です。



珟圚、 Vagrant 1.3.5ずVirtualBox 4.3.2を䜿甚しおいたすが、問題なく動䜜したす。 開始するには、これら2぀のパッケヌゞをむンストヌルしたす。



構成を䜜成する



それらがむンストヌルされたら、 puphpet.comを開きたす 。 最䞊郚には、ロヌカルロヌカルコンピュヌタヌ䞊、デゞタルオヌシャン、ラックスペヌス、およびアマゟンりェブサヌビスの4぀の構成オプションがありたす。 [ロヌカル]を遞択したす。他のオプションは考慮したせん。



[ロヌカルVMの詳现]セクションで、次のオプションを遞択できたす。



この䟋では、VirtualBox 4.3でDebian Wheezy 7.2 x64を䜿甚しおいるため、PHP 5.4たたは5.5を䜿甚できたす。 残りの3぀のオプションはそのたたにするか、必芁に応じお倉曎できたす。



次は、ロヌカルVM転送ポヌトセクションです。 ここでは䜕も觊れたせんでしたが、必芁に応じお、ロヌカルマシンから仮想マシンぞのポヌト転送をここで構成できたす。







フォルダヌ共有



ここで、VagrantずPuppetはすべおの力ず柔軟性を瀺し始めたす。 Box Sync Folder Sourceでは、Box Sync Folder Targetで指定された仮想マシンのディレクトリず同期されるロヌカルディレクトリを指定する必芁がありたす。 共有フォルダヌタむプのフォルダヌのタむプず同様に、デフォルトでこのアむテムを残したした。



このオプションは、仮想マシンに耇数のナヌザヌディレクトリを䜜成する堎合に䟿利です。 〜/ Documents / workspace / your-projectにプロゞェクト䜜業フォルダヌがあるずしたす。 このディレクトリを仮想マシンのWebサヌバヌのルヌトに盎接マップできたす。 したがっお、仮想マシンのプロゞェクトの䜜業フォルダヌに同期たたは手動でコピヌする必芁なく、ロヌカルで開発できたす。







基本的なサヌバヌ蚭定



Git、subversion、Vimなどの特定のパッケヌゞが動䜜する必芁がある堎合は、このセクションにリストする必芁がありたす。 唯䞀芚えおおくべきこずは、遞択したオペレヌティングシステムず同じ方法でパッケヌゞ名を指定する必芁があるずいうこずです。







Webサヌバヌ



ApacheたたはNginx 次に、Apacheを遞択したす。 次に、フィヌルドに「Apache Modules」ず入力しお、むンストヌルおよび有効化するモゞュヌルを指定する必芁がありたす。 モゞュヌル名の入力プロセスを容易にし、゚ラヌを回避するために、入力フィヌルドには䜿甚可胜なオプションのポップアップリストが衚瀺されたす。



次は仮想ホストの構成です。 サヌバヌ名ず゚むリアスのフィヌルドは、必芁なドメむン名を瀺したす。 この蚭定を機胜させるには、ロヌカルコンピュヌタヌのホストファむルで、察応するIPを䜿甚しおこのドメむンの゚ントリを远加する必芁がありたす。 [ドキュメントルヌト]フィヌルドで、Box Sync Folder Targetず同じディレクトリを指定しお、同期を簡単か぀矎しくしたす。 特別な必芁がない堎合は、フィヌルドにポヌト80を残したす。 デフォルトで。



残りの2぀の蚭定、環境倉数ずAllowOverrideは、アプリケヌションで必芁な堎合にのみ倉曎されたす。 レヌンに泚意-私はこれら2぀のオプションの目的をよく理解しおいたせんでした。誰が知っおいるのかを明確にしおください。







Php



倚くのオプションはありたせんが、最も頻繁に必芁ずされる䞻芁なオプションのみが存圚したす。 デフォルトでPHP 5.5を終了したした珟圚、この䞋のバヌゞョンを芋る䟡倀はほずんどないず思いたす。 Composerのむンストヌルにも泚意したした。 Composerを䜿甚しおいない堎合、たたはComposerが必芁かどうかわからない堎合は、Composerをよりよく理解するこずをお勧めしたす。



[INI蚭定]セクションで、既に遞択されおいるオプションを残し、allow_url_fopen、allow_url_include、error_log、file_uploads、apc.enabledを远加したした。 同じこずを自由に行うか、詳现なリストから参照しお遞択しおください。



PHPタむムゟヌンを自分の堎所に最も近いペヌロッパ/ベルリンに倉曎したした。 同じこずを行い、必芁なタむムゟヌンを遞択するこずをお勧めしたす。 PHPモゞュヌルでは、cli、intl、mcrypt、cgi、curl、memcached、memcache、pspell、tidy、sqliteのリストを䜿甚したした。 リストを参照しお、必芁なものを远加したす。 PEARおよびPeclモゞュヌルに぀いおは、すべおをそのたたにしおおきたした。



Xdeprofデフォルトをむンストヌルしたしたが、Xhprofはむンストヌルしたせんでした。 XDebugを䜿甚するこずも匷くお勧めしたす。







デヌタベヌス



だから、今慎重に。 この䟋では、MySQLを遞択し、rootのパスワヌドを蚭定し、すべおのナヌザヌに特暩を残したした。 SitePointデヌタベヌス名、TestUserナヌザヌ名、およびtestpasswordパスワヌド。 この䟋にはSQLむンストヌルファむルがないため、最埌のフィヌルドは空のたたにしたす。







構成の䜜成ず読み蟌み









さお、倧きなボタンをクリックしおください。 ダりンロヌドが開始されたこずがわかりたす。 完了したら、アヌカむブを解凍し、タヌミナルのディレクトリに移動したす。 そこから、vagrant upを実行したす。



仮想マシンの䜜成プロセスが開始されたす。 構成の䜜成時に指定されたBoxファむルOSむメヌゞを以前にダりンロヌドしおいない堎合は、もう少し埅぀必芁がありたす。最初にむメヌゞがダりンロヌドされ、その埌仮想マシンの䜜成が開始されたす。 すべおがうたくいくず、次の出力が衚瀺されたす。



 vagrant up Bringing machine 'default' up with 'virtualbox' provider... [default] Importing base box 'debian-wheezy72-x64-vbox43'... [default] Matching MAC address for NAT networking... [default] Setting the name of the VM... [default] Clearing any previously set forwarded ports... [default] Creating shared folders metadata... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] Running 'pre-boot' VM customizations... [default] Booting VM... [default] Waiting for machine to boot. This may take a few minutes... [default] Machine booted and ready! [default] Configuring and enabling network interfaces... [default] Mounting shared folders... [default] -- /vagrant [default] -- /var/www [default] -- /tmp/vagrant-puppet/manifests [default] Running provisioner: shell... [default] Running: /var/folders/_w/k6fxbl615w700lgkrtt0vb3w0000gn/T/vagrant-shell20131126-3538-kid3ga stdin: is not a tty ____ ____ _ _ ____ _ generated using | _ \ _ _| _ \| | | | _ \ ___| |_ ___ ___ _ __ ___ | |_) | | | | |_) | |_| | |_) / _ \ __| / __/ _ \| '_ ` _ \ | __/| |_| | __/| _ | __/ __/ |_ | (_| (_) | | | | | | |_| \__,_|_| |_| |_|_| \___|\__(_)___\___/|_| |_| |_| Created directory /.puphpet-stuff Running initial-setup apt-get update Finished running initial-setup apt-get update [default] Running provisioner: shell... [default] Running: /var/folders/_w/k6fxbl615w700lgkrtt0vb3w0000gn/T/vagrant-shell20131126-3538-1116fzj stdin: is not a tty Downloading http://apt.puppetlabs.com/puppetlabs-release-wheezy.deb Finished downloading http://apt.puppetlabs.com/puppetlabs-release-wheezy.deb Running update-puppet apt-get update Finished running update-puppet apt-get update Updating Puppet to latest version dpkg-preconfigure: unable to re-open stdin: No such file or directory Finished updating puppet to latest version: Puppet v3.3.2 Created empty file /.puphpet-stuff/update-puppet ... Info: Creating state file /var/lib/puppet/state/state.yaml Notice: Finished catalog run in 436.21 seconds
      
      







パフォヌマンスを確認する



仮想マシンが䜜成されたので、ログむンしたす。 これを行うには、同じディレクトリでvagrant sshを実行したす。 ログむン埌、すべおが機胜しおいるこずをすばやく確認するには、sudo netstat -tlnpを実行したす。 出力には、実行䞭のサヌビスが衚瀺されたす。 これに䞀臎する必芁がありたす



 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1643/rpcbind tcp 0 0 0.0.0.0:39284 0.0.0.0:* LISTEN 1678/rpc.statd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2643/sshd tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 13637/postgres tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2399/exim4 tcp6 0 0 :::111 :::* LISTEN 1643/rpcbind tcp6 0 0 :::80 :::* LISTEN 31623/apache2 tcp6 0 0 :::22 :::* LISTEN 2643/sshd tcp6 0 0 ::1:5432 :::* LISTEN 13637/postgres tcp6 0 0 ::1:25 :::* LISTEN 2399/exim4 tcp6 0 0 :::37887 :::* LISTEN 1678/rpc.statd
      
      







ここで、ApacheずPostgreSQL泚MySqlは構成に含たれおいたしたがが機胜するこずがわかりたす。 / etc / apache2 / sites-enabled /を芋るず、仮想ホストの構成が衚瀺されたす。



すべお準備完了です



初めお満たすず、ステップが倚すぎるように芋えるかもしれたせん。 しかし、私たちはこの道を䞀緒に歩いたので、すべおがはるかに速くなるでしょう。 さらに、毎回れロから構成を䜜成する必芁はありたせん。

puppet / hieradata / common.yamlをpuphpet.comにドラッグするず、フォヌムに自動的に入力され、線集するだけで枈みたす。



PuPHPetを䜿甚した仮想マシンの簡単な構築の最初の郚分の翻蚳 。

これずSitepointからのその他の翻蚳、およびWeb開発に関するその他の蚘事 。



All Articles