php 7.1 + ubuntu16.x + apache2 + mysql
-- apach2 설치 및 설정
#> sudo apt update
#> sudo apt upgrade
#> sudo apt install apache2
#> sudo vim /etc/apache2/apache2.conf
<Directory /home/계정/laravel-websocket/public>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
#> sudo vim /etc/apache2/sites-available/laravel.conf
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/home/계정/laravel-websocket/public"
<Directory "/home/계정/laravel-websocket/public">
AllowOverride all
</Directory>
</VirtualHost>
#> sudo a2dissite 000-default.conf
#> sudo a2ensite laravel.conf
#> sudo a2enmod rewrite
#> sudo service apache2 restart
-- mysql 설치
#> sudo apt install mysql-server
-- php 7.1 설치
#> sudo add-apt-repository ppa:ondrej/php
#> sudo apt-get update
#> sudo apt-cache search php7.1
#> sudo apt-get install php7.1
#> sudo apt-get install php7.1-fpm
-- composer 설치
#> curl -sS https://getcomposer.org/installer | php
#> sudo mv composer.phar /usr/local/bin/composer
-- 라라벨 설치
#> composer create-project --prefer-dist laravel/laravel laravel-websocket
-- 설치 후 권한 부여
sudo chgrp -R www-data /home/계정/laravel-websocket
sudo chmod -R 775 /home/계정/laravel-websocket/storage
-- 라라벨 웹 소스켓 설치 ( 참조 URL : https://docs.beyondco.de/laravel-websockets/1.0/getting-started/installation.html ) - // step 참조
#> sudo apt-get install php-mbstring
#> sudo apt-get install php7.1-mbstring // if your are using php 7.1
#> sudo apt-get install php7.1-xml // If PHP version is 7.1, execute the following command
#> sudo apt-get install zip unzip php7.1-zip
#> sudo apt-get install php7.1-curl
/home/계정/laravel-websocket #> composer require beyondcode/laravel-websockets // step 1
/home/계정/laravel-websocket #> php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations" // step 2
-- 확인 1
#> cd /home/계정/laravel-websocket/database/migrations
2019_06_10_xxxxxx_create_websockets_statistics_entries_table.php
파일명이 다르지만 위와 같은 파일이 있는 지 확인 한다.
-- 라라벨에 Mysql 설정
1) Mysql 계정 생성
create user '계정'@'localhost' identified by '패스워드'
grant all privileges on *.* to '계정'@'localhost';
grant all privileges on DB이름.* to '계정'@'localhost';
2) laravel 의 설정파일 .env 파일의 mysql 설정 ( 위 계정 정보 입력 )
DB_DATABASE=DB명
DB_USERNAME=DB접속계정
DB_PASSWORD=계정의패스워드
3) php artisan migrate // step 3
4) php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="config" // step 4
-- 확인 2 및 수정
#> cd /home/계정/laravel-websocket/config
websockets.php 이 설치 되었는지 확인
위 파일에서
'path' => 'adm/ws'
이렇게 원하는 형태로 수정한다.
아울러 .env 파일을 열어 pusher 관련으로 적당히 넣어준다.
#> cd /home/계정/laravel-websocket/.env
위 파일에서
PUSHER_APP_ID=anyID
PUSHER_APP_KEY=anyKey
PUSHER_APP_SECRET=anySecret
이런식으로 수정한다.
-- 실행 1
/home/계정/laravel-websocket #> php artisan serve --host=도메인또는IP입력 --port=8000
-- 실행 2
브라우져에서 "도메인또는IP입력:8000/admin/websocket" 을 실행하면 아래와 같이 나오게 된다. 또는 간혹
"No application encryption key has been specified" 에러가 나게 될때는
#> php artisan key:generate
을 실행 후 "도메인또는IP입력:8000/adm/ws" 을 실행하면 정상적으로 나오는것을 확인 할 수 있다.

-- 라라벨 웹소켓 설정 ( 참조 https://docs.beyondco.de/laravel-websockets/1.0/basic-usage/pusher.html#requirements ) // step 참조
#> composer require pusher/pusher-php-server "~3.0" // step 4
#> cd /home/계정/laravel-websocket/.env
위 파일에서
BROADCAST_DRIVER=pusher
이렇게 수정한다.
-- 라라벨 웹 소켓 설정 ( 참조 https://docs.beyondco.de/laravel-websockets/1.0/basic-usage/pusher.html#pusher-configuration )
#> cd /home/계정/laravel-websocket/config/broadcasting.php 수정
'host' => '127.0.0.1',
'port' => 6001,
'scheme' => 'http'
위 URL 을 참조 하여 수정하여 준다.
-- 라라벨 웹소켓 설정 Echo ( 참조 https://docs.beyondco.de/laravel-websockets/1.0/basic-usage/pusher.html#usage-with-laravel-echo )
#> sudo apt-get install npm 을 우선 설치한다.
/home/계정/laravel-websocket #> npm install 실행
/home/계정/laravel-websocket #> npm install laravel-echo pusher-js
home\계정\laravel-websocket\resources\js\bootstrap.js 수정
- 위 해당 파일의 하단에 내용 주석 제거 , 삭제 , 추가
-----------------------------------------------------------------------------------------
import Echo from 'laravel-echo'
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
wsHost: window.location.hostname,
wsPort: 6001,
disableStats: true
});
-----------------------------------------------------------------------------------------
/home/계정/laravel-websocket #> npm run watch
위 watch 를 실행 시켜 놓은 상태에서 새로운 터미털 창을 열어서
아래와 같이 실행한다.

/home/계정/laravel-websocket #> php artisan websocket:serve
실행 이후 브라우져에서
http://192.168.219.105/admin/ws 를 아래 그림과 같이 새로고침 이후 "connect" 버튼을 눌르면
실행 되고 있는 상태를 확인 할 수 있다.

새로운 터미널을 열어서 아래와 같이 실행
/home/계정/laravel-websocket #> php artisan make:event wstestEvent
- 아래 파일을 수정한다.
laravel-websocket\app\Events\wstestEvent.php
class wstestEvent
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $somedata ;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($somedata)
{
$this->somedata = $somedata;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new Channel(‘TestChannel’);
}
}
-- 아래 파일에 접근하여 수정 추가한다.
laravel-websocket\routes\web.php