éçºç°å¢ãäœæããŠç®¡çãããšãåæºããããéçºãé
ãããæ°ãæ£ã£ããããŸããïŒ ããŒã«ã«ç°å¢ãšå±éæã®ç°å¢ãç°ãªããããåé¡ãçºçããŠããŸããïŒ ãããããªããç§ã¯ããªãã®ããã®è§£æ±ºçãæã£ãŠããŸã
-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ã€ã®æ¹åã«çŠç¹ãåœãŠãŠããŸãã
- å±éïŒã¡ã¢ãªãIPã¢ãã¬ã¹ãããŒã転éïŒ
- åºæ¬çãªãµãŒããŒèšå®
- PHPïŒã¢ãžã¥ãŒã«ãã©ã€ãã©ãªãæ§æèšå®ïŒ
- ããŒã¿ããŒã¹ïŒPostgreSQLãMySQLïŒ
- WebãµãŒããŒïŒApache 2ãNginxïŒ
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ã®è©³çŽ°]ã»ã¯ã·ã§ã³ã§ã次ã®ãªãã·ã§ã³ãéžæã§ããŸãã
- ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã
- ãã¹ãå
- IPã¢ãã¬ã¹
- RAMãµã€ãº
ãã®äŸã§ã¯ã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éçºã«é¢ãããã®ä»ã®
èšäº ã