はじめに
Amazon EC2 (Amazon Linux) + PHP 5.6 + Laravel 5.3.11用のPHPビルトインサーバ起動スクリプト、停止スクリプトを作成しましたので以下に記します。
LaravelはPHPビルトインサーバを起動する事で、ApacheがなくてもWebサーバを起動する事が出来ます。Apacheの設定を行わずに、手早くLaravelプロジェクトの表示確認を行いたい便利です。
参考資料
PHPのビルトインサーバで動かしたい
http://recipes.laravel.jp/recipe/51
実行環境
PHP 5.6 + Laravel 5.3.11環境については、以下の手順で作成したAmazon EC2インスタンス(Amazon Linux)を利用しました。
Laravelプロジェクトとして、/var/www/laravel/exampleapp を作成している前提で説明致します。
[ec2-user@example-laravel-server ~]$ cd /var/www/laravel
[ec2-user@example-laravel-server laravel]$ pwd
/var/www/laravel
[ec2-user@example-laravel-server laravel]$
[ec2-user@example-laravel-server laravel]$ laravel new exampleapp
[ec2-user@example-laravel-server ~]$ cd /var/www/laravel/exampleapp
[ec2-user@example-laravel-server exampleapp]$ pwd
/var/www/laravel/exampleapp
[ec2-user@example-laravel-server exampleapp]$ php artisan --version
Laravel Framework version 5.3.19
[ec2-user@example-laravel-server exampleapp]$
[ec2-user@example-laravel-server ~]$ php -v
PHP 5.6.26 (cli) (built: Oct 6 2016 19:48:12)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
[ec2-user@example-laravel-server ~]$
Laravel 5.3のPHPビルトインサーバ起動スクリプト作成
Laravel 5.3のPHPビルトインサーバ起動スクリプトを作成します。
[ec2-user@example-laravel-server ~]$ vi /home/ec2-user/start_laravel.sh
#!/bin/bash
LARAVEL_PROJECT_DIR="/var/www/laravel/exampleapp"
LARAVEL_SERVER_IPADDRESS="0.0.0.0"
LARAVEL_SERVER_PORT="8000"
if [ -d $LARAVEL_PROJECT_DIR ] && [ `ps awux | grep -v grep | grep php | grep $LARAVEL_SERVER_IPADDRESS | wc -l` -eq 0 ] ; then
echo "start laravel built in server."
cd $LARAVEL_PROJECT_DIR
pwd
php artisan serve --port=$LARAVEL_SERVER_PORT --host=$LARAVEL_SERVER_IPADDRESS &
sleep 1
ps awux | grep -v grep | grep php | grep $LARAVEL_SERVER_IPADDRESS
fi
起動スクリプトに実行権限を付けます。
[ec2-user@example-laravel-server ~]$ chmod 755 /home/ec2-user/start_laravel.sh
Laravel 5.3のPHPビルトインサーバ停止スクリプト作成
今度はLaravel 5.3のPHPビルトインサーバの停止スクリプトを作成します。
[ec2-user@example-laravel-server ~]$ vi /home/ec2-user/stop_laravel.sh
#!/bin/bash
LARAVEL_PROJECT_DIR="/var/www/laravel/exampleapp"
LARAVEL_SERVER_IPADDRESS="0.0.0.0"
LARAVEL_SERVER_PORT="8000"
if [ `ps awux | grep -v grep | grep php | grep $LARAVEL_SERVER_IPADDRESS | wc -l` -ge 1 ] ; then
echo "stop laravel built in server."
kill `ps awux | grep -v grep | grep php | grep $LARAVEL_SERVER_IPADDRESS | awk '{print $2}'`
sleep 1
ps awux | grep -v grep | grep php | grep $LARAVEL_SERVER_IPADDRESS
fi
停止スクリプトに実行権限を付けます。
[ec2-user@example-laravel-server ~]$ chmod 755 /home/ec2-user/stop_laravel.sh
[ec2-user@example-laravel-server ~]$
Laravel 5.3のPHPビルトインサーバ起動
Laravel 5.3のPHPビルトインサーバ起動スクリプトを実行し、ビルトインサーバを起動してみます。
[ec2-user@example-laravel-server ~]$ ps awux | grep -v grep | grep php
[ec2-user@example-laravel-server ~]$
[ec2-user@example-laravel-server ~]$ id
uid=500(ec2-user) gid=500(ec2-user) groups=500(ec2-user),10(wheel)
[ec2-user@example-laravel-server ~]$ pwd
/home/ec2-user
[ec2-user@example-laravel-server ~]$
[ec2-user@example-laravel-server ~]$ /home/ec2-user/start_laravel.sh
start laravel built in server.
/var/www/laravel/exampleapp
Laravel development server started on http://0.0.0.0:8000/
ec2-user 6325 7.0 3.0 346048 30768 pts/1 S+ 22:11 0:00 php artisan serve --port=8000 --host=0.0.0.0
ec2-user 6330 0.0 1.7 334632 17472 pts/1 S+ 22:11 0:00 /usr/bin/php-5.6 -S 0.0.0.0:8000 /var/www/laravel/exampleapp/server.php
[ec2-user@example-laravel-server ~]$
WebブラウザからLaravel 5.3プロジェクトのページを表示出来る事を確認します。
Laravel 5.3のPHPビルトインサーバ停止
Laravel 5.3のPHPビルトインサーバ停止スクリプトを実行し、ビルトインサーバを停止してみます。
[ec2-user@example-laravel-server ~]$ pwd
/home/ec2-user
[ec2-user@example-laravel-server ~]$
[ec2-user@example-laravel-server ~]$ /home/ec2-user/stop_laravel.sh
stop laravel built in server.
[ec2-user@example-laravel-server ~]$
[ec2-user@example-laravel-server ~]$ ps awux | grep -v grep | grep php
[ec2-user@example-laravel-server ~]$
以上になります。