Как сказать лазурь запустить узел server.js - PullRequest
0 голосов
/ 11 марта 2019

У меня есть приложение angular 6, работающее нормально на Azure, но мне нужно добавить файл server.js для некоторых серверных переменных. Я добавил файл server.js в корневой каталог, например

Server.js

const express = require('express');
const bodyParser = require('body-parser');
const path = require('path');
const http = require('http');
const app = express();
var router = express.Router();
const publicIp = require('public-ip');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false}));
// Angular DIST output folder
app.use(express.static(path.join(__dirname, 'dist/projectname')));


app.get('/getip', (req, res) => {
  var ipcheck = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
  (async () => {
    console.log(await publicIp.v4());
    res.json({
      ip: await publicIp.v4(),
      ip2: req.headers['x-forwarded-for'],
      ip3: req.connection.remoteAddress,
      ip4: req.ip
    });

  })();
});
// Send all other requests to the Angular app
app.get('/*', (req, res) => {
    res.sendFile(path.join(__dirname, 'dist/projectname/index.html'));
});
app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'dist/prjectname/index.html'));
});


//Set Port
const port = process.env.PORT || '3000';
app.set('port', port);

const server = http.createServer(app);

server.listen(port, () => console.log(`Running on localhost:${port}`));

Затем я иду в cmd и запускаю узел server.js, он прекрасно работает на локальном хосте, но теперь я хочу сделать то же самое на сервере Azure, как развернуть его.или как сказать Azure всегда запустить узел server.js

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

просто создайте свой проект ng build --prod , затем откройте папку проекта в папке dist в vs 17, затем добавьте

package.json

index.js

web.config

вы можете получить эти 3 файла формы здесь и вы можете редактировать index.js по мере необходимости, мне просто нужно добавить это

app.get('/getip', (req, res) => {
  res.json({
      ip: req.headers['x-forwarded-for'].split(":")[0]
    });
});

app.get('*', (req, res) => {
   res.sendFile(path.join(__dirname, 'index.html'));
});

это запускает мое приложение через nodejs.

когда я вызываю getip, это дает мне ip сервера, а в противном случае возвращает angular index.html, который обрабатывает всю маршрутизацию.

0 голосов
/ 11 марта 2019

Я предполагаю, что вы знали, как создать веб-приложение Azure в портале Azure или Azure CLI . Затем я вижу, что вы разработали приложение Node.js в Visual Stodio 2017 и хотите развернуть его в Azure с помощью того же инструмента, поэтому я предложил вам обратиться к вики-странице NTVS Publish to Azure Website using Web Deploy, чтобы узнать, как это сделать. делать.

Далее ниже приведены четыре заметки, которые необходимо знать перед развертыванием.

  1. Пожалуйста, подтвердите версию Node.js в созданном вами WebApp, версия по умолчанию - 0.10+. Вы можете получить доступ к консоли Kudo вашего веб-приложения через URL https://<your webapp name>.scm.azurewebsites.net/DebugConsole и команду node -v, чтобы получить его. Вы можете настроить его в CLI Azure для запуска команды, подобной az webapp config appsettings set --resource-group <your ResourceGroup> --name <app_name> --settings WEBSITE_NODE_DEFAULT_VERSION=10.14.1, или следуйте приведенному ниже рисунку на портале Azure. Дополнительные сведения о версии узла в Azure WebApp см. В моем ответе для темы SO версия узла веб-приложения Azure Webapp .

enter image description here

  1. В вашем проекте должен быть файл Web.config, чтобы поговорить с IIS в Azure WebApp о том, как запустить приложение Node. Содержимое файла Web.config совпадает с примером на вики-странице Kudu Using a custom web.config for Node apps, его можно скопировать напрямую, поскольку имя файла начальной загрузки js также равно server.js.

  2. Порт прослушивания в Azure WebApp назначается случайным образом средой, его можно получить из переменной среды HTTP_PLATFORM_PORT, которая также будет получена с помощью process.env.PORT. Так что вы ничего не будете делать в своем коде для port.

  3. Приложение Node будет развернуто по пути home/site/wwwroot Azure WebApp, к которому также можно получить доступ через консоль Kudu. Поэтому, без каких-либо инструментов, вы также можете использовать консоль Kudu для развертывания вашего приложения, просто сделайте файловую структуру в wwwroot такой же, как ваш проект, который включает все js-файлы и каталоги, node_modules и web.config.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...