レンサバけもの道

271fad8d53cd1f12f2b4b6d38e3d7bd3?s=47 uzulla
February 10, 2020

 レンサバけもの道

uzulla
2020-02-10 PHPerKaigi 2020 day 1

271fad8d53cd1f12f2b4b6d38e3d7bd3?s=128

uzulla

February 10, 2020
Tweet

Transcript

  1. Ϩϯαό͚΋ͷಓ

  2. None
  3. uzulla Hachioji.pm ʮϝʔϧϑΥʔϜ౳Λॻ͍ͯ฻Β͍ͯͨ͠ʯ

  4. Ϩϯαό࢖ͬͯΔਓʁ (ڍखئ͍·͢) (༐ؾͷࢦඪ)

  5. Ϩϯαό࢖ͬͨࣄͳ͍ਓʁ (ڍखئ͍·͢) (ͲΕ͘Β͍ϚδτʔϯͰ࿩͢΂͖͔ࢦඪ)

  6. ʮϨϯαό͚΋ͷಓʯͱ͸ʁ • ! "࡞๏"͸ແࢹ͢Δ • " ϞμϯʢϞμϯͱ͸ʁʣΑΓʹ͢Δ • # ۀऀ͕ʮΑ͠ʯͱ͠ͳ͍Մೳੑ͕͋Γ·͢

  7. • ϨϯαόͰ΋ґଘͤ͞ͳ͍ʮී௨ʯΛ

  8. • "ڐՄΛಘΔͳɺँࡑͤΑ" • (அΒͳ͍͕ҟ༷ͳͷͰڐՄͮ͠Β͍) • DISCRAIMER • ! At your

    OWN risk. !
  9. ͝ଘ஌Ϩϯαόͱ͸ʁ • (جຊ)ߴू໿LAMPɺrootݖݶͳ͠ • Pros • ʢVHෳ਺࡞ΔͳΒʣ҆ͯ͘؅ཧෆཁ ϝʔϧͱDNS͕͍ͭͯ͘Δ • Cons

    • ݹͯ͘༥௨͕͖͔ͳ͍ˍṖͷ࡞๏ DNS͕͍͖ͭͯͪΌ͏
  10. ฏ͍ͨ͘͏ͱ • PaaSͱ͔͸VHҰݸʹ̍ܖ໿Ͱ͔͍ͨʂ • ಛʹɺ༡ͼͷίʔυΛಈ͔͓ͯ͘͠ͱ͔ • ΋͏OSɾϛυϧ΢ΣΞอक͸໘౗ • ͍͏΄Ͳrootݖݶ͍ΒΜͳ… ʢ˞ݸਓͷײ૝ʣ

    • ʢC֦ு͔ͭΘͳ͍ͳΒʣ
  11. Netlify౳͸… • DNSͳͲ͸ผʹඞཁ • GitωΠςΟϒɺઃఆ͕(஌ࣝ͋Ε͹)Ұॠ • ͔͍͍ͬ͜ • VHҰͭͰ̍ܖ໿ •

    ʮGitHub PagesͰ͍͍ͷͰ͸ʁʯ • PHP͏͔͝ͳ͍ !
  12. Heroku౳͸… • (ͪΌΜͱॻ͚͹)εέʔϧΞ΢τͰ͖Δ • ϛυϧ΢ΣΞ͕๛෋ • σϕϩούʔϑϨϯυϦʔ • ENV͕ݸผʹઃఆ͠΍͍͢౳ •

    ͔͍͍ͬ͜ • VHҰͭͰ̍ܖ໿
  13. Ϩϯαό͸… • εέʔϧΞ΢τͰ͖ͳ͍ • ஗͍ʢॾઆ͋Δʣ • VHͨ͘͞Μͭͬͯ͘΋ఆֹʂ • DBͨ͘͞Μͭͬͯ͘΋ఆֹʂ •

    (ϓϥϯʹΑΓ·͢) • ؅ཧը໘ϙνϙνˍ͠͹͠଴ͭ͸ͩΔ͍
  14. ۙ೥ͷϨϯαό • ࣮࣭WordPressʢ΍CMSʣ༻؀ڥ • ʮWPಈ͚͹͑͑΍Ζʯͱ͍͏Կ͔͕ݟ͑Δ • WP͕ʮਅ໘໨ʯͰҾ͖ͣΒΕ͍ͯΔ(?) • → ݁ՌతʹPHPͷόʔδϣϯ͕Ξοϓ͍ͯ͠Δ

    • → ଎౓ͳͲओு࢝͠Ίͨ
  15. ࢲͱϨϯαόͷ෇͖߹͍ • ࢓ࣄͰWordPress • ࢓ࣄͰCMS(OSS/ಠࣗ) • ࢓ࣄͰϖϥΠνɾίʔϙϨʔταΠτ • ϝʔϧαʔόʔ •

    झຯͰ࣮ݧɾ։ൃɾσϞͳͲ
  16. ॴͰϨϯαό͸ • ࣮͸ʢେ఍ʣsshͰ͖Δ • ཧ༝ʢधཁʣ͸ෆ໌ɺҰ෦ͷϨϯαό͕ੲ͔Β Ͱ͖ͨͷͰԣฒͼͷͨΊʁ • Ͳ͜΋ʮࣗݾ੹೚ʯͱ໌ه

  17. ஫ • sshͰ͖ͳ͍Ϩϯαό͸ආ͚Δ • ແྉϨϯαό • ҆Ձϓϥϯ • ʮΕ͖͋͠ΔΏ͍͠ΐ͋Δۀऀʯ •

    ͜ΕΒͷ࢖͍Έͪ͸ແ͍ʢภݟʣ
  18. Φν • SSH࢖͏ɺNO MORE FTP • ϞμϯͳσϓϩΠΛ͢Δ • ʮ޻෉ʯΛ͢Δ •

    Τϥʔ • ϩά • ͜ΕͰେ׆༻ʂ
  19. sshɾγΣϧ

  20. ݁࿦ɿ ࢖͓͏ʂʂʂ • ࠓ͸Ͳ͜Ͱ΋͋Δ(࠷௿ͷϓϥϯͰͳ͚Ε͹) • ͭΒ͞ͷׂ̑͸γΣϧΛఘΊΔ͜ͱʹ͋Δ • Τϥʔϩά͕tail -fͰ͖Δ͚ͩͰ΋ҧ͏

  21. ٯʹΞϯνύλʔϯʮFTPࣗಈԽʯ • ʢ҉߸Խͱ͔Ҏલʹʣ • ਗ਼͘ਖ਼͍͕͠ɺແବͰ͢(ݸਓͷओு) • ͦͷಓ͸མͱ݀͠ʹ௨͍ͯ͡Δ • ଞͷ؀ڥͱͷϫʔΫϑϩʔ͕ͣΕ͗͢Δ

  22. Ͳ͏׆༻͢Δ͔ʁ • লུ • ϩάΠϯͨ͠ΒखݩͷPCͱಉ͡ϊϦͰ͍͜͏ʂ • ϩάΠϯͯ͠vi͠·͘Ζ͏ʢʁʁʣ

  23. Ͱ΋ίϚϯυ͕ແ͍orݹ͍ • ͨͱ͑͹git 1.8.3ͱ͔… • ݹ͍ͳΒɺϏϧυͪ͠Ό͓͏ϗττΪε • ͳΜͱେ఍ϏϧυͰ͖Δ؀ڥ͸͋Δ $ wget

    https://ʙ/git-2.9.5.tar.gz $ tar xvzf gitʙ; cd gitʙ $ configure --prefix=$HOME/local/bin $ make -i install # -i is ignore $ echo "PATH=$PATH:~/local/bin/" >> ~/.bashrc
  24. root͕ͳͯ͘΋Ͳ͏ʹ͔ͳΔ • $HOMEʹ͍ΕͪΌ͑͹͍͍ΜͩΑʂ • --prefix෇͚ͯϏϧυ • PATH௨ͤ͹͍͍͡ΌΜ͍͍͡ΌΜ • ʢͨͱ͑͹ʣaws-cliͱ͔s3cliͱ͔΋͍Εͯ͜ •

    tarͱ͔͕GNUͰͳ͍? ͍Ε͍ͯ͜͏ʂ
  25. ϥϯλΠϜґଘπʔϧ͸Ͳ͏͢Δʁ • Perlͱ͔Pythonͱ͔ • ʮ(prefix෇͖Ͱ)ϥϯλΠϜΛϏϧυʯ • ݹ͍ͷΛແཧͯ͠࢖Θͳ͍΄͏͕͍͍ • ·͋PHPͰॻ͚͹͍͍Μ͡ΌͶʁ •

    ͋Δ͍͸go langͷπʔϧΛ͑ΒͿ
  26. ʮͱ͜ΖͰ Linuxbrew͸ʁʯ • ґଘΛ͍Ε͍ͯ͘ͱϦιʔε੍ݶʢʁʣͰࢮ͵ ʢྫɿConoHa WINGʣ • (جຊ)૸Βͳ͍ʢྫɿFreeBSDͷ͘͞Βʣ • ੈք͸ͦ͜·Ͱ͸؁͘ͳ͔ͬͨ

    • ಈ͘ॴ΋͋Δ͔΋Ͷʂ • ͋Δ͍͸΋ͬͱ޻෉͢Δʢলུʣ • ۀऀ͞Μ͕Μ͹ͬͯʂ !
  27. ϨϯαόCLIͷ஫ҙ • ࣗݾ੹೚ • ṖͷϦιʔε੍ݶʹ஫ҙ • ಥ೗ϓϩηε͕ࢮ͵ • ࢦඪ͕͸͖ͬΓͯ͠ͳ͍ ࣗݾ੹೚͔ͩΒ͔ͨ͠ͳ͍ʢʁʣ

    • ۀऀ͞Μ͕Μ͹ͬͯʂ
  28. σϓϩΠ

  29. ͭΒ͞ͷׂ͕̏͜͜ • ͓࡞๏ͷʮFTP & Ṗͷchrootʯ • FTP͸ݖݶ͕Ψό͍ɺϛεͰଈࢮ ʢϓϥϯʹΑΔ͕ɺID͕Ұݸ͔͠ͳ͍ʣ • ṖͷσΟϨΫτϦߏ੒

    • ܁Γฦ͠ʹͳΔ͕ɺ͓࡞๏͸ແࢹ͠Α͏
  30. • ී௨ʹ • ʢsshͯ͠ʣgit pull • Shell Script/Makefile • ansible(౳

    sshࣗಈԽ) • Deployer • ͔ͭ͑͹͍͍ΜͰ͢Α
  31. ॳखɿنఆͷDocRootΛແࢹͤΑ • ۀऀͷσϑΥΛແࢹͤΑ • public_htmlҎԼʹϑΝΠϧΛஔ͔ͳ͍ • ద౰͓͍ͯSymlink͠Α͏ • public΍htdocsΛln -s

    • (FollowSymlinks͕Offʁۀऀม͑Α͏͆)
  32. ͨͱ͑͹ྫ # Ϩϯαόͷઃఆ͸লུ $ mkdir ~/repo; cd ~/repo $ git

    clone git@github.com:uzulla/Mizam.git $ cd Mizam $ make dev-setup # composer instlal౳ $ ln -s ~/repo/Mizam/public/ \ ~/www/pktest.8oji.tokyo/public_html
  33. ΫϨσϯγϟϧ • Tokenͱ͔ΛͲ͜ʹ࢓ࠐΉ͔ʁ • VPSಉ༷ʹ dotenv • ʮ্Ґʯͷ.htaccess׆༻ # (publicͷΈɺwwwҎԼʹln

    -sͨ͠؀ڥͰʣ # ~/www/pktest.8oji.tokyo/.htaccess SetEnv TOKEN xxxxxx # $_ENVͰͳ͘getenv()Ͱऔಘ͢Δ΄͏͕ແ೉ # symlinkΛͨͲΒͳ͍ͷͰɺ஫ҙ # cli͋ΔͳΒແཧ͔ͳʔw
  34. ͭ·Γ # Appͷ git cloneઌ ~/repo/Mizam/ # ຊ෺ͷhtdocs ~/repo/Mizam/public #

    Ϩϯαόઃఆͷhtdocsʢln -s͢Δʣ ~/www/pktest.8oji.tokyo/public_html # App dirͷʮ֎ʯʹɺenv༻ͷ.htaccessΛͭ͘ΔʢOPʣ ~/www/pktest.8oji.tokyo/.htaccess
  35. SymlinkΛ࢖͏ࡍͷ஫ҙ • ʮͨͲΓํʯ͸؀ڥͰҟͳΔͷͰ஫ҙɾ׆༻ • PHPͷ__DIR__͸SymlinkΛḷΔ realpath()૬౰ʹͳΔ →configϑΝΠϧ͸htdocsҎԼͷඞཁ͸ͳ͍ ※ ެ։σΟϨΫτϦʹ͢Δ৔߹͸஫ҙ •

    Apache͸Symlink͔ݟͳ͍ (.htaccessͷPathͳͲ)
  36. ϨϯαόͰ΋Deployer • ssh͕Ͱ͖ΔͷͰɺී௨ʹಈ͘Αʂ • (…ࢲͷͨΊͨ͠ݶΓͰ͸) • (͘͞Β͸csh͔ͩΒɺbashʹchshඞཁ) • deployer͸ϦϞʔτ͕bashલఏΆ͍ •

    DBϚΠάϨʔγϣϯπʔϧ΋ಈ͘ • ྫɿgithub.com/uzulla/deployer-phinx-test
  37. DBૢ࡞ • phpMyadminͱ͔͔ͭͬͯΒΕͳ͍Ͱ͠ΐ • ී௨ʹssh ϙʔτϑΥϫʔυͯͭ͠ͳ͝͏ • Sequel Proͱ͔DBeaverͱ͔… •

    αʔόʔ্Ͱphinxͱ͔΋ಈ͘Αʢલड़ʣ
  38. (CI/)CD • ͔͍͍ͭͬͯΜͩΑʂʢ͍ͭ͜͠ʣ • ʢSymlinkΛ࢖͏ͳΒʣී௨ͷVPSͱ΄΅ಉ༷ • CIͰσϓϩΠ • GitHub Ac5ons

    • ྫɿNetlify ϨϯαόͰͶͬͱΓͱͨ͠ϓΞϚϯ ζܧଓతσϓϩΠ
  39. (GHA౳Ͱ)CDʹ͢Δͱ… • GitHubίϛοτݖݶͰΞΧ΢ϯτ؅ཧͰ͖ͯศར • νʔϜʹFTPΞΧ΢ϯτΛࢃ͔ͳͯ͘ྑ͍ • ௚઀αʔόʔ಺ϑΝΠϧΛ͍͡Βͳ͍ • ʢ͍ͬͨ͡ !

    ͕Ͱ͖ͯͯ΋diff͕ݟΕΔʢʣʣ
  40. ↪ ંฦ͠஍఺ ͜͜·Ͱʹ࣭໰͕͋Ε͹ϠδͰ͍ͩ͘͞

  41. VHʹ͍ͭͯ ʢͱ͍͏͔DNSʹ͍ͭͯʣ

  42. ϨϯαόͱDNS͸ີ݁߹ • ίϯύωͰVHͭ͘Δ→AϨίʔυ͕ੜ͑Δ • NameServerΛϨϯαόʹ༬͚Δ͔͠ͳ͍ • ʮNSΛ༬͚ͨ͘ͳ͍ʯʢҰ෦ͷਓؒஊʣ • ϨϯαόͷϨϯλϧDNS͸௿ػೳ •

    ଟ͘ͷϨϯαό͸֎෦NSΛߟྀͯ͠ͳ͍ɺͭΒ͍
  43. DNS͕ࣗ෼ͰͲ͏ʹ͔Ͱ͖ͳ͍ͱ… • ͢ͳ͓ʹෆศ • ৭ʑͳΠϯϑϥʹϨϯαόΛ૊ΈࠐΈͮΒ͍ • Route53Ͱ"ALIAS"࢖͍͍ͨ౳ • CloudFlareʢ౳ʣ͕͔ͭ͑ͳ͍ •

    ۃكʹɺ༬͚ͳ͍ͱVH͕͖Εͳ͍৔߹΋͋Δ • ֤ࣾؤுͬͯ΄͍͠ !
  44. େ఍͸Ͳ͏ʹ͔ಈ͘ • େ఍CNAME͔A͔NSΛΉ͚Ε͹ಈ͖͸͢Δ • ·ΕʹϨϯαόͷϗετมߋͰഁ໓͢Δ͜ͱ΋ • ఘΊΑ͏ʢʁʁʁʣ • Ϩϯαό͕ఏڙ͢ΔແྉSSL(Let's Encrypt౳)

    ͕ಈ͔ͳ͍͜ͱ͕͋Δ • ߟྀͯ͠ΔͷͰಈ͘ۀऀ΋ʢ͘͞Β౳ʣ
  45. Tips ઃఆͷௐ΂ํ • Ϩϯαόͷࢦ͕ࣔ͋Ε͹ͦͷΑ͏ʹ • ͳ͚Ε͹͠Β΂ͯCNAMEΛઃఆ͢Δ • ApexυϝΠϯͳΒ֮ޛͯ͠AΛઃఆ # ௐ΂Δྫ

    $ dig {ίϯύωͰ࡞ͬͨυϝΠϯ} @{ʮϨϯαόͷʯNS}
  46. $ dig pktest.8oji.tokyo @ns1.dns.ne.jp # ུ ;; ANSWER SECTION: pktest.8oji.tokyo.

    3600 IN A 59.106.19.66 # ;; AUTHORITY SECTION: pktest.8oji.tokyo. 3600 IN NS ns1.dns.ne.jp. pktest.8oji.tokyo. 3600 IN NS ns2.dns.ne.jp.
  47. $ dig www.example.com @ns.example.com # ུ ;; ANSWER SECTION: www.example.com.

    3534 IN A XXX.XXX.XXX.XXX ʔʔʔ www.example.com. 3534 IN CNAME www1234.example.jp
  48. ϩά

  49. ΤϥʔϩάͷͭΒ͞ • ͭΒ͞ͷׂ͕̏͜͜ɺຊ౰ʹශऑ • ίϯύωͰݟΔɺFTPͰDLɺݕࡧͳ͠ɺ஍ࠈ • (େ఍)ApacheͷErrorLogʹҰॹʹग़͍ͯΔ • ͦ΋ͦ΋Offͷ͜ͱ΋ଟ͍

  50. ͳͷͰ • ࠷௿ݶ • ಠࣗͷPathʹग़ྗ͢Δ ʢίʔυ͕յΕ͍ͯΔͱؾ͚ͮͳ͍ͷͰʣ ίʔυͷ֎ɺphp.ini౳ʹઃఆ͢Δ΂͖ ʢphp.ini, .htaccess΍.user.iniʣ •

    E_ALLʹ͠·͠ΐ͏
  51. ͰɺͲ͏΍ͬͯݟΔʁ • ૉ௚ʹssh Ͱtail -fͨ͠Γgrepͨ͠Γ • Ξϯνύλʔϯ:ΤϥʔϩάΛࠩ෼DL • REST (Restart)

    • ͳΈ͙ͩ·͍͠ • ਓʹ͸΍Βͳ͚Ε͹͍͚ͳ͍࣌΋͋Δ…
  52. Tips:FTPͷREST # REST → RESTART # lftp ίϚϯυͷ৔߹ $lftp hoge@example.jp

    # ॳճDL > get large.log # ࠩ෼DL > reget large.log
  53. s"pʹ΋͋ΔΑ $ sftp hoge@example.jp sftp> get large.log Fetching /path/to/large.log to

    large.log sftp> reget large.log Resuming /path/to/large.log to large.log
  54. ΋ͬͱͪΌΜͱ͍ͨ͠ • ֎෦ϩάαʔϏεͷ׆༻ • CloudWatch Logs • PaperTrail • Rollbar(Τϥʔ͸…?)

    • ౳ • Fatal͕ͰͨΒSlackʹ௨஌ඈ͹͢ͳͲͰ͖Δ
  55. ϩάͷૹΓํ • File tail͸࢖͑ͳ͍… • ʮಈ͚͘Ͳʢ͈́ʯ • େ఍ϓϩηεͳͷͰɺෆࢥٞͳྗͰࢮ͵ • ͳͷͰ

    • Τϥʔɾྫ֎ॲཧʹॻ͘ • ࣗྗͰtailͯ͠ૹΔ
  56. Τϥʔɾྫ֎ॲཧʹॻ͘ • ·ͬͱ͏ͳίʔυͳΒ͜ΕͰOKͷ͸ͣ • (ޙड़ͷྫࢀরʣ • ஫ҙɿૹ৴ෛՙ͸ʮߴ͍ʯ • No'ceΈ͍ͨͳͷ͸ૹΒͳ͍ɺຊ౰ʹඞཁͳ΋ͷ ͚͓ͩ͘Δ΂͖ɻ

  57. ࣗલͰΠϕϯτ࣌ʹૹΔ • CloudWatch logྫ • github.com/uzulla/send-log-to-cloudwatch-log- sample.php • maxbanton/cwhͰmonologಉ༷ •

    (Մೳ͕ͩࣗલૹ৴͸݁ߏ໘౗ ɹnextSequenceToken͕ͭΒ͍ʣ
  58. FATALΛͲ͏͢Δ͔ʁ • FatalͰࢮ͵ͱΞϓϦ͔Βඈ͹ͤͳ͍ • ΤʔδΣϯτͷৗற͸ʮେ఍ʯͰ͖ͳ͍ • ۪௚ʹϩά૿෼ΛCronͰૹΓ͚ͭΔ͔͠ͳ͍… • (ࡶͳͷͰऔΓ͜΅͠͸ͪΐͬͱఘΊΔ) •

    PHP͕ѼઌࢦఆͰSYSLOGΛͳ͛ΒΕΕ͹φΞ… ʢpapertrail͸TLSͰSYSLOGΛड͚ΒΕΔʣ
  59. CronͰ૿෼ϩάΛૹΔ • ϩά͕૿͑ͨ෼͚۪ͩ௚ʹૹΔ • Papertrailྫ • github.com/uzulla/send-log-to-papertrail-cron.php • cronͷMAILTOΛͪΌΜͱઃఆ͠Α͏ •

    log truncate͸ผ్Cron౳Ͱ
  60. ϩʔςʔγϣϯʹ͍ͭͯ • CronͰεΫϦϓτճ͔͢͠ͳ͍… • औΓ͜΅͠΍յΕ͕க໋తͳϩά͸ผͰ • ʮக໋తϩά͕େྔʹग़ΔΞϓϦͱ͸…͏͝͝ʯ #!bash cat error.log

    | gzip -c \ > /path/to/error.log.`date +%w`.gz :> /path/to/error.log
  61. ϩάʹ͍ͭͯ • க໋తϩάͱग़͠෼͚͢Δͱָ # ҙਤͤͣʮͰͪΌͬͨʯϩά͸શ෦க໋తͰ͠ΐʁ ini_set('error_log','/path/to/fatal_error.log'); # ʮҙࣝతʹʯଞϑΝΠϧ΁ʢmonologͰ͍͍Αʂʣ error_log( date("Y/m/d

    H:i:s")." - ".$message."\n", 3, '/path/to/app_error.log');
  62. ϨϯαόͷϩάपΓ͸ࠜຊతͳղܾࡦ͕ͳ͍ • ͩΕ΋ڵຯ͕ͳ͍Μͩͳʂ • WPͱ͔ECCUBEͰΤϥʔϩάͪΌΜͱݟͯΔਓ ͸͍Δͷ͔ʁ • ʮԶΈ͍ͨͳϨϯαόͰϩάݟ͍ͨ෗Ε໺࿠ɺ ଞʹɺ͍·͔͍ͬͯ͢Ͷʔ͔ɺ͸͸ʯ •

    ۀऀ͞Μ͕Μ͹ͬͯʂʂ
  63. Ϩϯαόతͳ༨ஊ • ϑΝΠϧͷύʔϛογϣϯʹ஫ҙ͢Δ͜ͱ • ۀऀʹΑΔ͕ɺΓΖΜ͡ΐ͏ಉډਓʹʮΈ͑ͪΌ ͏ʯͷͰ • (ಉډͰɺPATH͕Θ͔ΓɺPermissionʹΑΔ͕) • ʮແҙຯͳ755͸΍ΊΑ͏Ͷʯ

  64. όοΫΞοϓ

  65. εΫϦϓτॻ͍ͯࣗ෼Ͱ΍Ζ͏ • ྺ࢙తʹ͍ͬͯɺۀऀͷόοΫΞοϓΛ໡৴ͯ͠ ͸͍͚ͳ͍ • ଟॏͰͱΓ·ͬ͠ΐ͍ • CronͰݻΊͯS3ʹ͋͛Ε͹͓̺ • ʮόοΫΞοϓ͠΍͍͢ʯΑ͏ʹ࡞Ζ͏

    • (ϨϯαόʹݶΒͳ͍͕)
  66. • ۪௚ʹγΣϧεΫϦϓτ • tar.gzͰݻΊΔ • Symlinkҡ࣋ • DB΋ • mysqldump͕·Εʹͳ͍͜ͱ΋͋Δɺ൵͍͠

  67. • ετΞઌ͸֎෦ʹ • ී௨ʹs3cliͱ͔͍ΕΑ͏ʢԿ౓໨ͩʁʣ • S3ଆ͸ϥΠϑαΠΫϧ͕͋ΔͷͰ࠷ߴʂʂ (ੈ୅؅ཧΛؙ౤͛Ͱ͖Δ) • Amazon S3ͰΦϒδΣΫτͷ༗ޮظݶΛઃఆ

  68. ϛϥʔతʹखݩʹམͱ͍ͨ͠ͱ͖͸ • FTPͤͣɺrsync͕͍͍ͧ • (ssh+rsyncͬͯຊ౰ʹศརͩΑͶ…) $ rsync -auz -e "ssh"

    --progress \ user@example.jp:app app_copy # ͓޷ΈͰauvzͰ΋Α͍͔ͱ • ໪࿦ٯ΋Ͱ͖·͕͢ɺrsyncʢʹݶΒͣϛϥʔΞο ϓϩʔυʣ͸ࣄނΓ΍͍͢ͷͰɺdry-runͯ֬͠ೝ ͔ͯ͠Βʹ͠Α͏Ͷɻ
  69. ؂ࢹ

  70. ֎ܗ؂ࢹ • ಛʹίϝϯτͳ͠ɺී௨ʹͦ͏͍͏αʔϏε͔ͭ ͑͹ΑΖ͍͠ • Up$me Robotͱ͔

  71. ϝτϦοΫ • ϨϯαόͰϝτϦοΫͱ͸…͏͙͙಄͕… • Disk༰ྔ͘Β͍͸CronͰ͕Μ͹Ε͹OK • ϩάʹ࣮ߦ࣌ؒΛ࢓ࠐΜͰૹ৴ͱ͔…͏ͬ಄͕ • … •

    ͤΊͯෛՙ੍ݶ͖ͨͱ͖ʹ஌Γ͍ͨ… • APIͰऔΓ͍ͨ…ۀऀ͞Μ͕Μ͹ͬͯʂ
  72. ॴḨϨϯαό • ෛՙΤϥʔ͸֎ܗ؂ࢹͰؾ͔ͮ͘͠ͳ͍͔΋ • ॴḨϨϯαόɺఘΊ΋؊৺ • ۪௚ʹΞϓϦνϡʔχϯά͠·͠ΐ͏ • CDNΦϓγϣϯ΍֎෇͚CDN΋ݕ౼͠·͠ΐ͏

  73. ։ൃ؀ڥ

  74. ϨϯαόͰ։ൃͯ͠͸ͳΒͳ͍ • εςʔδϯάఔ౓ʹͯ͠ɺdev͸΍Ίͱ͜͏ • LAMPͳΒ؀ڥखݩʹͭ͘ΕΔͰ͠ΐ • ϞμϯͰ؀ڥґଘͷͳ͍PHPΛॻ͖·͠ΐ͏ • Ͱ͖ΔͰ͠ΐ͏ʁʢʣ

  75. • ؀ڥΛ࡞ΔͳΒDockerΑΓVMͷ΄͏͕Α͍ • (େ఍ɺઃఆΛ͜ͶΔ͜ͱʹͳΔͷͰ) • ൿ఻ͷVM͕Ͱ͖Δ… • ansibleͰఆٛ͢Δͱ͔ͨ͠Β͍͍Α • ݹͷDistroͰ࡞ΔͷͩΔ͍ͳʔ͆

    • ಠࣗύον΍Distroෆ໌ͳ͜ͱ΋ • Linuxྗ͕໰ΘΕΔʢʁʣ
  76. • ϙʔτϑΥϫʔυͰຊ൪ͷDBΛखݩ؀ڥʹͭͳ͙ ͘Β͍͸ී௨ʹͰ͖Δ • Phinxͱ͔ϚΠάϨʔγϣϯπʔϧ૸ΒͤΔͷ΋Ͱ ͖Δ • ϨϯαόΛಛผͩͱࢥΘͳ͍͜ͱ͕؊ཁ

  77. མͱ݀͠ • ϛυϧ΢ΣΞઃఆʹ஫ҙ • ಛʹMysqlͷsql modeͳͲ • php.ini͸ࠜੑͰἧ͑Δ • php.iniͷ࿩

    - h2ps:/ /speakerdeck.com/uzulla/ php-dot-inifalsehua
  78. ·ͱΊ

  79. • ΋͏VPSӡ༻ͨ͘͠ͳ͍Ͱ͠ΐ… • ʢ̍υϝͰ̍ܖ໿ͷʣPaaSߴ͗͢ϫϩλ • ϨϯαόΛrootͷͳ͍Linuxͱͯ͠ݟΔ • ࡞๏͸ແࢹ͠Α͏ʢࣗݾ੹೚ʣ • ऑ఺Λਖ਼͘͠ೝࣝ͠Α͏

    • ͏·͘΍Ε͹ɺ͍͏΄ͲෳࡶͰ͸ͳ͍
  80. ߋʹৄ͍͠ͱ͜Ζ͸ • Ұॹʹ͚΋ͷಓΛ੾Γ։͖·͠ΐ͏ • ͓ؾܰʹձ৔΍SNS౳Ͱ͝૬ஊ͍ͩ͘͞ʂ • ͜͏͍ͬͨࣄʹલ޲͖ͳϨϯαόۀऀ༷΋ʂʂ

  81. Φν • ʮ͜ͷҟৗͳ౒ྗͰ΋ɺΑͯ͘τϯτϯͰ͸ʁʯ • ʮͦΕͳʯ • ͕ۚ͋Δਓ͸ͤͤ͜·͍͜͠ͱΛ͠ͳͯ͘Α͍

  82. ׬ Ҏ͓߱·͚

  83. ConoHa WING • ࠷͔ۙͭͬͨ • ॳظແྉɺैྔ՝ۚϓϥϯ͕͋Δʂʂ • ϨϯαόΛͨΊ͢ͷʹ͸ѱ͘ͳ͍ • ࠷௿ར༻ظ͕ؒͳ͍ʂʂ2ԁ/࣌ʂ

    • CLIͷ੍ݶ͕ṖʢLinuxbrew͕མͪΔʣ • ॳظͳ͠࠷௿ར༻ظؒͳ͠ʂ
  84. Tips • ʮϨϯαόۀऀ໊ʯͰ΍ΓํΛάάΔͳ • 95%͕ݹ͍όουϊ΢ϋ΢ • ʮී௨ʯͷ΍ΓํΛ࣋ͪࠐΈ·͠ΐ͏ • ʮ͜ͷτʔΫࣗମ͕όουϊ΢ϋ΢ͳͷͰ͸ʁʯ

  85. ϚωʔδυαʔϏε࢖͓͏ • CDN > ෛՙ੍ݶ • ϝʔϧૹड৴ > IPϒϩοΫճආɺSPFɺDKIMର ԠɺWebhook

    • ؂ࢹ • ϨϯαόΑΓߴͭ͘͘ͷ͸΢έΔ
  86. PHP͕͏͚͝͹… • JVM͕͏͘͝ʂʢʁʣ • ࡢ೔ൃද͞ΕͨΊ΋Γʔ͞Μͷphp-java • h+ps:/ /github.com/php-java/php-java • ϨϯαόͰJVMݴޠ͕ಈ͘ʂʂʢʁʁʣ

    • ΍ͬͯΈΑ͏ʂʢࡢ೔໷23࣌͝Ζʣ
  87. None
  88. ࢒೦ʢࡢ೔΍ͬͯବ໨ͩͬͨ͆ʣ • kotlin?͸͏͘͝Β͍͠Αʂ • (CGIΈ͍ͨͳಈ࡞ʹͳΔ͚Ͳ͆)

  89. PHPͷόʔδϣϯΞοϓ • ͍͖ͳΓ੾Γସ͑ͳ͍ • खݩ؀ڥͰςετΛ·Θͯ͠Ҡߦ४උ͢Δ • Ϩϯαό಺ͰUnitTestΛ·Θ͢ͷ΋͋Γ • େ఍৭ʑೖͬͯΔPHPͷ࣮ߦύεʹ஫ҙ ʢޙड़ʣ

    • ໷தʹͬͦ͜Γ੾Γସ͑ͯࢼͯ͠ΈΔʢসʣ
  90. PHPόΠφϦͷ৔ॴ • whichͰ୳ͤͳ͍ɺ֤ࣾͰόϥόϥͰ͢ • Un-documentͳ͜ͱ͕ଟ͍ͷͰɺphpinfo()ݟΔ ౳ ͨͱ͑͹खݩͷ͘͞Βͷ৔߹ $ /usr/local/php/7.3/bin/php -v

    PHP 7.3.12 (cli) (built: Dec 5 2019 10:06:07) ( NTS ) $ /usr/local/php/4.4/bin/php -v PHP 4.4.9 (cli) (built: Dec 4 2019 14:37:37) • UnitTest࣌ʹ͸ඞͣόΠφϦͷύεΛࢦఆ͢Δ͜ͱ
  91. νϡʔχϯάʢসʣ • େ఍(ڞ༗ͱͳΔ)DB͕ʢ࣌ؒଳͰʣ஗͍ • MysqlΑΓSqlite͕଎͍͜ͱ΋ • సૹྔͰౖΒΕΔɺCDN΍Ξηοτ഑৴Λ෼͚Δ • େ༰ྔσΟεΫͷ࢖͍Έͪ…͏͝͝ •

    ϨϯαόͷϓϥϯΞοϓ͸ޮՌͳ͍ࣄଟ͍… • ෛՙ໰୊ͳΒɺૉ௚ʹPaaSͱ͔ʹҾͬӽͦ͏
  92. ࢼ༻ظؒ • େ͖ͳ੠Ͱ͸͍͑ͳ͍͕… • ͪΌΜͱղ໿͢Ε͹ʂԿ౓Ͱ΋ʂࢼ༻Ͱ͖Δʂ͜ ͱ͕ଟ͍ʂ • (ݸਓͷײ૝Ͱ͢) • ͱΓ͋͑ͣࢼ༻ͯ͠Έ·͠ΐ͏

    • ʢॳظඅ༻จԽͲ͏ʹ͔ͳΓ·ͤΜ͔Ͷʣ
  93. Ϩϯαό֤ࣾ΁ͷࢲ৴ • WordPressҰຊ଍ʹͳͬͯ·ͤΜ͔ʁ • PHPͱ͍͏͢͹Β͍͠ݴޠΛಈ͔͢ʮϞμϯͳʯ Πϯϑϥͱͯ͠΋͕Μ͹Γ·ͤΜ͔ʁ • ֤ࣾʮதͷਓʯ͸ʮΘ͔ͬͯΔʯਓ͕ଟ͍ͷͰɺ Θ͔ͬͯΔͷͩͱ͓΋͍·͕͢ •

    ঎ചͱͯ͠೉͍͠ͱ͍͏͓࿩͸·͋͋ΔΜͰ͠ΐ ͏͕…
  94. ฏͨ͘ݴ͏ͱ • DocRootͱϩά͚ͩͲ͏ʹ͔ͳΓ·ͤΜ͔Ͷ • LinuxbrewʢHomebrewʣೖΔͱ͘͢͝خ͍͠