国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

swoft| 源碼解讀系列一: 好難! swoft demo 都跑不起來怎么破? docker 了解

shenhualong / 1812人閱讀

摘要:源碼解讀系列一好難都跑不起來怎么破了解一下唄閱讀框架源碼第一步搞定環(huán)境小伙伴剛接觸的時(shí)候會(huì)感覺壓力有點(diǎn)大更直觀的說法是難開發(fā)組是不贊成難這個(gè)說法的的代碼都是實(shí)現(xiàn)的而又是世界上最好的語(yǔ)言的代碼閱讀起來是很輕松的開發(fā)組會(huì)用源碼解讀系列博客深

date: 2018-8-01 14:22:17
title: swoft| 源碼解讀系列一: 好難! swoft demo 都跑不起來怎么破? docker 了解一下唄~
description: 閱讀 sowft 框架源碼, swoft 第一步, 搞定環(huán)境

小伙伴剛接觸 swoft 的時(shí)候會(huì)感覺 壓力有點(diǎn)大, 更直觀的說法是 . 開發(fā)組是不贊成 這個(gè)說法的, swoft 的代碼都是 php 實(shí)現(xiàn)的, 而 php 又是 世界上最好的語(yǔ)言, swoft 的代碼閱讀起來是很輕松的.

開發(fā)組會(huì)用 源碼解讀系列 博客, 深入解讀 swoft. 我們相信, 這會(huì)成為一段輕松之旅.

swoft 源碼解讀系列一: 好難! swoft demo 都跑不起來怎么破? docker 了解一下唄~

本篇內(nèi)容速讀:

環(huán)境的鍋我不背: 學(xué)習(xí)和使用 swoft 需要預(yù)備這些 基礎(chǔ)知識(shí).

docker: 搞定 swoft 環(huán)境

docker-compose: 搞定更多服務(wù)

使用 composer 進(jìn)行包管理: 開發(fā)組的日常

環(huán)境的鍋我不背

這個(gè)好難真心不是 swoft 的鍋, 這是環(huán)境的鍋. swoft 官方文檔已經(jīng)提供了相當(dāng)詳細(xì)的 環(huán)境搭建 說明, 如果一直無法成功:

推薦 swoole 的運(yùn)行環(huán)境是 linux, linux 的一些基本概念和操作是否掌握了

swoole 作為 php 擴(kuò)展的形式工作的, php 擴(kuò)展的一些基本概念和安裝是否掌握

swoft 使用 composer 來進(jìn)行包管理, composer 的一些基本概念和操作是否掌握了

使用 swoft 來開發(fā)后端應(yīng)用, 服務(wù)器的一些基礎(chǔ)知識(shí)(tcp/ip四層網(wǎng)絡(luò)協(xié)議, ip端口域名等)是否掌握了

學(xué)習(xí)和使用 swoft 需要預(yù)備這些 基礎(chǔ)知識(shí).

docker

那么, 怎么快速配好開發(fā)環(huán)境呢? 答案是 docker !

docker 要上手比想象中的要容易, 開發(fā)組提供了 官方鏡像 swoft/swoft, 鏡像詳情在 swoft項(xiàng)目dockerfile 中, 摘錄其中配置 swoole 的部分:

# Swoole extension
RUN wget https://github.com/swoole/swoole-src/archive/v${SWOOLE_VERSION}.tar.gz -O swoole.tar.gz 
    && mkdir -p swoole 
    && tar -xf swoole.tar.gz -C swoole --strip-components=1 
    && rm swoole.tar.gz 
    && ( 
        cd swoole 
        && phpize 
        && ./configure --enable-async-redis --enable-mysqlnd --enable-openssl --enable-http2 
        && make -j$(nproc) 
        && make install 
    ) 
    && rm -r swoole 
    && docker-php-ext-enable swoole

如果你還沒有掌握 swoole 運(yùn)行所需環(huán)境的配置, 可以參考這個(gè) dockerfile 文件的源碼.

當(dāng)然, 為了開發(fā)方便, 我們可能需要構(gòu)建不同的環(huán)境, 比如指定不同的 php 版本, 使用不同的 swoole 版本, 設(shè)置中文鏡像加速等, 也可以參考 gitee.com/daydaygo/docker 下的 dockerfile

FROM php:7.2.5-cli-alpine3.7
# FROM php:7.1.13-cli-alpine3.4
LABEL maintainer="1252409767@qq.com"
RUN echo -e "http://mirrors.ustc.edu.cn/alpine/v3.7/main
http://mirrors.ustc.edu.cn/alpine/v3.7/community" > /etc/apk/repositories && 
    apk update
RUN apk add tzdata && 
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && 
    echo "Asia/Shanghai" >  /etc/timezone
RUN apk add $PHPIZE_DEPS

# docker-php-ext
RUN docker-php-ext-install bcmath mysqli pcntl pdo_mysql

