Рубрики
Uncategorized

Swift | Интерпретация исходного кода Серия I: Как сложно! Как демо-версия swift может сломаться без запуска?

Автор оригинала: David Wong.

дата: 2018-8-01 14:22:17 Название: swift | Интерпретация исходного кода Серия I: Это так сложно! Как демо-версия swift может сломаться, если она не может работать? Описание: Прочитайте исходный код Soft Framework, первый шаг swift, и разработайте среду

Маленькие приятели чувствуют, когда они впервые вступают в контакт со Свифтом Это немного напряженно. Более интуитивно Жестко Команда разработчиков не одобрила. Сложно Таким образом, swift-код реализован в php , и PHP является Лучшим языком в мире Swift – код легко читается.

Команда разработчиков будет использовать Серию интерпретаций исходного кода Блог, подробно прочитайте swift. Мы верим, что это будет расслабляющее путешествие.

Интерпретация исходного кода Swift Серия 1: Как трудно! Как демо-версия swift может сломаться без запуска?

Быстрое прочтение этой статьи:

  • Я не пересказываю суть окружающей среды: изучение и использование swift требует подготовки этих Базовых знаний .
  • Докер: Настройка мягкой среды
  • Docker-compose: Создание дополнительных сервисов
  • Использование composer для управления пакетами: повседневная жизнь команд разработчиков

Я не несу ответственность за окружающую среду.

На самом деле это не горшок свифта, это горшок окружающей среды. В официальном документе swift содержатся довольно подробные инструкции по экологическому строительству, если оно не увенчалось успехом:

  • Рекомендуемой операционной средой swoole является linux. Освоили ли вы некоторые основные концепции и операции linux?
  • Swool работает как форма расширения PHP. Знаете ли вы некоторые основные концепции и установку расширения PHP?
  • Swift использует composer для управления пакетами. Освоили ли вы некоторые основные понятия и операции композитора?
  • Используя swift для разработки серверных приложений, вы овладели некоторыми базовыми знаниями о сервере (четырехуровневый сетевой протокол tcp/IP, доменное имя IP-порта и т.д.)

Изучение и использование swift требует подготовки этих Базовых знаний .

докер

Итак, как быстро подобрать среду разработки? Ответ таков: докер !

Начать работу с докером проще, чем ожидалось. Команда разработчиков предоставляет официальный образ swift/swift. Подробные сведения об изображении включены в файл настройки проекта swift, извлеченный из раздела, в котором настраивается swool:

# 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

Если вы еще не освоили конфигурацию среды, которую необходимо запустить swool, вы можете обратиться к исходному коду этого файла dockerfile.

Конечно, для простоты разработки нам может потребоваться создать различные среды, например, указать разные версии PHP, использовать разные версии swool, настроить ускорение китайских изображений и т.д. Или обратиться к файлу docker в разделе gitee.com/daygo/docker.

FROM php:7.2.5-cli-alpine3.7
# FROM php:7.1.13-cli-alpine3.4
LABEL maintainer="[email protected]"
RUN echo -e "http://mirrors.ustc.edu.cn/alpine/v3.7/main\nhttp://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 в качестве базового изображения размером менее 10 м. Это очень простой дистрибутив Linux. Рекомендуется попробовать. Он использует внутренние источники и gitee для ускорения.

докер-сочинение

Здесь мы имеем работающую среду swift, выполняемую в соответствии с инструкциями в главе “Запуск службы документов”. php bin/swoft start Вы можете запустить демо-версию swoft.

Если нам нужны дополнительные сервисы, mysql, redis, даже предварительно созданные nginx, docker-compose могут нам помочь. docker-compose используется для организации (управления) каждой из наших служб docker. Например, gitee.com/daygo/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"

Здесь мы запустили четыре сервиса: nginx/swift/MySQL/redis:

  • ссылки Связь между службами, такими как MySQL и redis, может использоваться в swift mysql Выступать в качестве хоста Доступа к службам mysql
  • порты Отображение портов
  • тома Монтаж документов

Зная, что делают эти теги, вы можете понять и использовать docker-compose

Управление пакетами с помощью composer

Используйте git clone После загрузки исходного кода swift вам необходимо использовать его composer install Установка платформы swift. До этого swift произвел разделение компонентов для дальнейшего разделения и упрощения использования фреймворка. Обычные пользователи редко изменяют его. установка композитора Установлена платформа swift, но команда разработчиков будет часто обновлять платформу swoft, а затем проверять ее в демонстрационном проекте swoft. Как это достигается?

Ответ заключается в использовании функции composer репозитории , непосредственно введенной в эту базу кода:

{
    "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": {
            "Swoft\Test\": "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", //Modify here
            "url": "../swoft-component"
        }
    ]
}

Я привык удалять его. требуется-dev Вам предстоит настроить пакет и выбрать локальную глобальную установку.

Написано в конце

Надеюсь, вы сможете увидеть домашнюю страницу демо-версии swift swift , когда сможете быть такими же счастливыми, как мы.