我的是win10下面的centos虛擬機,centos系統是7.8.2003的。php版本和swoole下面啓動信息裏面有展示。
安裝之前要先單獨創建一個目錄
mkdir easy_sw && cd easy_sw
composer require easyswoole/easyswoole
不然搞得你的根目錄亂糟糟的。
運行啓動命令報錯
php vendor/easyswoole/easyswoole/bin/easyswoole install
php easyswoole start
報錯如下:
______ _____ _
| ____| / ____| | |
| |__ __ _ ___ _ _ | (___ __ __ ___ ___ | | ___
| __| / _` | / __| | | | | \___ \ \ \ /\ / / / _ \ / _ \ | | / _ \
| |____ | (_| | \__ \ | |_| | ____) | \ V V / | (_) | | (_) | | | | __/
|______| \__,_| |___/ \__, | |_____/ \_/\_/ \___/ \___/ |_| \___|
__/ |
|___/
main server SWOOLE_WEB
listen address 0.0.0.0
listen port 9501
ip@enp0s3 192.168.10.136
worker_num 8
reload_async true
max_wait_time 3
pid_file /mnt/share/easy_sw/Temp/pid.pid
log_file /mnt/share/easy_sw/Log/swoole.log
user root
daemonize false
swoole version 4.5.1
php version 7.3.18
easy swoole 3.3.7
develop/produce develop
temp dir /mnt/share/easy_sw/Temp
log dir /mnt/share/easy_sw/Log
[2020-06-04 09:35:43][debug][error]:[EasySwoole\Task\Worker bind /mnt/share/easy_sw/Temp/EasySwoole.TaskWorker.1.sock fail case Operation not permitted at file:/mnt/share/easy_sw/vendor/easyswoole/component/src/Process/Socket/AbstractUnixProcess.php line:31]
[2020-06-04 09:35:43][debug][error]:[EasySwoole\Task\Worker bind /mnt/share/easy_sw/Temp/EasySwoole.TaskWorker.0.sock fail case Operation not permitted at file:/mnt/share/easy_sw/vendor/easyswoole/component/src/Process/Socket/AbstractUnixProcess.php line:31]
[2020-06-04 09:35:43][debug][error]:[EasySwoole\Task\Worker bind /mnt/share/easy_sw/Temp/EasySwoole.TaskWorker.2.sock fail case Operation not permitted at file:/mnt/share/easy_sw/vendor/easyswoole/component/src/Process/Socket/AbstractUnixProcess.php line:31]
[2020-06-04 09:35:43][debug][error]:[EasySwoole\Task\Worker bind /mnt/share/easy_sw/Temp/EasySwoole.TaskWorker.3.sock fail case Operation not permitted at file:/mnt/share/easy_sw/vendor/easyswoole/component/src/Process/Socket/AbstractUnixProcess.php line:31]
[2020-06-04 09:35:43][debug][error]:[EasySwoole\EasySwoole\Bridge\BridgeProcess bind /mnt/share/easy_sw/Temp/bridge.sock fail case Operation not permitted at file:/mnt/share/easy_sw/vendor/easyswoole/component/src/Process/Socket/AbstractUnixProcess.php line:31]
根據錯誤信息排查到是因爲沒有下面的幾個文件,原因是創建socket的時候系統報錯Operation not permitted
,根本原因是虛擬機共享目錄不支持這種操作。
解決問題:
修改dev.php裏面的緩存目錄配置,使用linux系統的臨時目錄即可:
再次運行,正常。進到緩存目錄查看:
如果要讓外部訪問還需要放行9501端口:
firewall-cmd --zone=public --add-port=9501/tcp --permanent
firewall-cmd --reload
配置Nginx反向代理
因爲swoole不支持完整的htpp協議,所以最好配置一下轉發,以便設置域名訪問。
server {
root /mnt/share/xxx;
server_name easy_dev.xxx.xxx.com;
location / {
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
proxy_set_header X-Real-IP $remote_addr;
if (!-f $request_filename) {
proxy_pass http://127.0.0.1:9501;
}
}
}