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