框架安裝
Swoft 框架支持 Linux、macOS 雖然 win10也支持 但不推薦使用,最好使用 docker ,本教程手把手教你搭建一套開發環境.
環境要求
操作系統選擇 centos7
- PHP 包管理器 Composer
- docker-ce
- docker-compose
環境搭建
安裝 docker-ce
sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
sudo yum-config-manager \--add-repo \https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install docker-ce
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER
newgrp - docker
sudo systemctl restart docker
安裝 docker-compose
su root
curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
安裝 php
su root
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum -y install php71w-fpm
安裝 composer
su root
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
項目搭建
1 首先第一步拉取項目
composer create-project swoft/swoft Swoft
2 項目文件預覽
完整結構
├── app/ ----- 應用代碼目錄
│ ├── Annotation/ ----- 定義註解相關
│ ├── Aspect/ ----- AOP 切面
│ ├── Common/ ----- 一些具有獨立功能的 class bean
│ ├── Console/ ----- 命令行代碼目錄
│ ├── Exception/ ----- 定義異常類目錄
│ │ └── Handler/ ----- 定義異常處理類目錄
│ ├── Http/ ----- HTTP 服務代碼目錄
│ │ ├── Controller/
│ │ └── Middleware/
│ ├── Helper/ ----- 助手函數
│ ├── Listener/ ----- 事件監聽器目錄
│ ├── Model/ ----- 模型、邏輯等代碼目錄(這些層並不限定,根據需要使用)
│ │ ├── Dao/
│ │ ├── Data/
│ │ ├── Logic/
│ │ └── Entity/
│ ├── Rpc/ ----- RPC 服務代碼目錄
│ │ └── Service/
│ │ └── Middleware/
│ ├── WebSocket/ ----- WebSocket 服務代碼目錄
│ │ ├── Chat/
│ │ ├── Middleware/
│ │ └── ChatModule.php
│ ├── Tcp/ ----- TCP 服務代碼目錄
│ │ └── Controller/ ----- TCP 服務處理控制器目錄
│ ├── Application.php ----- 應用類文件繼承自swoft核心
│ ├── AutoLoader.php ----- 項目掃描等信息(應用本身也算是一個組件)
│ └── bean.php
├── bin/
│ ├── bootstrap.php
│ └── swoft ----- Swoft 入口文件
├── config/ ----- 應用配置目錄
│ ├── base.php ----- 基礎配置
│ └── db.php ----- 數據庫配置
├── public/ ----- 公共目錄
├── resource/ ----- 應用資源目錄
│ ├── language/ ----- 語言資源目錄
│ └── view/ ----- 視圖資源目錄
├── runtime/ ----- 臨時文件目錄(日誌、上傳文件、文件緩存等)
├── test/ ----- 單元測試目錄
│ └── bootstrap.php
├── composer.json
├── phar.build.inc
└── phpunit.xml.dist
├── env ----- 環境變量
├── docker-compose.yml ----- docker配置項
└── phpunit.xml.dist
3 修改配置並運行
進入 Swoft 目錄
cd Swoft
我修改的文件主要是 docker-compose.yml
配置信息
version: "3"
services:
redis:
image: redis:alpine
container_name: redis
ports:
- 6379:6379
volumes:
- redisdb:/data
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
swoft:
image: swoft/swoft
# for local develop
command: php -S 127.0.0.1:13300
container_name: swoft-test
environment:
- APP_ENV=dev
- TIMEZONE=Asia/Shanghai
ports:
- "18306:18306"
- "18307:18307"
- "18308:18308"
volumes:
- ./:/var/www/swoft
mysql:
image: mysql
container_name: mysql-srv
environment:
- MYSQL_ROOT_PASSWORD=123456
ports:
- "3306:3306"
volumes:
- mysqldb:/var/lib/mysql
volumes:
redisdb:
mysqldb:
啓動命令
docker-compose up -d
查看容器是否正常啓動
docker ps
注意我們這裏沒有部署 mysql ,所以容器只有 redis 和 swoft 上面的配置項是有mysql容器的,並且 root 密碼是 123456 安全策略等需要開發者自行配置
進入容器操作
docker exec -it swoft-test sh
這個表示已經進入了容器內
下載相關依賴
這一步一定要記住 並且是進入容器以後
composer install
配置熱更新
按順序執行下面幾個命令
wget https://github.com/swoft-cloud/swoft-cli/releases/download/v0.1.3/swoftcli.phar
mv swoftcli.phar /usr/local/bin/swoftcli
chmod a+x /usr/local/bin/swoftcli
啓動開發環境
swoftcli run -c http:start -b bin/swoft
看到如下界面則環境配置完成
此時修改 app 目錄和 config 目錄 會自動重啓,修改其他文件則需要 ctrl+c 結束進程後重啓項目.
注意此時關閉了終端,其實 swoftcli 進程 是沒有關閉的,再次進入終端也看不到調試信息,所以此時我們需要殺了進程,再重啓,才能看到調試信息
ps -aux|grep swoft
殺掉前2個進程即可
kill 進程id
kill 11296
kill 11299
殺掉進程後再次查看進程
ps -aux|grep swoft
此時就可以再次重新啓動
swoftcli run -c http:start -b bin/swoft
注意我們這裏啓動是 web 服務如果websoket服務 請修改 -c 後面的參數 例如 swoftcli run -c ws:start -b bin/swoft