åãã¾ãã¦ãã¬ã¹ãã©ã³ãµã¼ãã¹éçºGã®ã¾ã¤ããã§ãã
ãããªã³ãå©ç¨ããã¦ããå çåºæ§ã使ããããåºèãã¼ã¸ç®¡çãã¼ã«ããããªã³ PRO for 飲é£åºãã®éçºã»ä¿å®ã®ã»ã社å ç¨ç®¡çãã¼ã«ã®ãªãã¬ã¤ã¹çãè¡ã£ã¦ããã¾ãã
ä»åã¯ã社å ç¨ç®¡çãã¼ã«ã®ãªãã¬ã¤ã¹ã§Laravelã使ç¨ãã¦å®è£ ããã¨ãã«å°ã£ãç¹ã¨ãã®å¯¾å¦æ¹æ³ãæ¸ãã¦ã¿ã¾ãã
社å ãã¼ã«ã®ãªãã¬ã¤ã¹ã§Laravelãå°å ¥
ãããªã³ã®ç¤¾å
ç¨ç®¡çãã¼ã«(â»1)ã®ã²ã¨ã¤ãã¨ãªã¢å²ä»ãã¼ã«ãã¯ããåºã®ç·¯åº¦ã»çµåº¦ãå
¥åãããã¨ã§ä»¥ä¸ã®ãããªãã¨ãã§ãã¾ãã
ï¼â»1ï¼ç¤¾å¤ããã®ã¢ã¯ã»ã¹ã¯ã§ãã¾ãã
å¨è¾ºã®ã¹ãããï¼ä¾:ä¸éåç©åã¨ãæ±äº¬ãã¼ã ï¼ãªã©ã®æ å ±ã飲é£åºæ§ã«ç´ä»ã
å¨è¾ºé§ ã®æ å ±ãåå¾ï¼ç´¹ä»ãã¦ããæ©è½ã¯ä¸é¨ã§ãï¼
ãã®ãã¼ã«ãå¤ããªãæ¹ä¿®è¦æãä¸ãã£ã¦ãã¦ããã¾ããã®ã§ããªãã¬ã¤ã¹ãããã¨ã«ãªãã¾ãããæµè¡ãã®ãã¬ã¼ã ã¯ã¼ã¯ãã¤ããã¼ã å ã®ä»ã®æ¡ä»¶ã§ä½¿ããã¦ããã¨ããçç±ã§Laravelãé¸æããã¼ã å ã§æ å ±å ±æã§ããã®ã¯å¤§ããªã¡ãªããã ã¨èããã®ã§ãã
ããå®è£ ãé²ãã¦ããããå°ã£ã¦ãã¾ã£ãç¹ãããã¤ãããã¾ããã
1ï¼ãã£ãã·ã¥å¶ä½ã¦ã¼ã¶ã¨å®è¡æã®ã¦ã¼ã¶ãéãã¨ãã£ãã·ã¥ãåé¤ã§ããªã
Laravelã«ã¯ç¬èªã®ãã£ãã·ã¥æ©æ§ããããããã©ã«ãã§ã¯ä»¥ä¸ã®ãã£ã¬ã¯ããªé ä¸ã«ãã£ãã·ã¥ãä½æããã¦ããã¾ãã
ã¢ããªã±ã¼ã·ã§ã³ãã£ã¬ã¯ããª/bootstrap/cache/
Laravelã§ã¯ãã£ãã·ã¥ã使ããã¨ã§å¿çé度ãä¸ãã¦ãã¾ãããã®åé¢ãå é¨ãã£ãã·ã¥ãæ®ã£ã¦ãã¾ããããã¤ãã¦ããã©ã¦ã¶ããææ°ã®ç¶æ ã確èªã§ããªãã¨ããç¾è±¡ãèµ·ãã¾ãã
ããã§ãLaravelã®ã³ãã³ã artisanï¼ã¢ã«ãã¶ã³ã¨èªããããï¼ã使ãã¨ãç°¡åã«ãã£ãã·ã¥ãã¯ãªã¢ã§ãã¾ãã
php artisan cache:clear
ãããããããªã³ã®ç°å¢ã§ã¯ãããã¤æã®ã¦ã¼ã¶ã¨Apacheå®è¡ã¦ã¼ã¶ãéããããã³ãã³ããå®è¡ãã¦ã権éã¨ã©ã¼ãèµ·ãã¦ãã£ãã·ã¥ãåé¤ã§ãã¾ããã
ãã£ãã·ã¥ãæ¶ããããControllerãä½æ
ã©ãããã°è§£æ±ºã§ãããããæ¤è¨ãã¾ããã
Aæ¡ï¼Apacheå®è¡æã®ã¦ã¼ã¶ããããã¤æã®ã¦ã¼ã¶ã¨åãã«ãã
ãã®æ¹æ³ã§ã¯ã以ä¸ã®æ¸å¿µç¹ãããã¾ããã
- ç¨éãã¨ã«ã¦ã¼ã¶ãç¨æã»ç®¡çãã¦ããæå³ã失ããã
- ãµã¼ãå ã«ãã¾ãã¾ãªãã¼ã«ãå ±åãã¦ããããä»ã®ãã¼ã«ã«ãå½±é¿ãåºã
Bæ¡ï¼ãã£ãã·ã¥åé¤ããããä½æãå®è¡ãä½æ
次ã«æ¤è¨ãããã¡ãã®æ¹æ³ããã¡ãªãããããã¾ãã
ãã£ããæ¨æºã§ç¨æããã¦ããæ©è½ã¨ãåæ§ã®ç©ãä½ãã®ãæé
誤ã£ããã¡ã¤ã«ãæ¶ãã¦ãã¾ã£ããå°ãã¾ããã
Cæ¡ï¼Apacheå®è¡ã¦ã¼ã¶ããartisanã³ãã³ãã§ãã£ãã·ã¥ãåé¤ã§ããããã«ãã
ãã®Cæ¡ãæ¡ç¨ããã¦ã¼ã¶ãã£ãã·ã¥ãåé¤ã§ãããããªControllerãä½æãã¾ããããã¡ãããå®è¡ã§ããã³ãã³ãã¯çµã£ã¦ãã¾ãã
<?php namespace App\Http\Controllers; use Response; /** * ãããã¤å¾çã«ããã£ãã·ã¥ã¯ãªã¢çãè¡ãController */ class ArtisanController extends Controller { public function index(\Illuminate\Http\Request $request) { // cache:clear $artisan = base_path() . DIRECTORY_SEPARATOR . 'artisan cache:clear'; $command = "php {$artisan}"; exec("{$command} > /dev/null"); // config:cache $artisan = base_path() . DIRECTORY_SEPARATOR . 'artisan config:cache'; $command = "php {$artisan}"; exec("{$command} > /dev/null"); // route:cache $artisan = base_path() . DIRECTORY_SEPARATOR . 'artisan route:cache'; $command = "php {$artisan}"; exec("{$command} > /dev/null"); // view:clear $artisan = base_path() . DIRECTORY_SEPARATOR . 'artisan view:clear'; $command = "php {$artisan}"; exec("{$command} > /dev/null");
Jenkinsãããã¤æã«ãã£ãã·ã¥åé¤ãã«ããå®è¡ããï¼ãã®Controllerãå¼ã³åºãï¼ãã¨ã§ããã£ãã·ã¥ã®åé¤æ¼ããé²æ¢ãã¦ãã¾ãã
2ï¼ããã©ã«ãã§ã¯ç°å¢ãã¨ã®è¨å®ãã¡ã¤ã«åãæ¿ãã¨ç®¡çããã¥ãã
Laravelã«ã¯ç°å¢ãã¨ã®è¨å®ãã¡ã¤ã«.env
ããããå®è¡æã«èªåçã«èªã¿è¾¼ã¾ãã¾ãããã®ãããè¤æ°ã®ç°å¢ã§éçºãããã«ã¯è¨å®ãã¡ã¤ã«åãæ¿ãã¨ãã®ç®¡çãå¿
è¦ã«ãªã£ã¦ãã¾ãã
ãããªã³ã®ç°å¢ã¯ãéçºç°å¢ã»ãã¹ãç°å¢ã»æ¬çªç°å¢ã¨åããã¦ãã¾ãããã®ããåã ã®ç°å¢ã«åæ ãããã³ã«ã.envã®åãæ¿ããçºçãã¦ãã¾ããã
ãããã¦ãç°å¢ãã¨ã«è¨å®ãã¡ã¤ã«ãåãã¦ç®¡çããå¿ è¦ãããã¾ããç°å¢ãå¤ããã¨APIãDBã®æ¥ç¶å ãå¤ããã®ã§ãåãè¨å®ãã¡ã¤ã«ã使ã£ã¦ããã¨ééã£ãç®æãç·¨éãã¦ãã¾ãå¯è½æ§ããã£ãã®ã§ãã
ç°å¢ãã¨ã®.envãç¨æãã¦ããããã¤æã«åç°å¢ã®.envãåæ
ããã§æ¤è¨ããã®ã以ä¸ã®æ¹æ³ã§ãã
Aæ¡ï¼Git管çå¤ã§.envãåç°å¢ç¨ã«ç¨æãã¦ãåãµã¼ãã¼ã«é ç½®ãã¦ãã
ãã ãã以ä¸ã®æ¸å¿µãããã¾ããã
- ãã¼ã å ã®.envã®ãã¼ã¸ã§ã³ãçµ±ä¸ã§ããªã
ãµã¼ãã¼ä¸ã«ç½®ããå®ç¾©ãã¡ã¤ã«(.env)ããåå人ãåå¾ãã¦éçºããã°ãã¼ã¸ã§ã³çµ±ä¸ã§ããã¯ãã§ãããå¾ã ã«ãã¦åå¾ãå¿ãã人ã¯ãããã®ã§ãã
ããã«ãå¹³è¡éçºæã«åä¸ã®å®ç¾©ãã¡ã¤ã«(.env)ãä¿®æ£ããã¨ãæ°è¦è¿½å ããå 容ãä¸æ¸ãããã¦åããªããªãã±ã¼ã¹ãå¥ã®å 容ã«ç½®ãæãã£ã¦ä¸å ·åãçºçããã±ã¼ã¹ãèãããã¾ãã
Bæ¡ï¼Git管çå ã§ãç°å¢ãã¨ã«.envãç¨æ
Aæ¡ã¯åè¿°ã®éããæ¡ç¨ã§ãã¾ãããBæ¡ãæ¡ç¨ããä¸è¨ã®ããã«ç®¡çãã¾ããã
ç°å¢ | ãã¡ã¤ã«å |
---|---|
éçºç°å¢ | .env |
ãã¹ãç°å¢ | .env.TEST |
æ¬çªç°å¢ | .env.PROD |
ã.envã«éçºç°å¢ã®è¨å®ãæ¸ããããæ¬çªã§éçºç°å¢ç¨ã®è¨å®ã«ãªã£ã¦ãã¾ãããããã¨æã£ãæ¹ããã®éãã§ãã
ãã®ã¾ã¾ã§ã¯éçºç°å¢ç¨ã®è¨å®ããã®ã¾ã¾æ¬çªç°å¢ã«åæ ãããé害ã®åå ã¨ãªãã¾ããããã§åç°å¢ã¸ã®ãããã¤æã«ã.env.TESTã.env.PRODã.envã«ä¸æ¸ãããããã«ãã¦å¯¾å¦ãã¦ãã¾ãã
ä¾. æ¬çªç°å¢ã¸ãããã¤ããæ cp .env.PROD .env
ããã©ã«ããéçºç°å¢ã«ãã¦ããçç±ã¯ãããã¤ç°å¢ã«ããã¾ãããã¹ãç°å¢ã¨æ¬çªç°å¢ã¯ãJenkinsã§ãããã¤ããã¦ããããã®ãããã¤ãã«ãã³ãã³ãã«.env.åç°å¢ã®ãã¡ã¤ã«ã.envã¸ä¸æ¸ããã¦ãã¾ãã
ãããéçºç°å¢ã§ã¯Jenkinsã«ãããããã¤ç°å¢ãç¨æãã¦ãã¾ããã ãã®ããã.envã®ä¸æ¸ãã®æéãçç¥ããããããã©ã«ãã®è¨å®ãã¡ã¤ã«ãéçºç°å¢ã«ãã¦ãã¾ãã
3ï¼ãã°ã¨ãã£ãã·ã¥ã®åºåãã£ã¬ã¯ããªãåãã«ãªã£ã¦ãã
Laravelã§åºåãããã°ããã£ãã·ã¥ã®å ´æã¯ãããã©ã«ãã®ã¾ã¾ã ã¨ä»¥ä¸ã®ããã«ãªãã¾ãã
ã¢ããªã±ã¼ã·ã§ã³ãã£ã¬ã¯ããª/storage/logs/
ããããããªã³ã®éçºç°å¢ã§ã¯ãã¢ããªã±ã¼ã·ã§ã³ã®ãããã¤æã®ã¦ã¼ã¶ã¨Apacheã®å®è¡ã¦ã¼ã¶ãéãããããã®ã¾ã¾ã ã¨ãã°ãæ¸ãè¾¼ããªãäºæ ã«â¦â¦ã
Applicationãã¡ã¤ã«ãæ¸ãæãã¦ãã°ã®åºåå ãå¤ãã
ã¨ãããã¨ã§ããµãã¤ã®è§£æ±ºæ¡ãæ¤è¨ãã¾ããã
Aæ¡ï¼Apacheã®å®è¡ã¦ã¼ã¶ã§ãæ¸ãè¾¼ãã権éãä»ä¸ãã
ãã ãã以ä¸ã®æ¸å¿µãããã¾ããã
- ãã§ã«ç¨¼åä¸ã®ããã°ã©ã ãé ç½®ããã¦ããã¢ããªã±ã¼ã·ã§ã³ãã£ã¬ã¯ããªã«å¯¾ãã¦ã権éãæä½ããã®ã¯ããããå±éº
- ã¢ããªã±ã¼ã·ã§ã³ãã£ã¬ã¯ããªé ä¸ã«ãã°ãã£ã¬ã¯ããªãããã¨ã次åãããã¤æã«ãã°ãæ¶å»ãããå¯è½æ§ããã
- ãã°ãè¦ããã¨ããã ããªã®ã«ã誤ã£ã¦ã½ã¼ã¹ã³ã¼ããã¡ã¤ã«ã«è§¦ãã¦ãããªãã¦ãã¨ã«ããªãããã¾ãã
Bæ¡ï¼ãã°ã®åºåå ãå¤æ´ãã
Bæ¡ã®ããã°ã®åºåå å¤æ´ãæ¡ç¨ãã¾ããã
appãã£ã¬ã¯ããªç´ä¸ã®Application.phpãä¸è¨ã®è¦é ã§ä¿®æ£ãã¾ããããåå¨ããªãå ´åã¯ãæ°ãã«ä½æãã¦ãã ããããã®éã«ã¯ãã¬ã¼ã ã¯ã¼ã¯ã®Applicationã¯ã©ã¹ãç¶æ¿ããã®ãå¿ããã«ã
<?php namespace App; class Application extends \Illuminate\Foundation\Application { private $cache_path = 'åºåå ãã£ã¬ã¯ããª'; public function publicPath() { return dirname($this->basePath()) . '/docroot'; } public function storagePath() { return $this->cache_path . 'storage'; } public function getCachedCompilePath() { return $this->cache_path . 'bootstrap/cache/compiled.php'; } public function getCachedServicesPath() { return $this->cache_path . 'bootstrap/cache/services.php'; } public function getCachedConfigPath() { return $this->cache_path . 'bootstrap/cache/config.php'; } public function getCachedRoutesPath() { return $this->cache_path . 'bootstrap/cache/routes.php'; } }
storagePath()
ã®æ»ãå¤ã®ãã¹/logs/é
ä¸ã«ãã°ããgetCachedXxx()
ã®æ»ãå¤ã®ãã¹ã«åãã£ãã·ã¥ãåºåããã¾ãã
4ï¼ãéãå¦çããLaravelã§ã©ãå®è¡ãããï¼
ãªãã¬ã¤ã¹ãããã¼ã«ã®ä¸ã«ã¯ããå ¥åãããä½ç½®æ å ±ããå¨è¾ºã®ã¹ãããæ å ±ãé§ æ å ±ãåå¾ãã¦ãExcelãã¡ã¤ã«ï¼æ大5000è¡ï¼ãä½æãã¦ã¡ã¼ã«éä¿¡ãå®è¡ãããã¨ããéãæ©è½ãããã¾ããã
Webã¢ããªã±ã¼ã·ã§ã³å ã§æéã®ãããå¦çã¯é¿ãããã¨ãããã¬ã¹ãã³ã¹ãè¿ã£ã¦ããªãã£ãããã¿ã¤ã ã¢ã¦ãã§ã¨ã©ã¼ãã¼ã¸ã表示ããã¦ãã¾ã£ããã¦ã¼ã¶ã®ã¹ãã¬ã¹ã«ãªãã¾ãã
ãããã£ãã¨ãã«æå¹ãªã®ãããã¥ã¼ãã§ãã
- ãã¥ã¼ã¨ã¯
-
Laravelã®ãã¥ã¼ã使ãã¨ããã¼ã¿ãã¼ã¹ãã¼ãã«ã«ç»é²ããã¸ã§ããä»»æã®ã¿ã¤ãã³ã°ã§å®è¡ã§ãã¾ããæéã®ãããå¦çãéåæã§å®è¡ã§ããã®ã§ã
- ãã¼ã¿ãæ½åºãã¦ã¡ã¼ã«ãéä¿¡ããå¦çï¼ä»åã®ã±ã¼ã¹ï¼
- 大éãã¼ã¿ãéè¨ããå¦ç
- å¤éã®è¤æ°ãã¼ãã«ãåç §ã»æ´æ°ããå¦ç
artisanã³ãã³ãã§ããã¯ã¨ã³ãå¦çãå¼ã³åºã
ãã£ããã®Laravelãªã®ã§ãã¥ã¼ã使ã£ã¦ã¿ããã£ãã®ã§ããããªãªã¼ã¹æ¥ããªã½ã¼ã¹ã®é¢ä¿ã§æ念ã
ããã¯ã¨ã³ãå¦çï¼ã³ã³ã½ã¼ã«ï¼ãå¼ã³åºãæ¹æ³ãæ¡ç¨ãã¾ããã
å¦çãå¼ã³åºãå´ã®æ¸ãæ¹
ããã§ãartisanã³ãã³ãã使ãã¾ããartisanã使ããã«ç´æ¥PHPãå®è¡ãããã¨ããã¨ãLaravelå ã®å種æ©è½ï¼ä½æããModelçãï¼ã使ããªããã注æãå¿ è¦ã§ãã
nohup php ã¢ããªã±ã¼ã·ã§ã³ãã£ã¬ã¯ããª/artisan ä½æããã³ã³ã½ã¼ã«å å¼æ° > /dev/null &
ãã®ã¹ã¯ãªããã§ä»¥ä¸ã®ã³ã³ã½ã¼ã«ï¼PHPã³ã¼ãï¼ãå¼ã³åºãã¾ãã
$dl_no = $request->input('dl_no'); $format = $request->input('format'); $mail_address = $request->input('mail_address'); $artisan = base_path() . DIRECTORY_SEPARATOR . 'artisan downloadareas'; $argument = "{$dl_no} {$format} {$mail_address}"; $command = "php {$artisan} {$argument}"; exec("nohup {$command} > /dev/null &");
å¦çãå¼ã³åºãããå´ã®æ¸ãæ¹
artisanã§ã³ã³ã½ã¼ã«ãä½æãã¾ãã
php artisan make:console ã³ã³ã½ã¼ã«å
ãã¡ãã®ã³ã¼ãã§ã¯ããã¼ã¿ï¼å¼æ°ï¼ã®åãæ¹ãLaravelç¬ç¹ã®ããã¯ã¨ã³ãå¦çããã¦ãã¾ãã
$signature
ã«ã¯ã³ã³ã½ã¼ã«å{å¼æ°1ã®åå}{å¼æ°2ã®åå}ãå
¥ããå¼æ°ã¯$this->argument(å¼æ°ã®å称)
ã§åå¾ãã¦ãã¾ãã
class DownloadAreas extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'downloadareas {dl_no} {format} {mail_address}'; public function handle() { logger()->info(__CLASS__ . ':start', $this->argument()); $dl_no = $this->argument('dl_no');
ãã®å¾ã¯é常ã®PHPå¦çã¨å¤ããã¾ããã
çµã³
Laravelã§ãå°ã£ãç¹ã¨ãã®å¯¾å¦æ¹æ³ãã¾ã¨ãã¦ã¿ã¾ãããå®éã«Laravelã使ç¨ãã¦ãã¦ä¼¼ããããªç®æã§å°ã£ã¦ããæ¹ã®æå©ãã«ãªãã°å¹¸ãã§ãã
ãç¥ãã
ãããªã³ã§ã¯ä¸ç·ã«åã仲éãåéãã¦ãã¾ãã