1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/janpoem-ubuntu-server-deploy

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Ubuntu-сервер: установка часто используемых компонентов

Данный установочный пакет в настоящее время включает в себя автоматическую загрузку, компиляцию, генерацию конфигурации и развёртывание tengine, php, memcached и mcrouter.

Этот установочный пакет основан на Ubuntu Server 14.04 LTS. Теоретически, все дистрибутивы Ubuntu должны работать, но CentOS не поддерживается.

Установочный пакет предоставляет ряд переменных, которые позволяют пользователям переопределять свои собственные среды публикации. Для этого необходимо создать каталог user в корне проекта и добавить в него файлы .sh (загрузка выполняется с помощью команды ls ./user/.sh, без сортировки).

Управление службами при запуске системы осуществляется через sysv-rc-conf.

Примечание: я управляю большим количеством серверов, и мой подход заключается в следующем: сначала я получаю код проекта на сервер с помощью команды git clone https://git.oschina.net/janpoem/ubuntu-server-deploy.git, а затем проверяю конфигурацию сервера из SVN с помощью команды svn checkout http://anyhost/php-server/ ./user. После этого можно выполнить необходимые команды установки.

Как правило, на одном сервере не размещаются все функциональные компоненты одновременно. Обычно они разделяются на такие группы, как tengine_node_blancer, tengine_php_server, memcached_cluster, memcached_router и т. д. Этот установочный пакет является открытым исходным кодом и предоставляет только базовую среду, а конкретная конфигурация сервера хранится в пользовательских репозиториях (в этом проекте каталог user уже настроен для игнорирования).

Задачи

Фаза 1

  • Сервер: инициализация серверной среды завершена.
  • Tengine: компиляция, инициализация конфигурации tengine завершена. Необходимо добавить конфигурацию upstream.
  • PHP: компиляция и инициализация конфигурации PHP завершены. Требуется добавить возможность загрузки и автоматической компиляции ext.
  • Memcache: установка memcached и развёртывание mcrouter (facebook/folly) завершены.
  • Необходимо добавить развёртывание Go.

Фаза 2

  • Объединить отдельные сценарии в один файл deploy. Команды для выполнения: deploy php install, deploy tengine rebuild и т.д.
  • Предоставить механизм полной автоматической установки. Возможно, потребуется перейти на более продвинутый язык программирования, так как использование bash вызывает трудности.

server.sh

./tengine.sh init|prepare|timezone|upgrade|clean|dns

Этот сценарий в основном выполняет команды apt-get upgrade и корректирует часовой пояс сервера.

  • prepare|init: инициализирует серверную среду, за исключением upgrade и коррекции часового пояса, также устанавливает необходимые пакеты. Эту операцию следует выполнять каждый раз при первой инициализации серверной среды.
  • timezone: повторяет коррекцию часового пояса.
  • upgrade: повторяет обновление.
  • clean: очищает локальные записи коррекции часового пояса и обновления.
  • dns: настройка DNS в Ubuntu может быть сложной. В этом сценарии добавляется метод записи DNS, который реализуется путём изменения файла /etc/resolvconf/resolv.conf.d/head. Метод использует переменные DNS, определённые пользователем, для комментирования текущих серверов имён в файле и добавления новых DNS.

Пользовательские переменные

#!/usr/bin/env bash
# file: user/dns.sh
# oneDNS
DNS[1]=112.124.47.27
DNS[2]=114.215.126.16

# 时区
TIMEZONE=Asia/Shanghai

# 有需要追加的安装包,请使用这个变量,但最好使用+=的方式追加。
SERVER_REQUIRE_PKGS+="...需要增加的包..."

tengine.sh

Доступные команды

