
翻蚳è ããã
人çã¯ãããªãã®ã§ããã©ããããããç§ã¯Java Springã«é¢ããäžé£ã®èšäºãå§ããŸãããã³ãã¥ããã£ã¯ãéžæã¯ææ°ã®æ å ±ã§ã¯ãªããšå ±åããŸããã 人çã¯çéå ¥ãã®C ++ããã°ã©ãã³ã°ã«ç§ãæã蟌ã¿ãŸããããç§ã®éã¯ãŸã ãŠã§ããå¿ èŠãšããŠããã®ã§ãèªç±ãªæéã«ããããããã¹ãã£ã³ã°ãé£ã¹ãããšãã§ããåæã«éçºãããã¢ããªã±ãŒã·ã§ã³ãšOOPã®è€éããããŸã圱é¿ãåããªããã¯ãããžãŒãç 究ããããšã«ããŸããPHP
è±èªã®èšäºã®ãœãŒã¹ã³ãŒãã¯ã httpïŒ//code.tutsplus.com/tutorials/programming-with-yii2-getting-started--cms-22440ã«ãããŸãã
翻蚳ã¯éèªçãªãµãã§ã¯ãããŸããããé倧ãªãšã©ãŒãããå Žåã¯ãã³ã¡ã³ãã§ãç¥ãããã ããã
ãYIIãšã¯ããšå°ããå Žåã¯ã以åã®ãã¥ãŒããªã¢ã«ãYIIãã¬ãŒã ã¯ãŒã¯ã®çŽ¹ä»ããèªãã§ãã ãããYIIã®å©ç¹ã«ã€ããŠèª¬æãã2014幎10æ12æ¥ã®ãã¬ãŒã ã¯ãŒã¯ã®ç¬¬2ããŒãžã§ã³ã®é©æ°ã«ã€ããŠã説æããŠããŸãã
ãã®ã¬ãã¹ã³ã§ã¯ãYII2ã®ã€ã³ã¹ããŒã«ãç°å¢ã®ã»ããã¢ãããå€å žçãªHelloãWorldïŒã¢ããªã±ãŒã·ã§ã³ã®äœæãGitHubã§ã®ãã¹ãã£ã³ã°ãšãããã€ã®ããã®ãªã¢ãŒãç°å¢ã®ã»ããã¢ããã«ã€ããŠèª¬æããŸãã
YII2ãã€ã³ã¹ããŒã«ãã
ããã¥ã¡ã³ã
詳现ãªæé ã¯ãã¡ãã§ç¢ºèªã§ããŸãããMac OS Xã®ç°å¢ã®ç°¡åã§äžè¬çãªã€ã³ã¹ããŒã«ãšã»ããã¢ããã«ã€ããŠèª¬æããŸãã ãã¬ãŒã ã¯ãŒã¯ã«ã¯ã詳现ãªããã¥ã¡ã³ããšã¯ã©ã¹ã®èª¬æãããã YIIã«é¢ãããã¹ãŠã®è©³çŽ°ãå«ãŸããŠããŸãã
翻蚳è ããã ç§ã¯ãé çªã«ãã¢ããã«ããã€ã¹ãæã£ãŠããªãããUbuntuïŒVMWare Playerã®äžã§å®è¡ïŒã®äžã§ãã¹ãŠã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãã
Composerãã€ã³ã¹ããŒã«ãã
ãã¬ãŒã ã¯ãŒã¯ãå¿«é©ã«äœ¿çšããã«ã¯ã人æ°ã®ããPHPæ¡åŒµãããŒãžã£ãŒã§ããComposerã䜿çšããããšããå§ãããŸãã ãŸã ã€ã³ã¹ããŒã«ãããŠããªãå Žåã¯ã次ãå®è¡ããŸãã
curl -s http://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
YII2ãã€ã³ã¹ããŒã«ãã
Composerã䜿çšããŠYII2ãã€ã³ã¹ããŒã«ããŸãã ã€ã³ã¹ããŒã«ããã«ã¯ã GitHubã«ã¢ã«ãŠã³ããå¿ èŠã§ããã¢ã«ãŠã³ãããªãå Žåã¯ãç»é²ããŠãã ããã
æåã®ãããžã§ã¯ãããhelloããšåŒã³ãŸãããã
cd ~/Sites composer global require "fxp/composer-asset-plugin:1.0.0-beta2" composer create-project --prefer-dist yiisoft/yii2-app-basic hello
YII2ã¯2ã€ã®ã¿ã€ãã®éçºã¢ããªã±ãŒã·ã§ã³ããµããŒãããŸãïŒã·ã³ãã«ãšé«åºŠã ãã®ã¬ãã¹ã³ã§ã¯ãããã©ã«ãã§ã€ã³ã¹ããŒã«ãããåçŽãªã¢ããªã±ãŒã·ã§ã³ã䜿çšããŸãã é«åºŠãªã¢ããªã±ãŒã·ã§ã³ãã³ãã¬ãŒãã¯ãWordPressãšåæ§ã«ãããã³ããšã³ããããã¯ãšã³ããããã³ã³ã³ãœãŒã«ããµããŒãããŸããããã¯ãcronã®ç®¡çããã«ããã³ã¿ã¹ã¯ã§ãã
ããŒã«ã«éçºç°å¢ãã€ã³ã¹ããŒã«ããŠæ§æãã
OS XããªãŒãŠã§ã¢çšã®ãªãŒãã³ãœãŒã¹MAMPãéçºã«äœ¿çšããŠããŸãã MAMPãå®è¡ããããã®WebãµãŒããŒãšããŒã¿ããŒã¹ãµãŒããŒãå®è¡ãããŠããããšã確èªããŠãã ããã 次ã«ããµã€ããå«ããã£ã¬ã¯ããªãžã®ã·ã³ããªãã¯ãªã³ã¯ãäœæããŸãã
cd /Applications/MAMP/htdocs ln -s ~/Sites/hello/ /Applications/MAMP/htdocs/hello
ããã§ããã¹ãŠãæ£ããæ§æããŠããlocalhost ïŒ8888 / hello / webãéããšã Bootstrap 3.xãåããã·ã³ãã«ãªYII2ã¢ããªã±ãŒã·ã§ã³ãã³ãã¬ãŒãã衚瀺ãããŸãã

