## 前提条件 ### 1.安装swoole 下载swoole压缩包 ``` cd swoole-src phpize ./configure make && sudo make install ``` ~ 最后不要忘了把 swoole.so 放置到php.ini中 ### 2.安装laravel框架 ``` composer create-project --prefer-dist laravel/laravel blog ``` ### 3.laravel+swoole 配置 `文档地址` https://gitee.com/hhxsv5/laravel-s/blob/master/README-CN.md?hmsr=aladdin1e5#%E5%AE%89%E8%A3%85 a.通过Composer安装(packagist)。 ``` composer require "hhxsv5/laravel-s:~3.7.0" -vvv # 确保你的composer.lock文件是在版本控制中 ``` b.注册Service Provider Laravel: 修改文件config/app.php ``` 'providers' => [ //... Hhxsv5\LaravelS\Illuminate\LaravelSServiceProvider::class, ], ``` c. 执行 ``` php artisan laravels publish ``` ### 4. 配置nginx监听 ``` upstream api-swoole { # 通过 IP:Port 连接 server 0.0.0.0:5201 weight=5 max_fails=3 fail_timeout=30s; keepalive 16; } server { listen 80; server_name api.xxx.cn; root /www/api.xxx.cn/public; access_log /www/log/nginx/$server_name.access.log; autoindex off; index index.php index.html index.htm; location / { try_files $uri @laravels; } location @laravels { # proxy_connect_timeout 60s; # proxy_send_timeout 60s; # proxy_read_timeout 120s; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-PORT $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header Scheme $scheme; proxy_set_header Server-Protocol $server_protocol; proxy_set_header Server-Name $server_name; proxy_set_header Server-Addr $server_addr; proxy_set_header Server-Port $server_port; # “http://api-swoole”是指upstream proxy_pass http://api-swoole; } # 下面websocket 用不到可直接删除 location =/ws { # proxy_connect_timeout 60s; # proxy_send_timeout 60s; # proxy_read_timeout:如果60秒内被代理的服务器没有响应数据给Nginx,那么Nginx会关闭当前连接;同时,Swoole的心跳设置也会影响连接的关闭 # proxy_read_timeout 60s; proxy_http_version 1.1; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-PORT $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header Scheme $scheme; proxy_set_header Server-Protocol $server_protocol; proxy_set_header Server-Name $server_name; proxy_set_header Server-Addr $server_addr; proxy_set_header Server-Port $server_port; proxy_set_header Upgrade $http_upgrade; #proxy_set_header Connection $connection_upgrade; proxy_pass http://api-novel-swoole; } } ``` ~ 配置完成后可 执行nginx检查命令 `nginx -t` 这个命令根据自己的服务器配置 有些是`usr/local/nginx/sbin nginx -t` 等等 ![laravels 初次使用](https://cdn.learnku.com/uploads/images/202109/22/37778/xkGxokIzkl.png!large) ~ 表示nginx配置没问题 ### 5 配置config/laravels.php 监听执行port和ip ``` 'listen_port' => env('LARAVELS_LISTEN_PORT', 5201),//此端口号与nginx配置一致 'listen_ip' => env('LARAVELS_LISTEN_IP', '0.0.0.0'),//0.0.0.0 代表任意IP ``` ### 6.基本上就OK了 执行 `php bin/laravels start`显示 ![laravels 初次使用](https://cdn.learnku.com/uploads/images/202109/22/37778/1odOJpJYck.png!large) ## supervisor设置进程守护 ### 1.安装 ``` yum install Supervisor ``` #### **2.启动服务** ~~~ supervisord -c /etc/supervisord.conf ~~~ 进入 cd /etc 目录 找到supervisord.conf 配置文件 和 supervisord.d 文件夹,使用vim编辑supervisord.conf文件,拉到最底部我们可以看到 ![](https://img.kancloud.cn/cd/ab/cdab86f7f44629ad43e893fd10c85b0d_575x142.png) files = supervisord.d/\*.ini 这句代码说明它会加载supervisord.d文件夹中的所有.ini配置文件 * 我们可以 创建一个文件夹 专门管理第三步的编辑 也可以选择默认 #### **3.编辑配置文件** 随后我们在`supervosprd.d`中创建一个`api_novel.ini`文件并编辑如下 [program:api-novel] process_name=%(program_name)s_%(process_num)02d directory=/www/api.xxx.cn 这是你的项目路径 command=/usr/local/php/bin/php bin/laravels start -i numprocs=1 autostart=true autorestart=true startretries=3 user=root redirect_stderr=true stdout_logfile=/www/api.xxx.cn/storage/logs/swoole/success.log //日志写入 stderr_logfile=/www/api.xxx.cn/storage/logs/swoole/error.log ### 4.执行 ``` supervisorctl reload //重新加载配置文件 supervisorctl update //更新配置文件 ``` ### 5.执行 `php bin/laravels start` ![laravels 初次使用](https://cdn.learnku.com/uploads/images/202109/22/37778/sXAxn4EBpw.png!large) 说明已经有进程在跑 更说明我们配置成功了 ## 本地更新代码推送后 线上代码不实时更新问题 (修改代码后自动Reload) ### 1.下载 inotify 下载地址 https://pecl.php.net/package/inotify ### 2 安装 copy到我们的云服务器上 ![laravels 初次使用](https://cdn.learnku.com/uploads/images/202109/22/37778/Js9fKQv7R9.png!large) ``` tar -zxvf inotify-3.0.0.tgz 解压 cd inotify-3.0.0 进入解压后的目录 ./configure --prefix=/usr/local/inotify 配置 make && make install 安装 ``` 添加拓展到php.ini inotify.so路径根据自己 一般安装成功后最下面会显示出来文件路径 extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20200930/inotify.so 宝塔 安装 inotify https://www.chengzhigang.cn/al/75.html ## end 只要一步一步来 都没啥问题 ![laravels 初次使用](https://cdn.learnku.com/uploads/images/202109/22/37778/RCqEF1tojC.png!large)