はじめに
まず最初に、前回の記事Cloud9でLaravel構築の環境構築を前提に書いている。ブロードキャストのSocket.Ioをまずはじめに目を通しておくこと。
Apache
sudo vim /etc/apache2/ports.conf
その後、Listen 8082
を追加し保存する。Listen 8082
supervisorのインストール
既にインストール済みの場合は無視する。cd ~/workspace/laravel
sudo apt-get install supervisor
sudo sysv-rc-conf supervisord on
sudo service supervisord start
apache
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo service restart apache2
sudo vim /etc/apache2/sites-enabled/001-cloud9.conf
その後、下記の内容を追加する。# laravel-echo
<VirtualHost *:8082>
ServerName https://${C9_HOSTNAME}:443
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:6001/
ProxyPassReverse / http://127.0.0.1:6001/
</VirtualHost>
laravel-echo & laravel-echo-serverのインストール
cd ~/workspace/laravel
npm install laravel-echo
npm install -g laravel-echo-server
詳しくは→laravel-echo-serverCLIツールで初期化
cd ~/workspace/laravel
$ laravel-echo-server init
? Do you want to run this server in development mode? Yes
? Which port would you like to serve from? 6001
? Which database would you like to use to store presence channel members? redis
? Enter the host of your Laravel authentication server. http://localhost
? Will you be serving on http or https? http
? Do you want to generate a client ID/Key for HTTP API? Yes
appId: 任意のIDが作られる
key: 任意のキーが作られる
Configuration file saved. Run laravel-echo-server start to run server.
その後、以下の内容のlaravel-echo-server.json
が作られる。{
"authHost": "http://localhost",
"authEndpoint": "/broadcasting/auth",
"clients": [
{
"appId": "任意のIDが作られる",
"key": "任意のキーが作られる"
}
],
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": true,
"host": null,
"port": "6001",
"protocol": "http",
"socketio": {},
"sslCertPath": "",
"sslKeyPath": ""
}
supervisorコンフィグファイルの作成
sudo vim /etc/supervisor/conf.d/laravel-echo.conf
[program:laravel-echo]
directory=/home/ubuntu/workspace/laravel/
process_name=%(program_name)s_%(process_num)02d
command=/home/ubuntu/.nvm/versions/node/v7.10.0/bin/laravel-echo-server start
autostart=true
autorestart=true
user=ubuntu
numprocs=1
redirect_stderr=true
stdout_logfile=/home/ubuntu/workspace/laravel/echo.log
stderr_logfile=/home/ubuntu/workspace/laravel/echo_error.log
environment=PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ubuntu/.nvm/versions/node/v7.10.0/bin
その後保存。sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-echo:*
sudo service restart apache2
この時点で、https://laravel-template-XXXX.c9users.io:8082/
にアクセスすると、Cannot GET /
と出力されれば成功。ブロードキャスト:Socket.IOをみると、ポート番号が
6001
となっているが、Cloud9の仕様上8082
に書き換えて使用すること。