ãã®ããŒãžã¯ã以åã¯ãããã¯ãŒã¯äžã§ç¢ºå®ã«ãã®äœçœ®ãå ããŠããææ°ããŒãžã§ã³ã®Bootstrapãããªã€ã³ã¹ããŒã«ãããŠããªãYII 1.1ã§éçºããŠããéçºè ãé©ãããã§ãããã
YIIã¢ããªã±ãŒã·ã§ã³ã¢ãŒããã¯ãã£
ãã¬ãŒã ã¯ãŒã¯ã®éèŠãªæ©èœã®1ã€ã¯ã MVCãã¿ãŒã³ã®ãµããŒãã§ãã ããã«ãããããæ§é åãããã³ãŒããäœæããŠãç解ããããããããã»ãã¥ãªãã£ãã³ãŒãã®èªåçæãªã©ãPHPã§å®è£ ããã®ãé£ããå€ãã®ããšãç°¡çŽ åã§ããŸãã ãŸããã³ãŒãã®ç¶æãšåå©çšã«ã圹ç«ã¡ãŸãã
YIIã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã¹ãŠã®ãã©ãã£ãã¯ã¯åäžã®/web/index.phpãã¡ã€ã«ã«åããããŸãã ãã®ãã¡ã€ã«ã¯YIIãäŸåé¢ä¿ãããŒãããã¢ããªã±ãŒã·ã§ã³ãèµ·åããŸãã
<?php // comment out the following two lines when deployed to production defined('YII_DEBUG') or define('YII_DEBUG', true); defined('YII_ENV') or define('YII_ENV', 'dev'); require(__DIR__ . '/../vendor/autoload.php'); require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php'); $config = require(__DIR__ . '/../config/web.php'); (new yii\web\Application($config))->run();
ããã©ã«ãã§ã¯ãããã¯/controllers/SiteController.phpãã¡ã€ã«ã®Indexã¡ãœããã§ã
public function actionIndex() { return $this->render('index'); }
éåžžãã³ã³ãããŒã©ãŒã«ã¯å€ãã®ã¡ãœããããããŸãããã³ãŒãã®éã¯æå°éã§ãã ã³ã³ãããŒã©ã¯ãã¢ã¯ã»ã¹ãããŒãã¢ãã«ãããã³ãã¥ãŒãå¶åŸ¡ããŸãã äž»ãªæå³ã®è² è·ã¯ã¢ãã«ã«ããããã¥ãŒã«ã¯ãã¿ãŒã³ã®ã¿ã衚瀺ãããŸãã
ããã©ã«ãã§ã¯ãYIIã¯/views/layouts/main.phpã/views/site/index.phpã®ãã¥ãŒãšããŠè¡šç€ºããŸãã main.phpã¯ãããŒã«ããŒãšã³ã³ãã³ããå«ãhtmlããã³cssããŒãžæ§é ããµããŒãããŸãã main.phpå ã§ã¯ãã³ã³ãã³ãã¯æ¬¡ã®ããã«åŒã³åºãããŸãã
<div class="container"> <?= Breadcrumbs::widget([ 'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : [], ]) ?> <?= $content ?> </div>
$ã³ã³ãã³ãå€æ°ã¯ãéçhtmlããŒãžãè¡šã/views/site/index.phpã§çæãããã³ãŒãã«çœ®ãæããããŸãã
ã¢ããªã±ãŒã·ã§ã³ãHello worldïŒããäœæããŠããŸã
çŸããURLãå«ãã
ãŸããmod_rewriteã§ããã€ãã®ããããªã¢ãã¬ã¹ãæå¹ã«ããŸãããã ããŒã ããŒãžã§[About]ãã¿ã³ãã¯ãªãã¯ãããšã次ã®ãããªã¢ãã¬ã¹ã衚瀺ãããŸãïŒ localhost ïŒ8888 / hello / web / index.phpïŒR = siteïŒ 2Faboutã 次ã«ããã®ãã©ãŒã ãããŒã«ã«ãã¹ãã® 8888 / hello / web / site / aboutã«ç§»åããŸãã
configãã£ã¬ã¯ããªã«ã¯ãWebã¢ããªã±ãŒã·ã§ã³ãã³ã³ãœãŒã«ã¢ããªã±ãŒã·ã§ã³èšå®ãããŒã¿ããŒã¹èšå®ãªã©ãç°å¢å šäœã®èšå®ãå«ãŸããŠããŸãã ãã¡ã€ã«/config/web.phpã次ã®ããã«å€æŽããŸãã
'components' => [ //... 'urlManager' => [ 'showScriptName' => false, 'enablePrettyUrl' => true ], //... 'request' => [
次ã«ãindex.phpãä¿åãããŠãã/ webãã£ã¬ã¯ããªã«.htaccsessãã¡ã€ã«ãäœæãã次ã®å 容ãå«ããå¿ èŠããããŸãã
RewriteEngine on # If a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Otherwise forward it to index.php RewriteRule . index.php
mod_rewriteãMAMPã§æå¹ã«ãªã£ãŠããããšã確èªããŠãã ãããåé¡ãããå Žåã¯ã stackoverflowã®ãã©ã³ãã確èªããŠãã ããã
ãã©ãŠã¶ãŒã§localhost ïŒ8888 / hello / web / site / aboutã«ç§»åããŸããããã§ãåçŽãªYIIã¢ããªã±ãŒã·ã§ã³ã®AboutããŒãžã衚瀺ãããŸãã
ã¢ã¯ã·ã§ã³ãäœæãã
次ã®ã¹ãããã§ã¯ãã¡ãã»ãŒãžãç¹°ãè¿ãããã«ãSayãšããååã®ã³ã³ãããŒã©ãŒã®ã¢ã¯ã·ã§ã³ãäœæããŸãã /controllers/SiteController.phpãã¡ã€ã«ã«æ¬¡ãè¿œå ããŸãã
public function actionSay($target = 'World') { return $this->render('say', ['target' => $target]); }
ãã®é¢æ°ã¯ãurlã¢ãã¬ã¹ã§ã¿ãŒã²ãããã©ã¡ãŒã¿ãæ¢ããŠç»é¢ã«è¡šç€ºããŸãã ååšããªãå Žåã¯ãåã«ãã¯ãŒã«ããã衚瀺ãããŸãã YIIãã¬ãŒã ã¯ãŒã¯ã§ã¯ãã¢ã¯ã·ã§ã³ã¯actionNameEkshenaã®ãã¬ãã£ãã¯ã¹ãä»ããã¡ãœãããšããŠå®è£ ãããŸãã SiteControllerã¯ã©ã¹ã§ã¯ããããªãã¯é¢æ°actionSayã䜿çšããŠSayã¢ã¯ã·ã§ã³ãäœæããŸããã
renderã¡ãœããã®æšæºçãªåäœã¯ãviews / ControllerID / ViewName.phpã§ãã¡ã€ã«ãæ€çŽ¢ããããšã§ãã®ã§ã/ views / site /ã«say.phpãã¡ã€ã«ãäœæããŸãããã
<?php use yii\helpers\Html; ?> <h1>Hello <?= Html::encode($target) ?></h1> <p>Welcome to your Yii2 demonstration application.</p>
ãã®ãã³ãã¬ãŒãã¯ãæååãHello + $ïŒtargetïŒããåºåããŸããããã§ã$ïŒtargetïŒã¯urlã«æž¡ãããå€æ°ã§ãã ã»ãã¥ãªãã£ã確ä¿ããããã«ãããã¯çŽæ¥è¡ã«èœã¡ãŸããããæåã«æªæã®ããã³ãŒãããªãããã§ãã¯ãããŸãã
localhost ïŒ8888 / hello / web / site / sayïŒTarget = TutsïŒ 20Readersã«ã¢ã¯ã»ã¹ãããšã次ã®ããã«è¡šç€ºãããŸãã

ããã¯ãMVCãã¬ãŒã ã¯ãŒã¯ã¢ãã«ã®ç°¡åãªå®è£ äŸã§ãã 詳现ã«ã€ããŠã¯ãå ¬åŒããã¥ã¡ã³ãã®ãã¬ãŒã ã¯ãŒã¯Webãµã€ãã§ãã®äŸãããç解ããŠãã ããã
ããã§ã¯ãGitHubã«ã¢ããªã±ãŒã·ã§ã³ãã¢ããããŒãããŠãéçšãµãŒããŒã§å®è¡ããŠã¿ãŸãããã
ãªã¢ãŒãç°å¢ãã»ããã¢ãããã
åçŽãªYIIã¢ããªã±ãŒã·ã§ã³ã¯ã Apacheããã³NginxãµãŒããŒã§ããã®ãŸãŸãå®è¡ããå¿ èŠããããŸããApacheã§å®è¡ããæ¹æ³ã«ã€ããŠã¯ãNginxãåç §ããŠãã ãã ã
GitHubã«ãªããžããªãäœæãã
åºæ¬çãªYIIãã³ãã¬ãŒããã€ã³ã¹ããŒã«ãããã GitHubã«ãªããžããªãäœæããŸãã

泚ïŒYit .gitignoreãGitHubïŒhttps://github.com/yiisoft/yii2/blob/master/.gitignoreïŒããããŒã«ã«ã®ã/ Sites / hello / .gitignoreãã©ã«ããŒã«ã³ããŒããŠè²Œãä»ããã®ã¯ãåŸã§æåã§åé€ãããããã¯ããã«ç°¡åã§ãã ã©ã¡ãã®ãªãã·ã§ã³ãæå¹ã§ããã
GitHub Mac OS Xã¢ããªã±ãŒã·ã§ã³ïŒhttps://mac.github.com/ïŒã䜿çšããŠããŸãããã³ãã³ãã©ã€ã³ã䜿çšããŠãªããžããªãåæåããããšãã§ããŸãã ããšãã°ã次ã®ããã«ïŒãyouraccountããGitHubã®ååã«çœ®ãæããŸãã
cd ~/Sites/hello git init git commit -m "first commit of hello world for yii2" git remote add origin git@github.com:youraccount/hello.git git push -u origin master
翻蚳è ããã BitbucketããªããžããªãšããŠäœ¿çšããããšã奜ã¿ãŸããããã«ããããã©ã€ããŒããªããžããªãç¡æã§äœ¿çšã§ããããã«ãªããŸãã
ãµãŒããŒã§Apacheãæ§æãã
ãµãŒããŒããŸã æ§æããŠããªãå Žåã¯ãUbuntuïŒhttp://jeffreifman.com/digitaloceanïŒã§ãµãŒããŒãæ§æããæé ã確èªããããšããå§ãããŸãã IPã¢ãã¬ã¹ãããå Žåã¯ããµãŒããŒã®DNSãæ§æããŸãã
yourdomain.com A 192.161.234.17
IPãŸãã¯ãã¡ã€ã³åã䜿çšããŠãsshçµç±ã§ãµãŒããŒã«ãªã¢ãŒãã§ãã°ã€ã³ããŸã
ssh root@yourserver.com
æ§æãæŽæ°ããGitãã€ã³ã¹ããŒã«ããApacheã®mod_rewriteãšPHPã®mcryptãæå¹ã«ããŸãã
sudo apt-get update sudo apt-get upgrade sudo a2enmod rewrite php5enmod mcrypt
GitHubãžã®ãªã¢ãŒããµãŒããŒã¢ã¯ã»ã¹ã®ã»ããã¢ãã
次ã«ãGitHubã䜿çšããŠãã«ãªã¯ãšã¹ããèšå®ããŸãã Git Firstãã€ã³ã¹ããŒã«ãã
sudo apt-get install git
次ã«ãwwwã®ã°ã«ãŒããäœæããããŒã¿ãšGitHubãŠãŒã¶ãŒãè¿œå ããŠããããã®æš©éãæ§æããŸãã
adduser github addgroup www adduser github www adduser www-data www chown -R :www /var/www chmod +s -R /var/www chmod -vR g+w /var/www/
次ã«ããªããžããªãšåæããããŒãäœæããŸãã
su github ssh-keygen -t rsa -C "yourgithubaccount@youremail.com" exit cat /home/github/.ssh/id_rsa.pub
ããã«äŒŒããã®ã衚瀺ãããŸããGitHubã«ãã®ããŒãã³ããŒããŠè²Œãä»ããå¿ èŠããããŸã
ïŒåé¡ãçºçããå Žåã¯ããã¡ãïŒhttps://help.github.com/articles/error-permission-denied-publickey/ïŒãã芧ãã ããïŒïŒ

ãªããžããªèšå®ã»ã¯ã·ã§ã³ã«ç§»åããŠã次ã®ããŒãè¿œå ããŸãã

次ã«ããã®ãããªãã®ã衚瀺ãããŸãïŒ

æåŸã«ããã©ã³ãããµãŒããŒã«è€è£œã§ããŸãã
git clone git@github.com:youraccount/hello.git /var/www/hello
ãã¹ãŠãæ£ããæ§æãããŠããå Žåã以äžã衚瀺ãããŸãã

ã³ãŒãã®éãå¢ãããšããªããžããªãä»ããŠããŒã«ã«ãã·ã³ãšéçšãµãŒããŒã®ã³ãŒããç°¡åã«åæã§ããŸãã ããã¯ãã¢ãŒã«ã€ããšåæããããæåã§åæãããããã¯ããã«ç°¡åã§ãããããªããã¬ãŒãã³ã°ã®éçšã§èªåã§ç¢ºèªã§ããŸãã
Apacheçšã®ãµã€ãæ§æã®äœæ
æ§æãã¡ã€ã«ãäœæããŸãã
nano /etc/apache2/sites-available/hello.conf
ãã¡ã€ã³åã次ã®ããã«å€æŽããŸãã
<VirtualHost *:80> ServerName yourdomain.com # Set document root to be "basic/web" DocumentRoot "/var/www/hello/web" <Directory "/var/www/hello/web"> # use mod_rewrite for pretty URL support RewriteEngine on # If a directory or a file exists, use the request directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # Otherwise forward the request to index.php RewriteRule . index.php </Directory> </VirtualHost>
ãµã€ããæå¹ã«ããŸãã
a2ensite hello.conf a2dissite 000-default.conf service apache2 reload
yourdomain.com/site/say?target=Worldãªã³ã¯ãã¯ãªãã¯ããŠãã¢ããªã±ãŒã·ã§ã³ãæ©èœããããšã確èªããŠãã ããã ïŒããŒãžã®äžéšã«ãããã¬ãŒã ã¯ãŒã¯ã®ãããã°ããŒã«ããŒã¯ç¡å¹ã«ãªããŸãïŒïŒ

ããã§ãšãããããŸãïŒ ããã§ããã¬ãŒã ã¯ãŒã¯ã®ããè€éãªæ©èœã®ç 究ãéå§ããæºåãã§ããŸããïŒ