
æ°æ¥åãç§ã¯ããäžåºŠãœãŒãã«ãã£ãŠèšªåãããŸããã ãã®ã¢ã€ãã¢ã¯æ°ãããã®ã§ã¯ãªããããªã匷迫芳念ã§ããããWindows8ã«ç§»è¡ããŸãããã ãŸãããé¡ãããŸããã ãããŠã圌女ã远ãæãããšãã§ããªãã£ãã®ã§ãç§ã¯ãè¶ãšã¯ãããŒãè²·ãã ãããŠå§ããŸããã
ã·ã¹ãã ãšå¿
èŠãªãã¹ãŠã®ããã°ã©ã ãã€ã³ã¹ããŒã«ããã®ã«2æéãããããŸããã§ããããæãè峿·±ãç¬éã蚪ããŸããïŒGIT +ããŒã«ã«ãµãŒããŒïŒApacheãMySQLãPHPãnginxãmemcachedãmongodbïŒã®äœæ¥ç°å¢ãå±éããå¿
èŠããããŸããã 以åã®ã€ã³ã¹ããŒã«ã®çµéšã念é ã«çœ®ããŠãä»åã¯ããã»ã¹å
šäœãææžåããåŸäžã®ããã«ä¿åããããšã«ããŸããã
å
責äºé
ã®åæ°ïŒ ãç§ã¯ããã°ã©ããŒã§ã¯ãªããïŒcïŒããã€ã³ã¿ãŒãã§ãŒã¹èšèšè
ããã³ããã³ããšã³ãã®æè¡è
ïŒãã ããå Žåã«ãã£ãŠã¯ååãå©ããŠãã®ãããªããšãããããšãã§ããããã§ãbeatãããªãïŒ
å
責äºé
2ïŒã¯ããUbuntuã§ã¯ãã®ãã¹ãŠãäœåãéãè¡ããããšå®å
šã«æ³åããŠããŸãã ããããç§ã¯Windowsã§äœæ¥ããŠããã®ã§ãæŽå²çã«ããã§ãã
ããã§ã¯å§ããŸããããäœæ¥èšç»ã«ã¯ã次ã®è£œåã®ã€ã³ã¹ããŒã«ãå«ãŸããŸãã
- PuTTY
- Git
- DenwerïŒApacheãMySQLãPHPïŒ
- Nginx
- Memcached
- ã¢ã³ãŽãã
1. PuTTY
PuTTYã¯ãSSHãTelnetãrloginãªã©ã®ããŸããŸãªãªã¢ãŒãã¢ã¯ã»ã¹ãããã³ã«çšã®ããªãŒãŠã§ã¢ã¯ã©ã€ã¢ã³ãã§ãã

