PHP Laravel – websocke

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

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다