./tengine.sh install|rebuild|conf|conf-all|conf-main|conf-deny|conf-common|conf-php|script|sh|test|ensite|enphpsite
  • install: компилирует и устанавливает tengine. Если tengine уже существует, программа завершает работу.
  • rebuild: принудительно перекомпилирует и переустанавливает tengine. Если tengine существует, он будет перезаписан (включая файлы конфигурации).
  • conf|conf-all: инициализирует файлы конфигурации tengine и необходимые каталоги. Если указанный файл конфигурации существует, он удаляется. Эта операция не включает конфигурацию PHP для tengine.
  • conf-main: инициализирует или повторно инициализирует основной файл конфигурации tengine, необходимые каталоги и т. д.
  • conf-deny: инициализирует или повторно инициализирует файл конфигурации deny_settings.
  • conf-common: инициализирует или повторно инициализирует информацию о конфигурации в tengine/common.
  • conf-php: инициализирует или повторно инициализирует настройки PHP в tengine. Пример использования: ./tengine.sh conf-php 127.0.0.1:8832 php53_settings. Первый параметр — это дескриптор fcgipass, второй параметр — имя сохраняемого файла конфигурации (предоставляет возможность совместного использования нескольких версий PHP).
  • script|sh: инициализирует или повторно инициализирует служебный скрипт запуска /etc/init.d/tengine.
  • test: проверяет, эффективна ли текущая конфигурация.
  • ensite: добавляет сайт. Пример использования: ./tengine.sh ensite default 80 default. Первый параметр — название сайта, которое будет использоваться для создания файла конфигурации, например, default.conf. Второй параметр — номер порта веб-сайта. Третий параметр — необязательный, используется для указания имени каталога сайта. Если он не указан, по умолчанию используется название сайта.
  • enphpsite: добавляет веб-сайт с поддержкой PHP. Пример использования: ./tengine.sh enphpsite default 80 default. Параметры аналогичны параметрам ensite. Обратите внимание, что эта команда автоматически запускает команду conf-php. Поэтому, чтобы убедиться в правильности конфигурации PHP, рекомендуется предварительно вручную выполнить команду ./tengine.sh conf-php.

Переинициализация, упомянутая выше, означает изменение конфигурации и перезапись указанной конфигурации.

Переменные, доступные пользователю

# 所需要的包的版本号……这个最好和要下载的包名称保持一致,这里需要调整一下
TENGINE_NAME=tengine-2.1.0
PCRE_NAME=pcre-8.36
ZLIB_NAME=zlib-1.2.8
OPENSSL_NAME=openssl-1.0.2a
# www_user和www_group,这个配置也对应到php编译使用
WWW_USER=www-data
WWW_GROUP=www-data
# tengine的目录,呃,这个不用怎么修改
TENGINE_CONF_DIR=/etc/tengine
# tengine pidfile 这个也不用改了吧
TENGINE_PID_FILE=/var/run/tengine.pid
# ...不说了
TENGINE_LOG_DIR=/var/log/tengine
TENGINE_TMP_DIR=/var/tmp/tengine
# ...не говорим больше
TENGINE_TMP_CLIENT=${TENGINE_TMP_DIR}/client_body
TENGINE_TMP_PROXY=${T ENGINE_TMP_DIR}/proxy
TENGINE_TMP_FCGI=${TENGINE_TMP_DIR}/fcgi
TENGINE_TMP_UWSGI=${TENGINE_TMP_DIR}/uwsgi
TENGINE_TMP_SCGI=${TENGINE_TMP_DIR}/scgi
# tengine config配置变量
TENGINE_WORK_PROS=8
TENGINE_RLIMIT=102400
TENGINE_WORKER_CONNS=102400
TENGINE_DEFAULT_MIME_TYPE=text/html
TENGINE_DEFAULT_CHARSET=text/html
TENGINE_VHOST_LOG_DIR=/var/log/vhost
TENGINE_VHOST_CONF_DIR=${TENGINE_CONF_DIR}/vhost
# www的根目录
TENGINE_WWW_HOME=/var/www

mc.sh

Установка и настройка memcached и mcrouter, связанных с этим.