PuTTYã«ã¯ããã€ãã®ãŠãŒãã£ãªãã£ãå«ãŸããŠããŸãããç§ã¯åœŒãšPegeantïŒgitãªããžããªãžã®ããŒãä¿åããSSHèªèšŒãšãŒãžã§ã³ãïŒã ããå¿
èŠã§ãã
ãªããµã€ãïŒ è¡ãSSHãå¿
èŠãªãå Žåã¯ããã®é
ç®ãå¿ããŠå
ã«é²ãã§ãã ããã
2. GIT
gitã䜿çšãã
ããã« ãç§ã¯ããæ°å¹Ž
TortoiseGitã䜿çšããŠããŸããããã¯å®å®ããŠããã146ïŒ
ãç§ã®ãã¹ãŠã®ããŒãºãã«ããŒããŠããŸãã äžè¬çã«ãç§ã¯ãå§ãããŸãã
ãªããµã€ãïŒ è¡ã2.1 TortoiseGitã«ã¯
git for Windowsãå¿
èŠã§ããããã¯
Googlecodeã§
ååŸã§ããŸãã
2.2 TortoiseGit ãããããã€ã³ã¹ããŒã«
ããŸã3.ãã³ã¯ãŒ
ãã³ã㌠-玳士çãªWebéçºè
ã»ããïŒãD.n.w.rãããDenverããèªã¿ãŸãïŒ-Dmitry Koterovã«ãããããžã§ã¯ããäžé£ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ïŒApacheãPHPãMySQLãPerlãªã©ïŒããã³Webã§äœ¿çšãããããã°ã©ã ã·ã§ã«ãããŒã ãïŒããŒã«ã«ïŒWindowsãã·ã³ã§ãµã€ããéçºããããã®éçºè
ã
ãªããµã€ãïŒ è¡ã3.1ã€ã³ã¹ããŒã«
åºæ¬ããããš
远å ã®PHP5ã¢ãžã¥ãŒã«ãããŠã³ããŒãããå¿
èŠããã
ãŸã ã
åæ
çãªäœè«ïŒããããããŠã³ããŒãããã ãã§ãªããããŠã³ããŒããªã³ã¯ãã¡ãŒã«ã§ååŸããŸãã ã€ãŸããã¡ãŒã«ã«å ããŠããç»é²ããšãã倧ããªèŠåºãã®äžã®ãã©ãŒã ã«å§åã2åå
¥åããå¿
èŠããããŸãã ãç»é²ã¯ããã³ããŒ4ã®å°æ¥ã®ãªãªãŒã¹ã«é¢é£ããŠå¿
èŠã§ãããäœå¹Žãã®éããã©ãŒã ã¯è¬çœªããããã«èŠããŸãããç§ã¯ãããä¿¡ããŠããŸããïŒã
éåžžããã³ããŒã®ã€ã³ã¹ããŒã«ã¯è¿
éãã€ç¡çã§ãããWindows8ã§ã¯ãæ¬ èœããŠãã
msvcr71.dllã©ã€ãã©ãªãèªããšã©ãŒã«æ»æãããŸããã
ããã§ã©ã€ãã©ãªã
éžæã㊠ããã©ã«ã
ã\ Windows \ System32 \ã ïŒx32ïŒãŸãã¯
ã\ Windows \ SysWOW64 \ã ïŒx64ïŒã«é
眮ã§ããŸãã ãã¡ã€ã«ããã©ã«ãã«èœã¡çããåŸããã®ããããã£ãéããããã¯è§£é€ãã¿ã³ãæŒããŸãã
3.2ãã«ã¹ãã§ãã¯
ãã³ããŒãã€ã³ã¹ããŒã«ããåŸããã¹ãã¹ã¯ãªãããäœæããŠãåŸã§ã€ã³ã¹ããŒã«ãããã¹ãŠã®æäœæ§ã確èªããŸãã
ZïŒ\ homeã«ç§»åããæ°ãããµã€ãã远å ããŸã
ãtest.localãã©ã«ããŒãäœæãã
ãã®äžã«wwwãã©ã«ããŒãäœæããŸãã
ãã®ãã©ã«ããŒã«ãä¿¡ããããªãã»ã©ã¯ãªãšã€ãã£ããªããã¹ããå«ã
index.phpãã¡ã€ã«ã远å ããŸãã
<?php echo 'Test me <br>';
ãã³ããŒãåèµ·åãããã©ãŠã¶ã§
www.test.localãéããæå¿ããŠå
ã«é²ã¿ãŸã
4. Memcached
Memcachedã¯ãããã·ã¥ããŒãã«ãã©ãã€ã ã«åºã¥ãã¡ã¢ãªãã£ãã·ã¥ãµãŒãã¹ãå®è£
ããããã«ãŠã§ã¢ã§ãã
ãªããµã€ãïŒ è¡ãphpã®æ¡åŒµæ©èœã§ãã
Memcacheã¯ãåçãªWebã¢ããªã±ãŒã·ã§ã³ã®ããŒã¿ããŒã¹è² è·ã軜æžããããã«ç¹å¥ã«èšèšããã髿§èœãã£ãã·ã¥ããŒã¢ã³ã§ããmemcachedãžã®äŸ¿å©ãªæç¶ãåãªããžã§ã¯ãæåã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããŸãã
4.1 memcachedã®ã€ã³ã¹ããŒã«
A.ãã€ããªã¢ãŒã«ã€ãã®ããŠã³ããŒãïŒ
Memcached 1.4.5 for Windows ã¯ãã¡ãããB.ã¢ãŒã«ã€ãã®å
容ã
\ usr \ local \ memcachedã«å±éããŸã4.2 memcacheã®ã€ã³ã¹ããŒã«
A. ããããã©ã€ãã©ãª
ããã¢ãŒã«ã€ããããŠã³ããŒã
ããŸãB. \ usr \ local \ php5 \ ext \ã§ã¢ãŒã«ã€ãã®å
容ãè§£åããŸã
C. php.iniãã¡ã€ã« ïŒ
\ usr \ local \ php5 \ php.ini ïŒãéããæ¡åŒµæ©èœãæ¥ç¶ããŸãã
extension=php_memcache.dll
4.3 Denwer Launchã䜿çšããMemcached Launchã®èšå®
ãã³ããŒã§ã¹ã¯ãªãããå®è¡ããã«ã¯ã次ã®ãã®ãå¿
èŠã§ãã- ã¢ããªã±ãŒã·ã§ã³/ãµãŒãã¹ãéå§ããã³åæ¢ããã³ãã³ããå«ãã¹ã¯ãªãããäœæãã \ denwer \ scripts \ init.dãã©ã«ããŒã«é
眮ããŸã
- éå§/åæ¢æ§æãã©ã«ããŒ\ denwer \ scripts \ main \ã«ãã®ã¹ã¯ãªãããžã®ãªã³ã¯ãäœæããŸã
A. \ denwer \ scripts \ init.d \ãã£ã¬ã¯ããªã« ãmemcached.plããšãããã¡ã€ã«ãäœæããŸã
B.次ã«ãã¹ã¯ãªãããžã®ãªã³ã¯ãäœæããŸã
ãããã¯ããã³ããŒãéå§ãåèµ·åã忢ãããšãã«ã
init.d / memcached.plãå®è¡ããå¿
èŠãããããšã瀺ãéåžžã®ããã¹ããã¡ã€ã«ã§ãã
ããã¹ããšãã£ã¿ã§
init.d/memcached
次ã®ãã©ã«ãã«
ã40_memcachedããšããååã§ãã¡ã€ã«ãä¿åããŸãã
- \ denwer \ scripts \ main \ start
- \ denwer \ scripts \ main \ stop
- \ denwer \ scripts \ main \ restart
4.4çµæã®ç¢ºèª
ãã¹ãã¹ã¯ãªããïŒindex.phpïŒã«ä»¥äžã远å ããŸãã $memcache = new Memcache; $memcache->connect('127.0.0.1', 11211); echo 'Memcache ver: ' . $memcache->getVersion();
ãã³ããŒãåèµ·åããŠãäœãèµ·ãã£ããã確èª
5. Nginx
Nginxã¯ãã·ã³ãã«ã§é«éãã€ä¿¡é Œæ§ã®é«ããµãŒããŒã§ãããæ©èœã§ãªãŒããŒããŒããããŠããŸããã

