Slide 1

Slide 1 text

Ϩϯαό͚΋ͷಓ

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

sshɾγΣϧ

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

Ͱ΋ίϚϯυ͕ແ͍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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

σϓϩΠ

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

ͨͱ͑͹ྫ # Ϩϯαόͷઃఆ͸লུ $ 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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

ͭ·Γ # 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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

$ 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.

Slide 47

Slide 47 text

$ 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

Slide 48

Slide 48 text

ϩά

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

Tips:FTPͷREST # REST → RESTART # lftp ίϚϯυͷ৔߹ $lftp hoge@example.jp # ॳճDL > get large.log # ࠩ෼DL > reget large.log

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

ϩάʹ͍ͭͯ • க໋తϩάͱग़͠෼͚͢Δͱָ # ҙਤͤͣʮͰͪΌͬͨʯϩά͸શ෦க໋తͰ͠ΐʁ 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');

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

όοΫΞοϓ

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

؂ࢹ

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

։ൃ؀ڥ

Slide 74

Slide 74 text

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

Slide 75

Slide 75 text

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

Slide 76

Slide 76 text

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

Slide 77

Slide 77 text

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

Slide 78

Slide 78 text

·ͱΊ

Slide 79

Slide 79 text

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

Slide 80

Slide 80 text

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

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

׬ Ҏ͓߱·͚

Slide 83

Slide 83 text

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

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

No content

Slide 88

Slide 88 text

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

Slide 89

Slide 89 text

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

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

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

Slide 92

Slide 92 text

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

Slide 93

Slide 93 text

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

Slide 94

Slide 94 text

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