Upgrade to Pro — share decks privately, control downloads, hide ads and more …

レンサバけもの道

uzulla
February 10, 2020

 レンサバけもの道

uzulla
2020-02-10 PHPerKaigi 2020 day 1

uzulla

February 10, 2020
Tweet

More Decks by uzulla

Other Decks in Technology

Transcript

  1. Ϩϯαό͚΋ͷಓ

    View Slide

  2. View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  6. ʮϨϯαό͚΋ͷಓʯͱ͸ʁ

    !
    "࡞๏"͸ແࢹ͢Δ

    "
    ϞμϯʢϞμϯͱ͸ʁʣΑΓʹ͢Δ

    #
    ۀऀ͕ʮΑ͠ʯͱ͠ͳ͍Մೳੑ͕͋Γ·͢

    View Slide

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

    View Slide

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

    !
    At your OWN risk.
    !

    View Slide

  9. ͝ଘ஌Ϩϯαόͱ͸ʁ
    • (جຊ)ߴू໿LAMPɺrootݖݶͳ͠
    • Pros
    • ʢVHෳ਺࡞ΔͳΒʣ҆ͯ͘؅ཧෆཁ
    ϝʔϧͱDNS͕͍ͭͯ͘Δ
    • Cons
    • ݹͯ͘༥௨͕͖͔ͳ͍ˍṖͷ࡞๏
    DNS͕͍͖ͭͯͪΌ͏

    View Slide

  10. ฏ͍ͨ͘͏ͱ
    • PaaSͱ͔͸VHҰݸʹ̍ܖ໿Ͱ͔͍ͨʂ
    • ಛʹɺ༡ͼͷίʔυΛಈ͔͓ͯ͘͠ͱ͔
    • ΋͏OSɾϛυϧ΢ΣΞอक͸໘౗
    • ͍͏΄Ͳrootݖݶ͍ΒΜͳ… ʢ˞ݸਓͷײ૝ʣ
    • ʢC֦ு͔ͭΘͳ͍ͳΒʣ

    View Slide

  11. Netlify౳͸…
    • DNSͳͲ͸ผʹඞཁ
    • GitωΠςΟϒɺઃఆ͕(஌ࣝ͋Ε͹)Ұॠ
    • ͔͍͍ͬ͜
    • VHҰͭͰ̍ܖ໿
    • ʮGitHub PagesͰ͍͍ͷͰ͸ʁʯ
    • PHP͏͔͝ͳ͍
    !

    View Slide

  12. Heroku౳͸…
    • (ͪΌΜͱॻ͚͹)εέʔϧΞ΢τͰ͖Δ
    • ϛυϧ΢ΣΞ͕๛෋
    • σϕϩούʔϑϨϯυϦʔ
    • ENV͕ݸผʹઃఆ͠΍͍͢౳
    • ͔͍͍ͬ͜
    • VHҰͭͰ̍ܖ໿

    View Slide

  13. Ϩϯαό͸…
    • εέʔϧΞ΢τͰ͖ͳ͍
    • ஗͍ʢॾઆ͋Δʣ
    • VHͨ͘͞Μͭͬͯ͘΋ఆֹʂ
    • DBͨ͘͞Μͭͬͯ͘΋ఆֹʂ
    • (ϓϥϯʹΑΓ·͢)
    • ؅ཧը໘ϙνϙνˍ͠͹͠଴ͭ͸ͩΔ͍

    View Slide

  14. ۙ೥ͷϨϯαό
    • ࣮࣭WordPressʢ΍CMSʣ༻؀ڥ
    • ʮWPಈ͚͹͑͑΍Ζʯͱ͍͏Կ͔͕ݟ͑Δ
    • WP͕ʮਅ໘໨ʯͰҾ͖ͣΒΕ͍ͯΔ(?)
    • → ݁ՌతʹPHPͷόʔδϣϯ͕Ξοϓ͍ͯ͠Δ
    • → ଎౓ͳͲओு࢝͠Ίͨ

    View Slide

  15. ࢲͱϨϯαόͷ෇͖߹͍
    • ࢓ࣄͰWordPress
    • ࢓ࣄͰCMS(OSS/ಠࣗ)
    • ࢓ࣄͰϖϥΠνɾίʔϙϨʔταΠτ
    • ϝʔϧαʔόʔ
    • झຯͰ࣮ݧɾ։ൃɾσϞͳͲ

    View Slide

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

    View Slide


  17. • sshͰ͖ͳ͍Ϩϯαό͸ආ͚Δ
    • ແྉϨϯαό
    • ҆Ձϓϥϯ
    • ʮΕ͖͋͠ΔΏ͍͠ΐ͋Δۀऀʯ
    • ͜ΕΒͷ࢖͍Έͪ͸ແ͍ʢภݟʣ

    View Slide

  18. Φν
    • SSH࢖͏ɺNO MORE FTP
    • ϞμϯͳσϓϩΠΛ͢Δ
    • ʮ޻෉ʯΛ͢Δ
    • Τϥʔ
    • ϩά
    • ͜ΕͰେ׆༻ʂ

    View Slide

  19. sshɾγΣϧ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  24. root͕ͳͯ͘΋Ͳ͏ʹ͔ͳΔ
    • $HOMEʹ͍ΕͪΌ͑͹͍͍ΜͩΑʂ
    • --prefix෇͚ͯϏϧυ
    • PATH௨ͤ͹͍͍͡ΌΜ͍͍͡ΌΜ
    • ʢͨͱ͑͹ʣaws-cliͱ͔s3cliͱ͔΋͍Εͯ͜
    • tarͱ͔͕GNUͰͳ͍? ͍Ε͍ͯ͜͏ʂ

    View Slide

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

    View Slide

  26. ʮͱ͜ΖͰ Linuxbrew͸ʁʯ
    • ґଘΛ͍Ε͍ͯ͘ͱϦιʔε੍ݶʢʁʣͰࢮ͵
    ʢྫɿConoHa WINGʣ
    • (جຊ)૸Βͳ͍ʢྫɿFreeBSDͷ͘͞Βʣ
    • ੈք͸ͦ͜·Ͱ͸؁͘ͳ͔ͬͨ
    • ಈ͘ॴ΋͋Δ͔΋Ͷʂ
    • ͋Δ͍͸΋ͬͱ޻෉͢Δʢলུʣ
    • ۀऀ͞Μ͕Μ͹ͬͯʂ
    !

    View Slide

  27. ϨϯαόCLIͷ஫ҙ
    • ࣗݾ੹೚
    • ṖͷϦιʔε੍ݶʹ஫ҙ
    • ಥ೗ϓϩηε͕ࢮ͵
    • ࢦඪ͕͸͖ͬΓͯ͠ͳ͍
    ࣗݾ੹೚͔ͩΒ͔ͨ͠ͳ͍ʢʁʣ
    • ۀऀ͞Μ͕Μ͹ͬͯʂ

    View Slide

  28. σϓϩΠ

    View Slide

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

    View Slide

  30. • ී௨ʹ
    • ʢsshͯ͠ʣgit pull
    • Shell Script/Makefile
    • ansible(౳ sshࣗಈԽ)
    • Deployer
    • ͔ͭ͑͹͍͍ΜͰ͢Α

    View Slide

  31. ॳखɿنఆͷDocRootΛແࢹͤΑ
    • ۀऀͷσϑΥΛແࢹͤΑ
    • public_htmlҎԼʹϑΝΠϧΛஔ͔ͳ͍
    • ద౰͓͍ͯSymlink͠Α͏
    • public΍htdocsΛln -s
    • (FollowSymlinks͕Offʁۀऀม͑Α͏͆)

    View Slide

  32. ͨͱ͑͹ྫ
    # Ϩϯαόͷઃఆ͸লུ
    $ mkdir ~/repo; cd ~/repo
    $ git clone [email protected]:uzulla/Mizam.git
    $ cd Mizam
    $ make dev-setup # composer instlal౳
    $ ln -s ~/repo/Mizam/public/ \
    ~/www/pktest.8oji.tokyo/public_html

    View Slide

  33. ΫϨσϯγϟϧ
    • Tokenͱ͔ΛͲ͜ʹ࢓ࠐΉ͔ʁ
    • VPSಉ༷ʹ dotenv
    • ʮ্Ґʯͷ.htaccess׆༻
    # (publicͷΈɺwwwҎԼʹln -sͨ͠؀ڥͰʣ
    # ~/www/pktest.8oji.tokyo/.htaccess
    SetEnv TOKEN xxxxxx
    # $_ENVͰͳ͘getenv()Ͱऔಘ͢Δ΄͏͕ແ೉
    # symlinkΛͨͲΒͳ͍ͷͰɺ஫ҙ
    # cli͋ΔͳΒແཧ͔ͳʔw

    View Slide

  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

    View Slide

  35. SymlinkΛ࢖͏ࡍͷ஫ҙ
    • ʮͨͲΓํʯ͸؀ڥͰҟͳΔͷͰ஫ҙɾ׆༻
    • PHPͷ__DIR__͸SymlinkΛḷΔ
    realpath()૬౰ʹͳΔ
    →configϑΝΠϧ͸htdocsҎԼͷඞཁ͸ͳ͍
    ※ ެ։σΟϨΫτϦʹ͢Δ৔߹͸஫ҙ
    • Apache͸Symlink͔ݟͳ͍
    (.htaccessͷPathͳͲ)

    View Slide

  36. ϨϯαόͰ΋Deployer
    • ssh͕Ͱ͖ΔͷͰɺී௨ʹಈ͘Αʂ
    • (…ࢲͷͨΊͨ͠ݶΓͰ͸)
    • (͘͞Β͸csh͔ͩΒɺbashʹchshඞཁ)
    • deployer͸ϦϞʔτ͕bashલఏΆ͍
    • DBϚΠάϨʔγϣϯπʔϧ΋ಈ͘
    • ྫɿgithub.com/uzulla/deployer-phinx-test

    View Slide

  37. DBૢ࡞
    • phpMyadminͱ͔͔ͭͬͯΒΕͳ͍Ͱ͠ΐ
    • ී௨ʹssh ϙʔτϑΥϫʔυͯͭ͠ͳ͝͏
    • Sequel Proͱ͔DBeaverͱ͔…
    • αʔόʔ্Ͱphinxͱ͔΋ಈ͘Αʢલड़ʣ

    View Slide

  38. (CI/)CD
    • ͔͍͍ͭͬͯΜͩΑʂʢ͍ͭ͜͠ʣ
    • ʢSymlinkΛ࢖͏ͳΒʣී௨ͷVPSͱ΄΅ಉ༷
    • CIͰσϓϩΠ
    • GitHub Ac5ons
    • ྫɿNetlify ϨϯαόͰͶͬͱΓͱͨ͠ϓΞϚϯ
    ζܧଓతσϓϩΠ

    View Slide

  39. (GHA౳Ͱ)CDʹ͢Δͱ…
    • GitHubίϛοτݖݶͰΞΧ΢ϯτ؅ཧͰ͖ͯศར
    • νʔϜʹFTPΞΧ΢ϯτΛࢃ͔ͳͯ͘ྑ͍
    • ௚઀αʔόʔ಺ϑΝΠϧΛ͍͡Βͳ͍
    • ʢ͍ͬͨ͡
    !
    ͕Ͱ͖ͯͯ΋diff͕ݟΕΔʢʣʣ

    View Slide


  40. ંฦ͠஍఺
    ͜͜·Ͱʹ࣭໰͕͋Ε͹ϠδͰ͍ͩ͘͞

    View Slide

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

    View Slide

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

    View Slide

  43. DNS͕ࣗ෼ͰͲ͏ʹ͔Ͱ͖ͳ͍ͱ…
    • ͢ͳ͓ʹෆศ
    • ৭ʑͳΠϯϑϥʹϨϯαόΛ૊ΈࠐΈͮΒ͍
    • Route53Ͱ"ALIAS"࢖͍͍ͨ౳
    • CloudFlareʢ౳ʣ͕͔ͭ͑ͳ͍
    • ۃكʹɺ༬͚ͳ͍ͱVH͕͖Εͳ͍৔߹΋͋Δ
    • ֤ࣾؤுͬͯ΄͍͠
    !

    View Slide

  44. େ఍͸Ͳ͏ʹ͔ಈ͘
    • େ఍CNAME͔A͔NSΛΉ͚Ε͹ಈ͖͸͢Δ
    • ·ΕʹϨϯαόͷϗετมߋͰഁ໓͢Δ͜ͱ΋
    • ఘΊΑ͏ʢʁʁʁʣ
    • Ϩϯαό͕ఏڙ͢ΔແྉSSL(Let's Encrypt౳)
    ͕ಈ͔ͳ͍͜ͱ͕͋Δ
    • ߟྀͯ͠ΔͷͰಈ͘ۀऀ΋ʢ͘͞Β౳ʣ

    View Slide

  45. Tips ઃఆͷௐ΂ํ
    • Ϩϯαόͷࢦ͕ࣔ͋Ε͹ͦͷΑ͏ʹ
    • ͳ͚Ε͹͠Β΂ͯCNAMEΛઃఆ͢Δ
    • ApexυϝΠϯͳΒ֮ޛͯ͠AΛઃఆ
    # ௐ΂Δྫ
    $ dig {ίϯύωͰ࡞ͬͨυϝΠϯ} @{ʮϨϯαόͷʯNS}

    View Slide

  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.

    View Slide

  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

    View Slide

  48. ϩά

    View Slide

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

    View Slide

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

    View Slide

  51. ͰɺͲ͏΍ͬͯݟΔʁ
    • ૉ௚ʹssh Ͱtail -fͨ͠Γgrepͨ͠Γ
    • Ξϯνύλʔϯ:ΤϥʔϩάΛࠩ෼DL
    • REST (Restart)
    • ͳΈ͙ͩ·͍͠
    • ਓʹ͸΍Βͳ͚Ε͹͍͚ͳ͍࣌΋͋Δ…

    View Slide

  52. Tips:FTPͷREST
    # REST → RESTART
    # lftp ίϚϯυͷ৔߹
    $lftp [email protected]
    # ॳճDL
    > get large.log
    # ࠩ෼DL
    > reget large.log

    View Slide

  53. s"pʹ΋͋ΔΑ
    $ sftp [email protected]
    sftp> get large.log
    Fetching /path/to/large.log to large.log
    sftp> reget large.log
    Resuming /path/to/large.log to large.log

    View Slide

  54. ΋ͬͱͪΌΜͱ͍ͨ͠
    • ֎෦ϩάαʔϏεͷ׆༻
    • CloudWatch Logs
    • PaperTrail
    • Rollbar(Τϥʔ͸…?)
    • ౳
    • Fatal͕ͰͨΒSlackʹ௨஌ඈ͹͢ͳͲͰ͖Δ

    View Slide

  55. ϩάͷૹΓํ
    • File tail͸࢖͑ͳ͍…
    • ʮಈ͚͘Ͳʢ͈́ʯ
    • େ఍ϓϩηεͳͷͰɺෆࢥٞͳྗͰࢮ͵
    • ͳͷͰ
    • Τϥʔɾྫ֎ॲཧʹॻ͘
    • ࣗྗͰtailͯ͠ૹΔ

    View Slide

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

    View Slide

  57. ࣗલͰΠϕϯτ࣌ʹૹΔ
    • CloudWatch logྫ
    • github.com/uzulla/send-log-to-cloudwatch-log-
    sample.php
    • maxbanton/cwhͰmonologಉ༷
    • (Մೳ͕ͩࣗલૹ৴͸݁ߏ໘౗
    ɹnextSequenceToken͕ͭΒ͍ʣ

    View Slide

  58. FATALΛͲ͏͢Δ͔ʁ
    • FatalͰࢮ͵ͱΞϓϦ͔Βඈ͹ͤͳ͍
    • ΤʔδΣϯτͷৗற͸ʮେ఍ʯͰ͖ͳ͍
    • ۪௚ʹϩά૿෼ΛCronͰૹΓ͚ͭΔ͔͠ͳ͍…
    • (ࡶͳͷͰऔΓ͜΅͠͸ͪΐͬͱఘΊΔ)
    • PHP͕ѼઌࢦఆͰSYSLOGΛͳ͛ΒΕΕ͹φΞ…
    ʢpapertrail͸TLSͰSYSLOGΛड͚ΒΕΔʣ

    View Slide

  59. CronͰ૿෼ϩάΛૹΔ
    • ϩά͕૿͑ͨ෼͚۪ͩ௚ʹૹΔ
    • Papertrailྫ
    • github.com/uzulla/send-log-to-papertrail-cron.php
    • cronͷMAILTOΛͪΌΜͱઃఆ͠Α͏
    • log truncate͸ผ్Cron౳Ͱ

    View Slide

  60. ϩʔςʔγϣϯʹ͍ͭͯ
    • CronͰεΫϦϓτճ͔͢͠ͳ͍…
    • औΓ͜΅͠΍յΕ͕க໋తͳϩά͸ผͰ
    • ʮக໋తϩά͕େྔʹग़ΔΞϓϦͱ͸…͏͝͝ʯ
    #!bash
    cat error.log | gzip -c \
    > /path/to/error.log.`date +%w`.gz
    :> /path/to/error.log

    View Slide

  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');

    View Slide

  62. ϨϯαόͷϩάपΓ͸ࠜຊతͳղܾࡦ͕ͳ͍
    • ͩΕ΋ڵຯ͕ͳ͍Μͩͳʂ
    • WPͱ͔ECCUBEͰΤϥʔϩάͪΌΜͱݟͯΔਓ
    ͸͍Δͷ͔ʁ
    • ʮԶΈ͍ͨͳϨϯαόͰϩάݟ͍ͨ෗Ε໺࿠ɺ
    ଞʹɺ͍·͔͍ͬͯ͢Ͷʔ͔ɺ͸͸ʯ
    • ۀऀ͞Μ͕Μ͹ͬͯʂʂ

    View Slide

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

    View Slide

  64. όοΫΞοϓ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  68. ϛϥʔతʹखݩʹམͱ͍ͨ͠ͱ͖͸
    • FTPͤͣɺrsync͕͍͍ͧ
    • (ssh+rsyncͬͯຊ౰ʹศརͩΑͶ…)
    $ rsync -auz -e "ssh" --progress \
    [email protected]:app app_copy
    # ͓޷ΈͰauvzͰ΋Α͍͔ͱ
    • ໪࿦ٯ΋Ͱ͖·͕͢ɺrsyncʢʹݶΒͣϛϥʔΞο
    ϓϩʔυʣ͸ࣄނΓ΍͍͢ͷͰɺdry-runͯ֬͠ೝ
    ͔ͯ͠Βʹ͠Α͏Ͷɻ

    View Slide

  69. ؂ࢹ

    View Slide

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

    View Slide

  71. ϝτϦοΫ
    • ϨϯαόͰϝτϦοΫͱ͸…͏͙͙಄͕…
    • Disk༰ྔ͘Β͍͸CronͰ͕Μ͹Ε͹OK
    • ϩάʹ࣮ߦ࣌ؒΛ࢓ࠐΜͰૹ৴ͱ͔…͏ͬ಄͕
    • …
    • ͤΊͯෛՙ੍ݶ͖ͨͱ͖ʹ஌Γ͍ͨ…
    • APIͰऔΓ͍ͨ…ۀऀ͞Μ͕Μ͹ͬͯʂ

    View Slide

  72. ॴḨϨϯαό
    • ෛՙΤϥʔ͸֎ܗ؂ࢹͰؾ͔ͮ͘͠ͳ͍͔΋
    • ॴḨϨϯαόɺఘΊ΋؊৺
    • ۪௚ʹΞϓϦνϡʔχϯά͠·͠ΐ͏
    • CDNΦϓγϣϯ΍֎෇͚CDN΋ݕ౼͠·͠ΐ͏

    View Slide

  73. ։ൃ؀ڥ

    View Slide

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

    View Slide

  75. • ؀ڥΛ࡞ΔͳΒDockerΑΓVMͷ΄͏͕Α͍
    • (େ఍ɺઃఆΛ͜ͶΔ͜ͱʹͳΔͷͰ)
    • ൿ఻ͷVM͕Ͱ͖Δ…
    • ansibleͰఆٛ͢Δͱ͔ͨ͠Β͍͍Α
    • ݹͷDistroͰ࡞ΔͷͩΔ͍ͳʔ͆
    • ಠࣗύον΍Distroෆ໌ͳ͜ͱ΋
    • Linuxྗ͕໰ΘΕΔʢʁʣ

    View Slide

  76. • ϙʔτϑΥϫʔυͰຊ൪ͷDBΛखݩ؀ڥʹͭͳ͙
    ͘Β͍͸ී௨ʹͰ͖Δ
    • Phinxͱ͔ϚΠάϨʔγϣϯπʔϧ૸ΒͤΔͷ΋Ͱ
    ͖Δ
    • ϨϯαόΛಛผͩͱࢥΘͳ͍͜ͱ͕؊ཁ

    View Slide

  77. མͱ݀͠
    • ϛυϧ΢ΣΞઃఆʹ஫ҙ
    • ಛʹMysqlͷsql modeͳͲ
    • php.ini͸ࠜੑͰἧ͑Δ
    • php.iniͷ࿩ - h2ps:/
    /speakerdeck.com/uzulla/
    php-dot-inifalsehua

    View Slide

  78. ·ͱΊ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  82. ׬
    Ҏ͓߱·͚

    View Slide

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

    View Slide

  84. Tips
    • ʮϨϯαόۀऀ໊ʯͰ΍ΓํΛάάΔͳ
    • 95%͕ݹ͍όουϊ΢ϋ΢
    • ʮී௨ʯͷ΍ΓํΛ࣋ͪࠐΈ·͠ΐ͏
    • ʮ͜ͷτʔΫࣗମ͕όουϊ΢ϋ΢ͳͷͰ͸ʁʯ

    View Slide

  85. ϚωʔδυαʔϏε࢖͓͏
    • CDN > ෛՙ੍ݶ
    • ϝʔϧૹड৴ > IPϒϩοΫճආɺSPFɺDKIMର
    ԠɺWebhook
    • ؂ࢹ
    • ϨϯαόΑΓߴͭ͘͘ͷ͸΢έΔ

    View Slide

  86. PHP͕͏͚͝͹…
    • JVM͕͏͘͝ʂʢʁʣ
    • ࡢ೔ൃද͞ΕͨΊ΋Γʔ͞Μͷphp-java
    • h+ps:/
    /github.com/php-java/php-java
    • ϨϯαόͰJVMݴޠ͕ಈ͘ʂʂʢʁʁʣ
    • ΍ͬͯΈΑ͏ʂʢࡢ೔໷23࣌͝Ζʣ

    View Slide

  87. View Slide

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

    View Slide

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

    View Slide

  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࣌ʹ͸ඞͣόΠφϦͷύεΛࢦఆ͢Δ͜ͱ

    View Slide

  91. νϡʔχϯάʢসʣ
    • େ఍(ڞ༗ͱͳΔ)DB͕ʢ࣌ؒଳͰʣ஗͍
    • MysqlΑΓSqlite͕଎͍͜ͱ΋
    • సૹྔͰౖΒΕΔɺCDN΍Ξηοτ഑৴Λ෼͚Δ
    • େ༰ྔσΟεΫͷ࢖͍Έͪ…͏͝͝
    • ϨϯαόͷϓϥϯΞοϓ͸ޮՌͳ͍ࣄଟ͍…
    • ෛՙ໰୊ͳΒɺૉ௚ʹPaaSͱ͔ʹҾͬӽͦ͏

    View Slide

  92. ࢼ༻ظؒ
    • େ͖ͳ੠Ͱ͸͍͑ͳ͍͕…
    • ͪΌΜͱղ໿͢Ε͹ʂԿ౓Ͱ΋ʂࢼ༻Ͱ͖Δʂ͜
    ͱ͕ଟ͍ʂ
    • (ݸਓͷײ૝Ͱ͢)
    • ͱΓ͋͑ͣࢼ༻ͯ͠Έ·͠ΐ͏
    • ʢॳظඅ༻จԽͲ͏ʹ͔ͳΓ·ͤΜ͔Ͷʣ

    View Slide

  93. Ϩϯαό֤ࣾ΁ͷࢲ৴
    • WordPressҰຊ଍ʹͳͬͯ·ͤΜ͔ʁ
    • PHPͱ͍͏͢͹Β͍͠ݴޠΛಈ͔͢ʮϞμϯͳʯ
    Πϯϑϥͱͯ͠΋͕Μ͹Γ·ͤΜ͔ʁ
    • ֤ࣾʮதͷਓʯ͸ʮΘ͔ͬͯΔʯਓ͕ଟ͍ͷͰɺ
    Θ͔ͬͯΔͷͩͱ͓΋͍·͕͢
    • ঎ചͱͯ͠೉͍͠ͱ͍͏͓࿩͸·͋͋ΔΜͰ͠ΐ
    ͏͕…

    View Slide

  94. ฏͨ͘ݴ͏ͱ
    • DocRootͱϩά͚ͩͲ͏ʹ͔ͳΓ·ͤΜ͔Ͷ
    • LinuxbrewʢHomebrewʣೖΔͱ͘͢͝خ͍͠

    View Slide