Когда дело доходит до внешнего развертывания, большинство внешних инженеров, вероятно, используют готовую систему развертывания компании в своей работе для подключения к SRE для выполнения операций внешнего развертывания. Если я сейчас дам вам только что зарегистрированный облачный хост, что вы должны сделать, чтобы развернуть интерфейсный проект на облачном хосте и стать доступной веб-страницей? Сегодня мы поговорим о внешнем развертывании ~
1. Состав
1. Оборудование
Прежде всего, чтобы превратить интерфейсный проект в доступную службу или веб-страницу, он должен работать на хост-компьютере. Нам нужно найти онлайн-машину, которая будет хост-машиной. К счастью, есть много крупных производителей, которые предоставляют облачный сервер ECS в Китае. Продукты, предоставляемые BAT и Amazon, не сильно отличаются по своей природе. Мы можем выбирать в соответствии с нашими собственными предпочтениями. . В этой статье автор использует хост Alibaba Cloud, 1-ядерный, 2 ГБ, 1 Мбит/с, 64-разрядную машину Ubuntu 16.04.
2. Программное обеспечение
После того, как аппаратное приложение будет завершено, давайте поговорим о минимальном программном обеспечении, которое необходимо установить для запуска службы. Программное обеспечение, которое нам нужно: nginx, nodejs, PM2, git.
nginx: как http-сервер, он принимает запросы из Интернета и перенаправляет запросы на соответствующие порты в соответствии с настроенными правилами.
NodeJS: предоставляет операционную среду JS на основной облачной машине.
PM2: диспетчер процессов для узловых приложений
git: удаленно загружать код репозитория git на облачный хост
2. Установка
(Поскольку в этой статье используется система онлайн-машин — Ubuntu, при установке программного обеспечения используется apt-get. Если ваша машина — CentOS, вы можете заменить синоним на yum.)
1. Установите НВМ
- Сначала установите необходимые пакеты
sudo apt-get update
sudo apt-get install build-essential libssl-dev
- Затем используйте wget для установки nvm
wget -qO- пользовательское содержимое raw.GitHub.com/creation IX/… | bash
2. Установите git
sudo apt-get install git
3. Установите узел с помощью nvm
nvm install stable (установить последнюю стабильную версию) или
nvm install 4.2.2 (установить конкретный номер версии)
4. Установите PM2, используя NPM
npm install -g pm2
5. Вручную установите nginx
- Первая установка nginx зависит от pcre, openssl, zlib
sudo apt-get install openssl libssl-dev
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g-dev
- Затем вручную установите nginx
tar zxvf nginx-1.12.2.tar.gz
./configure --prefix=/server/runtime/nginx/1.12.2 (параметр префикса — это заданный вами целевой путь установки)
make && make install
3. Настройки каталога
Внимательным читателям будет любопытно, почему мой nginx не устанавливается напрямую с помощью apt-get, а устанавливается сам?
Если я использую apt-get для установки nginx, программное обеспечение будет автоматически установлено в каталог usr, и установка последующих версий перезапишет предыдущую версию. Если мне необходимо установить на сервер несколько версий nginx, например версию Mainline и стабильную версию, мне нужно выполнить установку вручную, чтобы физически разделить версии nginx.
Мой каталог разделен на:
Как показано на рисунке, создайте новый каталог сервера в / (корневой каталог), а затем создайте четыре папки: app, compile, daemon и runtime в каталоге сервера.
1. приложение
Код проекта разработки хранится в каталоге приложения, а код хранилища git загружается через git clone. При возникновении проблемы со службой вы можете вручную войти в облачный хост и вручную перезапустить службу в каталоге приложения.
2. компилировать
Загруженный пакет tar и файлы, распакованные из пакета tar, хранятся в каталоге компиляции. Если загружено слишком много программного обеспечения, для облегчения управления вы можете хранить их в папках в соответствии с программным обеспечением.
3. время выполнения
Каталог среды выполнения — это целевой путь для установки программного обеспечения.Установочный пакет nginx в каталоге компиляции устанавливается в каталог времени выполнения с помощью команды configure. Внутренняя структура каталогов среды выполнения показана на рисунке:
Как показано на рисунке, для облегчения управления каталог среды выполнения разделен на папки (nginx) в соответствии с программным обеспечением, а затем на папки (1.12.2) в соответствии с версией.
4. Демон
Демон называется процессом демона, и в каталоге демона хранятся службы, которые будут работать всегда, например nginx. Внутренняя структура каталогов демона показана на рисунке:
Как показано на рисунке, каталог nginx сначала делится по версии (1.12.2), а затем по порту (80). В сценарии, где сосуществуют несколько версий nginx и несколько портов, если я хочу быстро найти проблему с nginx, это разделение значительно упростит работу и обслуживание. Когда вам нужно найти соответствующую версию и соответствующий порт, вам нужно только найти каталог файлов.
Содержимое папки conf копируется из всей папки conf в каталоге установки nginx.Для настроек, необходимых для нашего собственного бизнеса, мы можем напрямую изменить файлы конфигурации в папке conf. Преимущество этой конфигурации заключается в том, что ваша собственная конфигурация отделена от предустановленной конфигурации nginx, поэтому вам не нужно беспокоиться о поломке nginx :)
В папке журнала хранятся текущие журналы nginx, которые хранятся в виде файлов.
Кроме того, в папке 80 есть два написанных вами скриптовых файла: вверх и вниз. Роль скрипта up — подтянуть nginx, а роль скрипта down — убить работающий в данный момент nginx. Здесь операции извлечения и уничтожения записываются в скрипты, что удобно для оперативного и обслуживающего персонала, чтобы быстро и точно управлять nginx.
Таким образом выполняется настройка каталога папки сервера, а программное обеспечение, необходимое для службы, отделено от общего программного обеспечения машины, что не только удобно для ежедневного обслуживания облачного хоста, но и когда вся служба нужно удалить, просто удалите папку сервера.
4. Шаги
1. После подачи заявки на машину Alibaba Cloud создайте учетную запись на машине, чтобы позже можно было войти по ssh.
2. Подсказка машины Linux не проста в использовании лично.Вы можете использовать apt-get для установки zsh и oh-my-zsh для повышения удобства оболочки (принудительно).
3. Создайте новый каталог сервера в разделе / (корневой каталог) и создайте четыре папки: приложение, компиляцию, демон и выполнение времени в каталоге сервера.
4. Установите nvm и git с помощью apt-get, установите nodejs с помощью nvm, установите PM2 с помощью npm, установите nginx вручную.
5. Создайте папки conf и log в каталоге демона.В журнале хранятся файлы журналов.Содержимое conf скопировано из nginx.Измените файл nginx.conf в соответствии с потребностями бизнеса.
6. Хост Alibaba Cloud по умолчанию не открывает порт, вам нужно открыть соответствующий порт (80) в консоли консоли.
7. Используйте git clone, чтобы извлечь код из папки приложения, и используйте команду PM2, чтобы запустить службу.
8. Запишите файл конфигурации nginx в папку демона и запустите nginx для обработки http-запросов.
5. Код
1. Код файла конфигурации PM2
2. Код скрипта вверх
3, вниз код сценария
4, код файла конфигурации nginx
6. Резюме
Из-за ограниченного объема и уровня автора в этой статье в общих чертах описываются базовые знания об эксплуатации, обслуживании и развертывании клиентской онлайн-машины. В этой статье используется метод ручного развертывания, чтобы читатели могли более четко ознакомиться с деталями внешнего развертывания.
Есть еще много оптимизаций, которые можно сделать в будущем, например, если уровень узла будет обращаться к базе данных (MongoDB), рекомендуется добавить MemCache, для повышения скорости развертывания можно написать скрипт развертывания. и использовать сценарий для всех операций развертывания одновременно и т. д.
Зрители, которые заинтересованы в этом или столкнулись с проблемами в своей практике, могут связаться со мной ~ Электронная почта:wangxinghang@meituan.com