ãªããµã€ãïŒ
è¡ã5.1 Nginxã®æ§æ
A.ãªãã©ã€ã³ãµã€ããã
WindowsããŒãžã§ã³ãããŠã³ããŒããã
\ usr \ local \ nginxã«è§£åããŸã
B.ãã¹ããµã€ãã®ä»®æ³ãã¹ããã»ããã¢ããããŸãã ãããè¡ãã«ã¯ã
\ usr \ local \ nginx \ conf \ nginx.confãéããŠããã«è¿œå ããŸã
server { listen 127.0.0.1:80; server_name www.test.local test.local; if ($host = 'test.local'){ rewrite ^/(.*)$ http://www.test.local$1 permanent; } location ~* \.(jpeg|jpg|gif|png|css|js|pdf|txt|tar)$ { root Z:\home\/test.local\www; } location / { ssi on; proxy_pass http://127.0.0.1:8080/; proxy_set_header X-REQUEST_URI $request_uri; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_set_header Host $host; proxy_connect_timeout 60; proxy_send_timeout 90; proxy_read_timeout 90; proxy_redirect off; proxy_set_header Connection close; proxy_pass_header Content-Type; proxy_pass_header Content-Disposition; proxy_pass_header Content-Length; root Z:\home\/test.local\www; } }
ããã¯å®éã®ãããžã§ã¯ãã®èšå®ã®äžäŸã§ãããèšå®ã¯æããã«ç°ãªãå ŽåããããŸãã
5.2 Apacheã®æ§æ
ããã©ã«ãã§ã¯ãApacheã¯80çªç®ã®ããŒãã§åäœããŸããããã®ããŒããNginxã«æž¡ããã ããªã®ã§ãApacheèšå®ã§ä»®æ³ãã¹ãã®ãã³ãã¬ãŒãã倿Žãã80çªç®ãšã¯ç°ãªãããŒãïŒ8080ãªã©ïŒãå²ãåœãŠãå¿
èŠããããŸãã
\ usr \ local \ apache \ conf \ httpd.confãéããããŒãçªå·ã倿ŽããŸã
5.3 Denwer Launchã§ã®Nginx Launchã®èšå®
A. \ denwer \ scripts \ init.d \ãã£ã¬ã¯ããªã« ãnginx.plããšãããã¡ã€ã«ãäœæããŸã
B.ããã¹ããšãã£ã¿ãŒã§æžã
init.d/nginx
次ã®ãã©ã«ãã«
ã50_memcachedããšããååã§ãã¡ã€ã«ãä¿åããŸãã
- \ denwer \ scripts \ main \ start
- \ denwer \ scripts \ main \ stop
- \ denwer \ scripts \ main \ restart
5.4çµæã®ç¢ºèª
ã¹ã¯ãªããã®æšªã«ãã³ã³ãã³ãã
å«ãstyle.cssãã¡ã€ã«ã
é
眮ããŸã
h1{ color: red; } h2{ color: green; }
ãããŠ
index.phpãé«è²Žã«ããŸãïŒ
<html> <head> <title>Test me</title> <link rel="stylesheet" type="text/css" href="style.css"> <meta http-equiv="content-type" content="text/html; charset=utf-8"> </head> <body> <h1>Test me</h1> <h2>Memcached</h2> <?php $memcache = new Memcache; $memcache->connect('127.0.0.1', 11211); echo 'Memcached ver: ' . $memcache->getVersion(); ?> </body> </html>
ãã³ããŒãåèµ·åããŠãçµæããæ¥œãã¿ãã ããã CSSãã¡ã€ã«ãæ¥ç¶ãããŠããå ŽåãNginxã¯æ£åžžã«æ©èœããŸãã
6. MongoDB
MongoDBã¯ãããŒãã«ã¹ããŒãã®èª¬æãå¿
èŠãšããªããªãŒãã³ãœãŒã¹ã®ããã¥ã¡ã³ãæåããŒã¿ããŒã¹ç®¡çã·ã¹ãã ïŒDBMSïŒã§ãã
ãªããµã€ãïŒ è¡ã6.1 PHPãã©ã€ããŒ
A. ãã®ãµã€ããã
php_mongo.dllã©ã€ãã©ãªãããŠã³ããŒããã
\ usr \ local \ php5 \ ext \ãã©ã«ãã«
ãããã ããŸã
詊è¡é¯èª€ã«ãããé©åãªãã©ã€ããŒã
mongo-1.2.5.zip/mongo-1.2.5-php5.3vc9ts.zipã¢ãŒã«ã€ãã«å«ãŸããŠããããšãããããŸããã äœããã®çç±ã§éå§ã§ããªãå Žåã¯ãä»ã®ããŒãžã§ã³ã詊ããŠãã ããã
B. php.iniã®æ¡åŒµæ©èœãæ¥ç¶ãã
extension=php_mongo.dll
6.2 Mongoã®ã€ã³ã¹ããŒã«
A.
Mongoããã¢ãŒã«ã€ããããŠã³ããŒããã
\ usr \ local \ mongodbãã©ã«ããŒã«è§£åããŸã ã åããã©ã«ããŒã«ãããã«2ã€ã®ãã©ã«ããŒãäœæããŸãã
- db
- ãã°
B.ãµãŒãã¹ãã€ã³ã¹ããŒã«ãã
> cd C:\WebServers\usr\local\mongodb\bin\
> mongod.exe --install --dbpath=C:\WebServers\usr\local\mongodb\db\ --logpath=C:\WebServers\usr\local\mongodb\logs\
6.3ãã³ããŒãšçµã¿åãããMongoDBã®èµ·åã®èšå®
A. \ denwer \ scripts \ init.d \ãã£ã¬ã¯ããªã« ãmongod.plããšãããã¡ã€ã«ãäœæããŸã
B.ããã¹ããšãã£ã¿ãŒã§æžã
init.d/mongod
æ¢ç¥ã®ãã©ã«ããŒã«
ã60_mongodããšããååã§ãã¡ã€ã«ãä¿åããŸãã
- \ denwer \ scripts \ main \ start
- \ denwer \ scripts \ main \ stop
- \ denwer \ scripts \ main \ restart
6.4çµæã®ç¢ºèª
mongoã³ã³ãœãŒã«ã€ã³ã¿ãŒãã§ã€ã¹ãèµ·åããŸã
> Z:\usr\local\mongodb\bin\mongo.exe
ãããŠããã¹ãå€ãããã¹ããããŒã¿ããŒã¹ã«æ¿å
¥ããŠåºåããŸã
> db.test.save( { name: âHabr!â } )
> db.test.find()
çµæã¯æ¬¡ã®ããã«ãªããŸãã
6.5ã Mongo Database Management Interfaceã®ã€ã³ã¹ããŒã«
ãªããµã€ãMongoDBã«ã¯
ã管çé åã®ãªã¹ããšç°¡åãªã¬ãã¥ãŒããããŸãã®ã§ã詊ããŠã¿ãããšãã§ããŸãã
ç§ã¯èªåã§
RockMongoãéžæããŸããããã®
ãããã§ãæçµçã«ãã¹ãŠãæ©èœããã©ãã«ãèœã¡ãªãããšã確èªã§ããŸãã
A. ãã®ããŒãžãã管çããã«ã§ã¢ãŒã«ã€ããããŠã³ããŒãã
ãŸã ã ãã¡ããã
Windowsçšã®
ããŒãžã§ã³ãéžæ
ããŸã ã ãããæžããŠããæç¹ã§ã¯ãããã¯
RockMongo-on-Windows v0.0.4ã§ããB.ã¢ãŒã«ã€ãããããã©ã«ããŒ
\ rockmongo-on-windows \ web \ rockmongoãååŸãããã¹ããµã€ãã®ãã£ã¬ã¯ããªã«ã³ããŒããŸãã
config.phpãéãããã©ã¡ãŒã¿ãŒå€ã倿ŽããŸã
$MONGO["servers"][$i]["control_auth"] = true;
ã«
$MONGO["servers"][$i]["control_auth"] = false;
C. www.test.local / rockmongo / index.phpã§çµæã確èªããŸã
ããã§ãšãããããŸãïŒ ä»ãç§ãã¡ã¯æçµçãªåãè¿ãã®ã€ããªã仲éã§ããããŒãã¹çªå·1ã Windowsã³ã³ãœãŒã«ããphpãæäœãã
ãããã誰ãã圹ã«ç«ã€ã§ãããã éªæªãªãã¯ã©ã€ãããSQLãã¡ã€ã«ã¯åäžçŽã§ãããç§»è¡ã䜿çšããŸãããããšå€æãããšãã«ãç§ã¯éå®ããŸããã ãã¡ãããè¯èã®ããã«ãç§ã¯å®å
šãªèª€è§£ãæããŠæ¶ãæµãããšããŸããããWindowsäžã§ãããã©ã®ããã«æ©èœããããçè§£ããããã«é²åºãããŠéãããŸããã
幞çŠã«å¿
èŠãªã®ã¯
ãPHPãã£ã¬ã¯ããªãPATHã«
ç»é²ããããšã ãã§ããããšãããããŸãã ã

ã倿Žããã¯ãªãã¯ããŠãè¡æ«ã«è¿œå ããŸã
;Z:\usr\local\php5
次ã«ããããæ©èœããããšã確èªããŸãããã¹ããµã€ãã®ãã£ã¬ã¯ããªã§ã
console.phpãã¡ã€ã«ãäœæããŸã
<?php if ($argv[0] == basename(__FILE__)) { unset($argv[0]); } echo 'Hello ' . $argv[1] . '!';
ã³ã³ãœãŒã«ãéããŸã ïŒåããã©ã«ããŒããçŽæ¥å¯èœã§ã-æåããShiftããŒãæŒããªããå³ã¯ãªãã¯ãã[ã³ãã³ããŠã£ã³ããŠãéã]ãéžæããŸãïŒã
以äžãå
¥åããŠãã ããïŒ> php console.php âUserNameâ
ã³ã³ãœãŒã«ãå¿çããŸãïŒ> âHello, UserName!â
PHPã¯ãæ®éçãªåã³ãææãã«ãŒãã³ãç ŽããŸãããããŒãã¹çªå·2ã
SMSãªãã§1ã€ã®ã¢ãŒã«ã€ãã®èšäºã«èšèŒãããŠãããã¹ãŠã®ãã¡ã€ã«ãšäŸïŒ
githubã§ãã®è³æã圹ç«ã€ããšãé¡ã£ãŠããŸãã
ã³ã¡ã³ããšææ¡ã«æè¬ããŸãã