https://learnku.com/docs/laravel/10.x/octane/14909#swoole
https://segmentfault.com/a/1190000040673969
https://chriswhite.is/coding/swoole-vs-roadrunner-for-laravel-octane/
composer require laravel/octane
# 选择 swoole
php artisan octane:install
# 安装 swoole
pecl install swoole
# 查找 php.ini 文件位置
php -i grep | php.ini
# vim 编辑,并配置
extension=swoole.so
# 重启 php
sudo /etc/init.d/php-fpm restart
# 查看扩展
php -i |grep swoole
然后配置 swoole. 打开根目录下的 config/octance.php,加入下边的配置。
'swoole' => [
'options' => [
'log_file' => storage_path('logs/swoole/swoole_http.log'),
'package_max_length' => 10 * 1024 * 1024,
],
],
可以对一些细节进行配置。
# 指定服务,这里是 swoole
OCTANE_SERVER=
# 是否使用 https
OCTANE_HTTPS
下边来启动服务。
php artisan octane:start
配置 nginx
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
server_tokens off;
server_name .youme.com;
root "/home/vagrant/code/temp/youme.com/public";
index index.html index.htm index.php;
charset utf-8;
location /index.php {
try_files /not_exists @octane;
}
location / {
try_files $uri $uri/ @octane;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/youme.com-error.log error;
sendfile off;
location @octane {
set $suffix "";
if ($uri = /index.php) {
set $suffix ?$query_string;
}
proxy_http_version 1.1;
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;
proxy_pass http://127.0.0.1:8000$suffix;
}
ssl_certificate /etc/ssl/certs/youme.com.crt;
ssl_certificate_key /etc/ssl/certs/youme.com.key;
}
完整的配置是这样子的。
然后安装 chokidar 来监视。
项目目录下
sudo pnpm add -D chokidar
下边来启动 Octane 看看请求。
php artisan octane:start --watch
多次刷新浏览器,请求如下所示。
测试网页如下所示。测试网页就是直接使用初始化的 laravel 项目的。
当然,你也可以手动指定端口、进程这些。
php artisan octane:start --server=swoole --port=8010
# 指定进程数
php artisan octane:start --workers=4
php artisan octane:start --max-requests=250
php artisan octane:start --workers=4 --task-workers=6
守护进程
到此,用时用上了,可是你终端不能关啊。你一关窗口。服务就停了。必须得一直盯着,这滋味不好受压。这个着急啊。可是,是有方法的。 node.js 那边一般用 pm2 来达成守护的作用。 php 这边可以用 supervisord 来实现。
在 /etc/supervisor/conf.d 下,新建 youme.com.conf 文件。 ubuntu 和 centos 文件夹以及命名可能会有些不一样。注意点。
[program:youme.com]
process_name=%(program_name)s_%(process_num)02d
command=/usr/bin/php8.2 /home/vagrant/code/temp/youme.com/artisan octane:start
autostart=true
autorestart=true
user=nginx
numprocs=3
redirect_stderr=true
stdout_logfile=/etc/supervisor/conf.d/youme.com.log
stderr_logfile=/etc/supervisor/conf.d/youme.com_err.log
启动。