Mcrouter is a memcached protocol router for scaling memcached (http://memcached.org/) deployments. It's a core component of cache infrastructure at Facebook and Instagram where mcrouter handles almost 5 billion requests per second at peak.

Команды

./mc.sh
``` **install** — установка memcached.  

**conf** — инициализация или перезапись конфигурационного файла memcached. Чтобы создать пользовательский файл conf, можно определить необходимые переменные в файле user.sh (также применимы другие конфигурации).  

**mcr-install** — установка mcrouter, включая компиляцию и установку double-conversion, facebook/folly, а также инициализацию конфигурационного файла и сервисного скрипта mcrouter.  

**mcr-conf** — создание конфигурационного файла mcrouter; процесс может быть повторён. Так как конфигурационный файл имеет формат JSON, он может показаться необычным. Для справки можно использовать переменную `MCR_POOL_SERVERS` в файле user.sh.  

**mcr-script|mcr-sh** — генерация сервисного скрипта для mcrouter; может быть выполнена повторно.  

**mcr-build** — аналогично mcr-install, если требуется принудительная переустановка, необходимо добавить произвольный параметр, например: `./mc.sh mcr-build 1`.  

**mcr-fb-build** — использование метода установки от Facebook для установки; установка от Facebook требует загрузки кода проекта gtest для тестирования, но из-за проблем с доступом к нему в некоторых регионах, рекомендуется использовать метод установки от Facebook.  

Если сервер уже установил Facebook/folly и при выполнении mcr-install процесс прошёл без ошибок, но после завершения установки при выполнении команды `mcrouter --help` может появиться сообщение об ошибке:  
> mcrouter: error while loading shared libraries: libfolly.so.35: cannot open shared object file: No such file or directory  

Независимо от того, сколько раз вы будете перекомпилировать и устанавливать folly, проблема не будет решена. В настоящее время эффективным решением является использование метода установки, предоставленного Facebook, хотя он заменит ваши версии gcc и g++ на версию 4.8.  

При новой установке сервера выполнение mcr-install не вызовет этой проблемы. Если вы ранее вручную скомпилировали и установили folly, эта проблема может возникнуть. В этом случае рекомендуется использовать mcr-fb-build.  

Кроме того, целевые каталоги для установок mcr-fb-build и mcr-install различаются.  

Эта проблема уже была отправлена в систему отслеживания ошибок mcrouter. Ссылка на проблему: https://github.com/facebook/mcrouter/issues/39.  

Пользователь может изменять переменные:  
```bash
# Конфигурация memcached
MC_HOST=127.0.0.1
MC_PORT=11211
MC_LOG_FILE=/var/log/memcached.log
MC_USER=memcache
MC_SIZE=64

# Конфигурация mcrouter
MCR_PORT=5000
MCR_CONF_FILE=/etc/mcrouter.json
MCR_LOG_FILE=/var/log/mcrouter.log
MCR_PID_FILE=/var/run/mcrouter.pid

# Конфигурация пула серверов mcrouter (здесь не всё понятно, поэтому реализация хорошая, позже будет изменена на массивный режим)
MCR_POOL_SERVERS="\"${MC_HOST}:${MC_PORT}\",\"other_ip:other_port\""

Использование служебного файла /etc/init.d/mcrouter:

Выполнение команды ./mc.sh mcr-sh создаст служебный скрипт запуска /etc/init.d/mcrouter, который используется для ежедневного запуска, перезапуска, остановки и проверки состояния службы mcrouter.

  • start — запуск службы.
  • stop — остановка службы.
  • restart — перезапуск службы.
  • status — проверка состояния службы (работает ли она).
  • proc — вывод списка процессов запущенного экземпляра mcrouter.

Отладка:

Как упоминалось выше, из-за проблемы с folly необходима соответствующая отладка. Если при выполнении service mcrouter start отображается сообщение «ok» и в PIDFILE виден идентификатор процесса, но при выполнении команд service mcrouter status или service mcrouter proc служба не находится в рабочем состоянии, то, скорее всего, во время запуска произошла ошибка.

В этом случае можно попробовать напрямую выполнить команду mcrouter --help, чтобы увидеть, есть ли какие-либо ошибки. Если help выводит нормально, вам нужно внести некоторые изменения в служебный файл /etc/init.d/mcrouter:

# Выше опущено...
# Здесь начинается
. /lib/lsb/init-functions

${DAEMON} ${DAEMON_ARGS}

exit 1

# Ниже опущено...

Затем выполните /etc/init.d/mcrouter для непосредственного запуска службы. Вы можете увидеть некоторые другие ошибки, такие как сообщение о том, что порт занят.

После устранения всех проблем со службой и её успешного запуска выполните mc.sh mcr-sh, чтобы заново сгенерировать служебный файл запуска и заменить внесённые изменения.

##php.sh

./php.sh install|rebuild|fpm-conf|fpm-sh|ini|bin
  • install — базовая установка, которая пропускает процесс компиляции, если целевой каталог уже существует.
  • rebuild — принудительная повторная установка.
  • fpm-conf — создание конфигурации php-fpm, файл конфигурации хранится в /php-компиляция-каталог/etc/php-fpm.conf, а не в /etc/php-fpm.conf.
  • fpm-sh — создание служебного скрипта php-fpm.
  • ini — создание файла php.ini, /php-компиляция-каталог/lib/php.ini.
  • bin — создание соответствующих файлов phpbin, включая php, php-fpm, phpize, php-pecl, php-pear.

Переменные, которые могут быть изменены пользователем:
Здесь перечислены только рекомендуемые переменные для изменения пользователем.

# Каталог загрузки исходного кода PHP, может быть оставлен пустым, будет использоваться ubuntu-server-deploy/temp в качестве каталога загрузки
PHP_TEMP_DIR=

# Необходимая версия PHP, обратите внимание, что текущая компиляция и тестирование были проведены для версий PHP 5.5 и 5.6, другие версии требуют фактического тестирования
PHP_VER=5.5.23

# Источник PHP, который можно выбрать из следующих вариантов: ${PHP_HK_SOURCE}, ${PHP_CN_SOURCE}, ${PHP_US_SOURCE}
PHP_SOURCE=${PHP_HK_SOURCE}

# Префикс исполняемой команды PHP, предоставляемый этой переменной, в основном для обеспечения возможности одновременного существования нескольких версий PHP на сервере, например, некоторые исходные коды поддерживают только PHP 5.3...
PHP_BIN_PREFIX=php

# Требуется добавить имя пакета apt-get, если необходимо несколько строк, используйте двойные кавычки для объединения
PHP_REQ_PKGS=

# Команда компиляции PHP, если это не обязательно, лучше не изменять эту команду напрямую, а использовать += для добавления следующим образом:
PHP_CONF_CMD+="...дополнительная конфигурация компиляции..."

# Журнал PHP, файл pid
PHP_FPM_LOG_DIR=/var/log/${PHP_BIN_PREFIX}-fpm
PHP_FPM_PID_FILE=/var/run/${PHP_BIN_PREFIX}-fpm.pid
PHP_FPM_ERR_FILE=${PHP_FPM_LOG_DIR}/error.log
PHP_FPM_LOG_LEVEL=warning

# Максимальное количество процессов FPM, тайм-аут, RLIMIT
PHP_FPM_PROCESS_MAX=10
PHP_FPM_PROCESS_TIMEOUT=30
PHP_FPM_RLIMIT=65535

# Слушайте FPM, вы можете изменить его на unix:....
PHP_FPM_LISTEN="127.0.0.1:9902"
# Режим прослушивания
PHP_FPM_LISTEN_MODE=0666
# Настройки FPM PM
PHP_FPM_PM_MODE=static
PHP_FPM_PM_START=10
PHP_FPM_PM_MAX_CHILDREN=10
PHP_FPM_PM_MAX_REQUESTS=0

# Настройки php.ini
PHP_INI_MAX_EXECUTION_TIME=60
PHP_INI_MAX_INPUT_TIME=60
PHP_INI_DEFAULT_CHARSET=UTF-8
PHP_INI_POST_MAX_SIZE=10M
PHP_INI_UPLOAD_MAX_SIZE=10M

Пример user.sh:

#!/usr/bin/env bash

MC_HOST=192.168.55.122
MC_PORT=11212
MC_LOG_FILE=/var/log/memcached.log
MC_USER=memcache
MC_SIZE=64

MCR_POOL_SERVERS="\"${MC_HOST}:${MC_PORT}\""

Китайский источник Ubuntu:

Для использования китайского источника apt-get для обновления рекомендуется использовать источник sohu, поскольку известно, что источник 163 содержит ошибки в некоторых пакетах, будьте осторожны.

Источник sohu:

deb http://mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse
deb
``` ```
mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse
deb mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src mirrors.sohu.com/ubuntu/ trusty main restricted universe multiverse
deb-src mirrors.sohu.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src mirrors.sohu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src mirrors.sohu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src mirrors.sohu.com/ubuntu/ trusty-backports main restricted universe multiverse

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Пакет установки сервиса Ubuntu для Ubuntu Server 14.04 LTS. В настоящее время поддерживается версия 16.04 LTS. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/janpoem-ubuntu-server-deploy.git
git@api.gitlife.ru:oschina-mirror/janpoem-ubuntu-server-deploy.git
oschina-mirror
janpoem-ubuntu-server-deploy
janpoem-ubuntu-server-deploy
master