Deployment

Develops and deploys simple application from scratch using most commonly used technologies/libraries.

How to deploy to IIS?

Открываем IIS, устанавливаем модуль ASP.NET, добавляем новый сайт, прописываем необходимую информацию, запускаем.

Еще, кроме IIS, .NET приложения можно деплоить через Octopus.

Есть возможность деплоится прямо из студии с помощью publish profile или publish settings.

Инструкция:

Для первого, выполняем следующие шаги (НЕ работает для Windows 7), IIS в моем случае на другой машине:

  • Убеждаемся, что IIS установлен;
  • Модуль ASP .NET установлен;
  • Добавляем модуль в WWB -> Security -> Basic Authentication;
  • Разрешить web деплоймент;

Идем в IIS, в настройки аунтификации, разрешаем basic authentication.

  • После этого устанавливаем модуль Service Managment и заходим в его настройки в IIS, чекаем Enable remote connections;
  • Конфигурируем сайт в IIS или используем как вариант дефалтовый сайтец (Default Web Site);

Тут в целом неважно какой сайт в самом IIS ты используешь, потому что IIS либо будет закидывать все файлы проекта в дефалтовый сайт, либо ты создаешь новый сайтец, туда кладешь пустой проект, но даешь правда на чтение и редактирование самому IIS. Соответственно, при создании профайла, мы указываем желаемый сайт, к которому применим в итоге деплоймент.

  • Добавляем в папку с кодом сайта права на доступ к файлам для IIS (Properties > Security > Edit > Add. Type IIS_IUSRS);
  • Установить IIS Management Scripts and Tools;
  • Установить Web Deploy в IIS;
  • Создаем в IIS Web Deploy Publish Profile (right-click the Default Web Site, choose Deploy > Configure Web Deploy Publishing);

  • Открываем студию и заходим в Build -> Publish app;
  • Импортируем созданный publish profile;

  • Сохраняем свой пароль и проверяем информацию;
  • Если есть вопрос с лицензией - жмякаем accept, потом publish;
  • Сайт билдиться и все работает :);

Полезные ссылки:

https://docs.microsoft.com/en-us/visualstudio/deployment/tutorial-import-publish-settings-iis?view=vs-2017

https://www.a2hosting.com/kb/a2-hosting-products/windows-hosting/publishing-a-site-from-visual-studio-using-web-deploy


Для второго, вначале импортируем публичные настройки, а после деплоем приложение. Для этого необходимо выполнить четыре действия:

  • Конфигурируем IIS так, что бы можно было сгенерировать публичный файл с настройками;

  • Создаем файл с публичными настройками;

  • Импортировать файл с публичными настройками в студию;

  • Задеплоить приложение в IIS;

Больше об этом туть.

How to deploy express/Node.Js?

Открываем IIS, устанавливаем модуль iis-node, добавляем новый сайт, прописываем необходимую информацию, запускаем.


Как деплоить без iis.

Как правильно развернуть приложение, чтобы оно торчало в интернет. Как диспетчеры процессов можно использовать для развертки (см офиц сайт express). Как сделать кластеризацию. на одной машине поднимать кластер из серверочков и увидеть, то что разные инстансы приложений мне отвечают. Например, в респонсе, что разные сообщеньки шлют.


Диспетчер процессов можно сравнить с сервером приложений: это “контейнер” для приложений, обеспечивающий развертывание и высокую готовность и позволяющий управлять приложением в среде выполнения.

Наиболее популярные диспетчеры процессов для Express и других приложений Node.js:

  • StrongLoop Process Manager
  • PM2
  • Forever

Пробуем развернуть приложение с помощью pm2:

  • Устанавливаем PM2
npm install pm2 -g
  • Стартуем приложение с помощью pm2:
pm2 start app.js
  • Теперь приложение будет работать в фоновом режиме с определенным id. Мы можем управлять приложением с помощью команд pm2, указывая этот id.
  • Указывая порт и название машины, мы можем теперь работать с приложением на нужном порту.

  • Также можем конфигурировать конфиг для pm2 таким образом, что бы выполнялись разные команды при запуске на разным environments (только для деплоя, выглядит так, что нужны репозитории при этом.)

Добавляем кластеризацию:

  • Добавляем в package.json file следующую настройку:
{
  "apps" : [{
    "script"    : "api.js",
    "instances" : "max",
    "exec_mode" : "cluster_mode",
    "name": "simpleApp",
    "env": {
    "PORT": 2010,
    "NODE_ENV": "development"
    },
    "env_staging" : {
    "PORT": 2015,
    "NODE_ENV": "staging"
    }
  }]
}
  • max в этом случае указывает на то, что PM2 автоматически распознает количество доступных CPUs и запустит столько процессов сколько возможно.
  • Указываем PM2, что хотим работать с режимом кластера.
  • Запускаем файл с настройками:
pm2 start package.json --env staging
  • Так будет выглядеть консоль:

  • Грохаем приложуху, которая работает в fork;

  • Добавляем в файл следующее логирование:

    var http = require('http');

    console.log(Worker ${process.pid} started to create message);

    http.createServer(function (req, res) {

      res.writeHead\(200, {'Content-Type': 'text/html'}\);  
      res.end\('You have reached the default application at index.js! ' + process.pid\);  
    

    }).listen(2010);

    console.log(Server running on ${process.pid});

  • Запускаем команду логирования в консоли:

pm2 log
  • Теперь открываем наш портал, смотрим, что порты переодически, в зависимости от перезагрузки меняются и смотрим в логи (у меня в кластерном моде логи в итоге не завелись):

В итоге при загрузке на разных машинках меняются воркеры:


Инструкция:

  • How to deploy in containers? - под линуксом, взять нодовский образ, и создать свой образ, куда запакую приложение и что могу запустить и развернуть это же приложение на другом сервере*.

Инструкция:

  • Устанавливаем Докер;
  • Открываем консольку Докера;
  • Создаем Docker файл с описанием нашего нодовского приложения. ОБЯЗАТЕЛЬНО! указываем правильный путь к файлу (все папки) CMD [ "node", "src/index.js" ];
  • Открываем cmd внутри нашего проекта;
  • Инициализируем environments;

  • Запускаем следующую команду:
docker build -t название-через-дефис .
  • Добавляем теперь проект в hub.docker.com;
  • Логинимся;
  • Идем обратно в консольку и логинимся:
docker login
  • Строим приложение уже с помощью креденшалов:
docker build -t [USERNAME]/hello-world .
  • Пушим его в хаб:
docker push [USERNAME]/hello-world
  • На сайте добавился наш проект.

Развернем его теперь на сервере:

I. C помощью самого докера

  • Открываем cmd, сетим переменные и логинимся;
  • Качаем приложение:
docker pull marypchel/node-docker-dev
  • Запускаем приложение с указанием порта
docker run -p 2010:2010 marypchel/node-docker-dev
  • Открываем по id docker и порту наш запущенный проект

В моем случае: http://192.168.99.100:2010

Важно: Что бы посмотреть что сейчас лежит на моем образе в докере на локальной машинке

docker run --rm -it marypchel/node-docker-dev bash
ls
cd src
ls

Использование WinRM

Инструкция и туть

  • Стартуем powershell и поставить winRM на автозапуск;
  • Выполняем сл. команды:
Enable-PSRemoting
Set-WSManQuickConfig
  • Тестируем с локальной машины, что у нас есть доступ к удаленной:
Test-WsMan COMPUTER
  • Открываем сессию на удаленной машине:

  • Логинимся и нам открывается возможность делать команды на удаленной машине.
  • Создали файлик, например


results matching ""

    No results matching ""