框架安裝
- GitHub 喜歡記得給我們點個 star
- Github for Doc 文檔貢獻
- Github for Doc 3.5.x 3.5.x 版本文檔
注意事項,請看完再進行安裝
- 框架使用
Composer
作為依賴管理工具,在開始安裝框架前,請確保已經按上一章節(jié)的要求配置好環(huán)境并安裝好了Composer
工具 - 關于
Composer
的安裝可以參照 Composer官網安裝教程 或 Composer中國全量鏡像 的安裝教程 - 目前推薦的鏡像為 Composer官網鏡像【可能需要梯子】或 騰訊云鏡像 或 阿里云鏡像
- 在安裝過程中,會提示用戶選擇是否釋放框架的
Index.php
、Router.php
文件到項目目錄(默認不會釋放,也不會生成App
目錄),請保證項目目錄有可寫入權限 - 安裝完成之后,如果沒有自動生成
App
目錄,請自行根據(jù) Hello World 章節(jié) 章節(jié)進行配置 - 部分機器(例如
Docker
環(huán)境)在使用框架時遇到類似DNS Lookup resolve failed...
錯誤,請更換機器的DNS
為阿里云公共 DNS223.5.5.5
和223.6.6.6
。具體更換步驟可查看 更換 DNS
框架更新說明(安裝之前必看)
很多小伙伴,在使用 Swoole 4.6.x
擴展時,在使用 EasySwoole
進行開發(fā)時(一般是在使用到 Swoole
協(xié)程時),遇到了類似如下錯誤:\[FATAL ERROR\]: all coroutines (count: 1) are asleep - deadlock!
,這個錯誤屬于 Swoole 4.6.x
擴展的 debug
信息,詳細可查看 協(xié)程配置,如果不想看到這個信息,可在 bootstrap
事件(即項目根目錄的 bootstrap.php
文件)中最開始的位置,對協(xié)程的使用進行配置。配置示例代碼如下:
<?php
date_default_timezone_set('Asia/Shanghai');
// 關閉死鎖檢測相關堆棧信息輸出到日志
\Swoole\Coroutine::set(['enable_deadlock_check' => false]);
通過 Composer 安裝
切換 Composer 鏡像
# 推薦使用composer官方鏡像(如果使用此鏡像還是不行請自行更換其他源下載)
composer config -g repo.packagist composer https://repo.packagist.org
# 使用騰訊云 Composer 鏡像
composer config -g repo.packagist composer https://mirrors.tencent.com/composer/
# 使用阿里云 Composer 鏡像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
刪除鏡像
composer config -g --unset repos.packagist
Composer 安裝 EasySwoole 框架
按下面的步驟進行手動安裝
composer require easyswoole/easyswoole=3.7.x
php vendor/easyswoole/easyswoole/bin/easyswoole.php install
或者
composer require easyswoole/easyswoole=3.7.x
php vendor/bin/easyswoole.php install
Docker 下開發(fā)
如果您的本機環(huán)境并不能達到 EasySwoole
的運行環(huán)境要求,或對于環(huán)境配置不是那么熟悉,那么您可以通過以下方法來運行及開發(fā) EasySwoole
項目:
啟動容器
可以根據(jù)實際情況,映射到宿主機對應的目錄,以下以 /wrokspace/easyswoole
為例。這個映射目錄您可以根據(jù)實際進行修改。
如果 docker 啟動時開啟了 selinux-enabled 選項,容器內訪問宿主機資源就會受限,所以啟動容器時可以增加 --privileged -u root 選項
# MacOS/Linux
docker run --name easyswoole \
-v /workspace/easyswoole:/var/www \
-p 9501:9501 -it \
--privileged -u root \
--entrypoint /bin/sh \
easyswoolexuesi2021/easyswoole:php8.1.22-alpine3.16-swoole4.8.13
# Windows
docker run --name easyswoole -v D:\workspace\easyswoole:/var/www -p 9501:9501 -it --privileged -u root --entrypoint /bin/sh easyswoolexuesi2021/easyswoole:php8.1.22-alpine3.16-swoole4.8.13
EasySwoole 支持的 Docker 鏡像目前有如下:
- easyswoolexuesi2021/easyswoole:php8.1.22-alpine3.16-swoole4.8.13:環(huán)境為
php8.1.22
+swoole5.1.1
+easyswoole 3.7.x
,構建鏡像Dockerfile
可查看 - 更多請查看 easyswoole/docker
創(chuàng)建及安裝框架
cd /var/www
composer require easyswoole/easyswoole=3.7.x
php vendor/easyswoole/easyswoole/bin/easyswoole.php install
或者
cd /var/www
composer require easyswoole/easyswoole=3.7.x
php vendor/bin/easyswoole.php install
安裝成功
執(zhí)行安裝之后,安裝成功則會有如下界面:
首次安裝,會提示您是否選擇釋放(release) Index.php
、Router.php
和 App
目錄到項目目錄,執(zhí)行界面如下:
php vendor/easyswoole/easyswoole/bin/easyswoole.php install
______ _____ _
| ____| / ____| | |
| |__ __ _ ___ _ _ | (___ __ __ ___ ___ | | ___
| __| / _` | / __| | | | | \___ \ \ \ /\ / / / _ \ / _ \ | | / _ \
| |____ | (_| | \__ \ | |_| | ____) | \ V V / | (_) | | (_) | | | | __/
|______| \__,_| |___/ \__, | |_____/ \_/\_/ \___/ \___/ |_| \___|
__/ |
|___/
do you want to release Index.php? [ Y / N (default) ] : Y
do you want to release Router.php? [ Y / N (default) ] : Y
install success,enjoy!!!
dont forget run composer dump-autoload !!!
注意,上述輸入了
Y
、Y
,表示選擇了 release(釋放)Index.php
、Router.php
和App
目錄在項目根目錄,默認N
、N
是不釋放的,也不會自動生成App
目錄和App
命名空間。
新版安裝注意事項
- 新版的
EasySwoole
安裝默認不會提供App
命名空間,還有Index
控制器 - 重復安裝時需要填寫
N
,不需要覆蓋已經有的EasySwooleEvent.php、index.php、dev.php、produce.php
等文件 - 當提示
exec
函數(shù)被禁用時,請自己手動執(zhí)行composer dump-autoload
命令更新命名空間 - 當提示
symlink
與readlink
函數(shù)被禁用時,請自行修改php.ini
配置文件取消這些函數(shù)的禁用
重復安裝時,會提示您是否選擇 replace(覆蓋) 如下文件 Index.php
、Router.php
、dev.php
、produce.php
、bootstrap.php
、EasySwooleEvent.php
,你可以根據(jù)需要選擇是否覆蓋(replace),執(zhí)行界面如下:
php vendor/easyswoole/easyswoole/bin/easyswoole.php install
______ _____ _
| ____| / ____| | |
| |__ __ _ ___ _ _ | (___ __ __ ___ ___ | | ___
| __| / _` | / __| | | | | \___ \ \ \ /\ / / / _ \ / _ \ | | / _ \
| |____ | (_| | \__ \ | |_| | ____) | \ V V / | (_) | | (_) | | | | __/
|______| \__,_| |___/ \__, | |_____/ \_/\_/ \___/ \___/ |_| \___|
__/ |
|___/
Index.php has already existed, do you want to replace it? [ Y / N (default) ] : N
Router.php has already existed, do you want to replace it? [ Y / N (default) ] : N
dev.php has already existed, do you want to replace it? [ Y / N (default) ] : N
produce.php has already existed, do you want to replace it? [ Y / N (default) ] : N
bootstrap.php has already existed, do you want to replace it? [ Y / N (default) ] : N
EasySwooleEvent.php has already existed, do you want to replace it? [ Y / N (default) ] : N
install success,enjoy!!!
dont forget run composer dump-autoload !!!
如果您使用 Docker
方式進行安裝,您安裝成功之后就可以在宿主機 /var/www/
中看到您安裝好的代碼了。 由于 EasySwoole
是持久化的 CLI
框架,當您修改完您的代碼后,通過 CTRL + C
終止當前啟動的進程實例,并重新執(zhí)行 php easyswoole.php server start
啟動命令即可。如果您想開啟后臺守護模式運行,用于部署,可查看 基礎管理命令
安裝報錯
當執(zhí)行安裝腳本,出現(xiàn)類似以下錯誤時:
dir=$(cd "${0%[/\\]*}" > /dev/null; cd '../easyswoole/easyswoole/bin' && pwd)
if [ -d /proc/cygdrive ]; then
case $(which php) in
$(readlink -n /proc/cygdrive)/*)
# We are in Cygwin using Windows php, so the path must be translated
dir=$(cygpath -m "$dir");
;;
esac
fi
"${dir}/easyswoole" "$@"
請檢查環(huán)境是否為寶塔等其他集成面板,或者是 php.ini
配置項中禁用了 symlink
與 readlink
函數(shù),如果禁用了,請關閉這兩個函數(shù)的禁用,并刪除 vender 目錄
,然后重新執(zhí)行 composer require
或者是 composer install
或者是 composer update
。
如果取消了函數(shù)禁用并且刪除 vendor
目錄,并重新執(zhí)行 composer install
之后。依舊出現(xiàn)以上錯誤時,大概率是因為虛擬機等權限原因導致軟鏈接失效。可使用 php vendor/easyswoole/easyswoole/bin/easyswoole.php
命令進行啟動框架。或者直接修改項目根目錄的 easyswoole
文件,引入 vendor/easyswoole/easyswoole/bin/easyswoole.php
。
安裝 IDE 代碼提示組件
composer require easyswoole/swoole-ide-helper
啟動框架
中途沒有報錯的話,執(zhí)行:
# 啟動框架
cd /var/www
php easyswoole.php server start
此時可以訪問 http://localhost:9501
就看到框架的歡迎頁面,表示框架已經安裝成功。
啟動框架失敗可能遇到的問題
-
not controller class match
-
composer.json
注冊App
這個名稱空間了嗎? - 執(zhí)行過
composer dump-autoload
了嗎? - 存在
Index
控制器,但是文件大小寫、路徑都對了嗎?
-
-
task socket listen fail
- 注意,在部分環(huán)境下,例如
win10
的docker
環(huán)境中,不可把虛擬機共享目錄作為EasySwoole
的Temp
目錄,否則會因為權限不足無法創(chuàng)建socket
,產生報錯:listen xxxxxx.sock fail
,為此可以手動在dev.php
配置文件里把Temp
目錄改為其他路徑即可,如:'/tmp'
- 注意,在部分環(huán)境下,例如
-
外網無法正常訪問
- 注意:用戶如果外網無法正常訪問時,請檢查機器環(huán)境的防火墻/安全組是否開放
9501
或其他對應端口。詳細解決方案請看 常見問題
- 注意:用戶如果外網無法正常訪問時,請檢查機器環(huán)境的防火墻/安全組是否開放
其他
-
QQ 交流群
- VIP 群 579434607 (本群需要付費599元)
- EasySwoole 官方一群 633921431(已滿)
- EasySwoole 官方二群 709134628(已滿)
- EasySwoole 官方三群 932625047(已滿)
- EasySwoole 官方四群 779897753(已滿)
- EasySwoole 官方五群 853946743(已滿)
- EasySwoole 官方六群 524475224(已滿)
- EasySwoole 官方七群 1016674948
-
商業(yè)支持:
- QQ 291323003
- EMAIL admin@fosuss.com
-
作者微信
-
捐贈 您的捐贈是對
EasySwoole
項目開發(fā)組最大的鼓勵和支持。我們會堅持開發(fā)維護下去。 您的捐贈將被用于:- 持續(xù)和深入地開發(fā)
- 文檔和社區(qū)的建設和維護