# pecl
# http://pecl.php.net/package/mongodb
RUN curl -O http://pecl.php.net/get/redis-4.0.2.tgz && 
    pecl install redis-4.0.2.tgz && 
    docker-php-ext-enable redis
RUN curl -O http://pecl.php.net/get/mongodb-1.4.3.tgz && 
    apk add openssl-dev && 
    pecl install mongodb-1.4.3.tgz && 
    docker-php-ext-enable mongodb

# swoole
RUN curl -O https://gitee.com/swoole/swoole/repository/archive/v4.0.3.zip && unzip v4.0.3.zip && 
    apk add linux-headers openssl-dev nghttp2-dev hiredis-dev && 
    cd swoole && 
    phpize && 
    ./configure --enable-coroutine --enable-openssl --enable-async-redis --enable-http2 && make && make install && 
    docker-php-ext-enable swoole && 
    rm -rf v4.0.3.zip swoole

ps: 這里的 dockerfile 使用 alpine linux 做基礎(chǔ)鏡像, 大小不到 10m, 非常簡(jiǎn)單純粹的一個(gè) linux 發(fā)行版, 推薦嘗試. 使用了國(guó)內(nèi)源和gitee進(jìn)行加速.

docker-compose

到這里我們已經(jīng)有了 swoft 的運(yùn)行環(huán)境了, 根據(jù) 文檔-服務(wù)啟動(dòng) 章節(jié)中的說明, 執(zhí)行 php bin/swoft start 就可以將 swoft demo 運(yùn)行起來了.

如果我們還需要更多服務(wù), mysql呀, redis呀, 甚至前置 nginx, docker-compose 可以幫助到我們, docker-compose 用來把我們每一個(gè) docker 服務(wù)編排(管理)起來, 舉個(gè)例子 gitee.com/daydaygo/docker:

    nginx:
        build:
            context: nginx
            dockerfile: Dockerfile
        volumes:
            - ../:/var/www
            - ./logs/nginx/:/var/log/nginx
        links:
            - swoft
        ports:
           - "80:80"
           - "443:443"
    swoft:
        # container_name: swoft
        image: swoft/swoft
        volumes:
            - ../:/var/www
        links:
            - mysql
            - redis
        ports:
            - "8001:8001"
            - "9501:9501"
        working_dir: /var/www/swoole/swoft
        stdin_open: true
        command: php -a
        tty: true
            - redis
    mysql:
        build:
            context: mysql
            dockerfile: Dockerfile
        volumes:
            - ./data/mysql:/var/lib/mysql
        ports:
            - "3306:3306"
        environment:
            MYSQL_ROOT_PASSWORD: root
    redis:
        build:
            context: redis
            dockerfile: Dockerfile
        volumes:
            - ./data/redis:/data
            - ./logs/redis:/var/log/redis
        ports:
            - "6379:6379"

這里我們啟動(dòng)了 nginx / swoft / mysql / redis 4個(gè)服務(wù):

links: 服務(wù)之間的關(guān)系, 比如 swoft 會(huì)使用到 mysql 和 redis, 那么 swoft 中就可以使用 mysql 作為 host 訪問到 myql 服務(wù)

ports: 端口映射

volumes: 文件掛載

了解這些標(biāo)簽都有什么作用, 就能理解和使用 docker-compose 了

使用 composer 進(jìn)行包管理

使用 git clone 下載了 swoft 的源碼后, 還需要使用 composer install 安裝 swoft 框架. 在此之前, swoft 進(jìn)行了 組件化拆分, 讓框架進(jìn)一步的解耦和易用. 普通用戶很少會(huì)修改 composer install 安裝的 swoft 框架, 但是開發(fā)組會(huì)頻繁更新 swoft 框架, 然后在 swoft demo 項(xiàng)目中驗(yàn)證, 那是如何實(shí)現(xiàn)的呢?

答案是使用 composer 提供的 repositories 功能, 直接引入本帶代碼庫(kù):

{
    "name": "swoft/swoft",
    "type": "project",
    "keywords": [
        "php",
        "swoole",
        "swoft"
    ],
    "description": "Modern High performance AOP and Coroutine PHP Framework, base on Swoole 2",
    "license": "Apache-2.0",
    "require": {
        "php": ">=7.0",
        "ext-swoole": ">=2.1",
        "swoft/framework": "^1.0",
        "swoft/rpc": "^1.0",
        "swoft/rpc-server": "^1.0",
        "swoft/rpc-client": "^1.0",
        "swoft/http-server": "^1.0",
        "swoft/http-client": "^1.0",
        "swoft/websocket-server": "^1.0",
        "swoft/task": "^1.0",
        "swoft/http-message": "^1.0",
        "swoft/view": "^1.0",
        "swoft/db": "^1.1",
        "swoft/cache": "^1.0",
        "swoft/redis": "^1.0",
        "swoft/console": "^1.0",
        "swoft/devtool": "^1.0",
        "swoft/session": "^1.0",
        "swoft/i18n": "^1.0",
        "swoft/process": "^1.0",
        "swoft/memory": "^1.0",
        "swoft/service-governance": "^1.0"
    },
    "autoload": {
        "psr-4": {
            "App": "app/"
        },
        "files": [
            "app/Swoft.php"
        ]
    },
    "autoload-dev": {
        "psr-4": {
            "SwoftTest": "test/"
        }
    },
    "scripts": {
        "post-root-package-install": [
            "@php -r "file_exists(".env") || copy(".env.example", ".env");""
        ],
        "test": "./vendor/bin/phpunit -c phpunit.xml",
        "cs-fix": "./vendor/bin/php-cs-fixer fix $1"
    },
    "repositories": [
        {
            "type": "path", // 修改在此
            "url": "../swoft-component"
        }
    ]
}

