Laradock中使用swoole

  • 環(huán)境:mac
  1. 首先我們需要在 laradock.env文件下面修改WORKSPACE_INSTALL_SWOOLE=true
  2. 重新 build 一下虛擬機(jī)
docker-compose build workspace`
  1. 重新 build 好了之后,啟動(dòng)
docker-compose restart workspace
  1. 進(jìn)入虛擬機(jī)檢查一下是否安裝成功了
docker-compose exec workspace bash
 
php -m | grep swoole,

如果打印出了swoole,就證明安裝成功了

  1. 接下來(lái),我們要修改一下 nginx 的配置文件

         map $http_upgrade $connection_upgrade {
             default upgrade;
             ''      close;
         }
         upstream laravels {
             # Connect IP:Port
             server workspace:1215 weight=5 max_fails=3 fail_timeout=30s;
             keepalive 16;
         }
         server {
    
             listen 80;
         #    listen [::]:80 ipv6only=on;
    
             server_name yourdomain.com;
             root /var/www/swoole/public;
             index index.php index.html index.htm;
             error_log /var/www/swoole_error.log;
    
             location = /index.php {
                 # Ensure that there is no such file named "not_exists"
                 # in your "public" directory.
                 try_files /not_exists @swoole;
             }
    
             location / {
                  try_files $uri $uri/ @swoole;
             }
    
             location @swoole {
                 set $suffix "";
    
                 if ($uri = /index.php) {
                     set $suffix ?$query_string;
                 }
    
                 proxy_set_header Host $http_host;
                 proxy_set_header Scheme $scheme;
                 proxy_set_header SERVER_PORT $server_port;
                 proxy_set_header REMOTE_ADDR $remote_addr;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_set_header Upgrade $http_upgrade;
                 proxy_set_header Connection $connection_upgrade;
    
                 # IF https
                 # proxy_set_header HTTPS "on";
    
                 proxy_pass http://laravels$suffix;
             }
    
             location ~ /\.ht {
                 deny all;
             }
    
             location /.well-known/acme-challenge/ {
                 root /var/www/letsencrypt/;
                 log_not_found off;
             }
         }
    
    

    這份配置文件,是參照官方文檔的,這里面有個(gè)很關(guān)鍵的地方,就是修改 upsteam 那里,server workspace:1215。因?yàn)槲覀?Nginx 的運(yùn)行是跟 laravel 的環(huán)境在不同一臺(tái)機(jī)子的,所以你必須修改這里的upsteam,不然就會(huì)造成502。

  2. 接下來(lái),我們進(jìn)入我們的 laravel 項(xiàng)目,安裝一下laravel-swoole

composer require swooletw/laravel-swoole
php artisan vendor:publish --tag=laravel-swoole
  1. 然后接下來(lái),我們可以修改一下 laravel的.env 文件,讓laravel-swoole變成守護(hù)進(jìn)程啟動(dòng)還有指定 swoole 代理的host,
SWOOLE_HTTP_HOST=workspace
SWOOLE_HTTP_DAEMONIZE=true
SWOOLE_HOT_RELOAD_ENABLE=true

端口我沒有修改,默認(rèn)是1215,如果有需要可以自行修改,記得修改nginx。

  1. 啟動(dòng)swoole
php artisan swoole:http start | stop | restart | resload

打開我們的網(wǎng)頁(yè)我修改了host,所以我用的是自定義的域名,打開之后如果你看到歡迎頁(yè)面
恭喜你,成功了。另外,假設(shè)你發(fā)現(xiàn)啟動(dòng)了swoole 之后,性能反而變慢了,那就要進(jìn)行一些參數(shù)調(diào)優(yōu)了,具體可以參照官方的文檔swoole,這里就不展開講了。

  1. 開發(fā)環(huán)境熱更新

調(diào)整 swoole_http 中 max_request = 1
san swoole:http start | stop | restart | resload

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容