laravels 安装与配置
前提条件
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 配置
文档地址
gitee.com/hhxsv5/laravel-s/blob/ma...
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
等等
~ 表示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
显示
supervisor设置进程守护
1.安装
yum install Supervisor
2.启动服务
supervisord -c /etc/supervisord.conf
进入 cd /etc 目录 找到supervisord.conf 配置文件 和 supervisord.d 文件夹,使用vim编辑supervisord.conf文件,拉到最底部我们可以看到
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
说明已经有进程在跑 更说明我们配置成功了
本地更新代码推送后 线上代码不实时更新问题 (修改代码后自动Reload)
1.下载 inotify
下载地址 pecl.php.net/package/inotify
2 安装
copy到我们的云服务器上
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
end 只要一步一步来 都没啥问题
本作品采用《CC 协议》,转载必须注明作者和本文链接
请问安装依赖后,实际写业务逻辑,接口,写法需要改变吗?还是要参照 swoole文档的格式去写?
应该不用 supervisor 守护
总是报跨域错误。加了跨域中间件也没用