我習(xí)慣刪掉 require-dev 下配置的包, 而選擇本地全局安裝, 這點(diǎn)就全憑個(gè)人喜好啦

寫在最后

希望大家看到 swoft demo 首頁(yè)的 swoft 時(shí), 能和我們一樣開心

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/29202.html

相關(guān)文章

  • swoft| 源碼解讀系列: 好難! swoft demo 跑不起來怎么? docker 了解

    摘要:源碼解讀系列一好難都跑不起來怎么破了解一下唄閱讀框架源碼第一步搞定環(huán)境小伙伴剛接觸的時(shí)候會(huì)感覺壓力有點(diǎn)大更直觀的說法是難開發(fā)組是不贊成難這個(gè)說法的的代碼都是實(shí)現(xiàn)的而又是世界上最好的語(yǔ)言的代碼閱讀起來是很輕松的開發(fā)組會(huì)用源碼解讀系列博客深 date: 2018-8-01 14:22:17title: swoft| 源碼解讀系列一: 好難! swoft demo 都跑不起來怎么破? doc...

    rollback 評(píng)論0 收藏0
  • swoft| 源碼解讀系列二: 啟動(dòng)階段, swoft 都干了些啥?

    摘要:源碼解讀系列二啟動(dòng)階段都干了些啥閱讀框架源碼了解啟動(dòng)階段的那些事兒小伙伴剛接觸的時(shí)候會(huì)感覺壓力有點(diǎn)大更直觀的說法是難開發(fā)組是不贊成難這個(gè)說法的的代碼都是實(shí)現(xiàn)的而又是世界上最好的語(yǔ)言的代碼閱讀起來是很輕松的之后開發(fā)組會(huì)用系列源碼解讀文章深 date: 2018-8-01 14:22:17title: swoft| 源碼解讀系列二: 啟動(dòng)階段, swoft 都干了些啥?descriptio...

    hqman 評(píng)論0 收藏0
  • Swoft 源碼解讀

    摘要:官網(wǎng)源碼解讀號(hào)外號(hào)外歡迎大家我們開發(fā)組定了一個(gè)就線下聚一次的小目標(biāo)里面的框架算是非常重的了這里的重先不具體到性能層面主要是框架的設(shè)計(jì)思想和框架集成的服務(wù)讓框架可以既可以快速解決很多問題又可以輕松擴(kuò)展中的框架有在應(yīng)該無出其右了這次解讀的源碼 官網(wǎng): https://www.swoft.org/源碼解讀: http://naotu.baidu.com/file/8... 號(hào)外號(hào)外, 歡迎大...

    weij 評(píng)論0 收藏0
  • Swoft 系列教程:(1)使用 Docker 安裝部署 Swoft

    摘要:即異步非阻塞,,事件驅(qū)動(dòng)。優(yōu)雅的注解聲明,容器,嚴(yán)格遵循規(guī)范。鏡像的主要用途官方提供了基于的鏡像。鏡像中已安裝配置好運(yùn)行的所需組件及依賴。修改鏡像的使得容器啟動(dòng)時(shí)不同時(shí)啟動(dòng)服務(wù),這就不需要要求我們掛載的本地項(xiàng)目必須完全安裝好依賴了。 之前有寫過一篇 Docker 安裝部署 Swoft 的文章,但有些冗余混亂,故重寫作為教程的開篇。要不讀讀看? Swoft項(xiàng)目:https://gith...

    宋華 評(píng)論0 收藏0
  • Swoft 系列教程:(1)使用 Docker 安裝部署 Swoft

    摘要:即異步非阻塞,,事件驅(qū)動(dòng)。優(yōu)雅的注解聲明,容器,嚴(yán)格遵循規(guī)范。鏡像的主要用途官方提供了基于的鏡像。鏡像中已安裝配置好運(yùn)行的所需組件及依賴。修改鏡像的使得容器啟動(dòng)時(shí)不同時(shí)啟動(dòng)服務(wù),這就不需要要求我們掛載的本地項(xiàng)目必須完全安裝好依賴了。 之前有寫過一篇 Docker 安裝部署 Swoft 的文章,但有些冗余混亂,故重寫作為教程的開篇。要不讀讀看? Swoft項(xiàng)目:https://gith...

    psychola 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<