swoft2 小白教程系列-搭建開發環境

框架安裝

Swoft 框架支持 Linux、macOS 雖然 win10也支持 但不推薦使用,最好使用 docker ,本教程手把手教你搭建一套開發環境.
環境要求
操作系統選擇 centos7

  1. PHP 包管理器 Composer
  2. docker-ce
  3. 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章