Настройка приложения Node.js для веб-сайта с Apache на Ubuntu 16.04

Node.js — это среда выполнения JavaScript, которая позволяет легко создавать приложения на стороне сервера. Используя менеджер процессов PM2, вы можете настроить приложение Node.js, которое будет работать как служба на Ubuntu 16.04.

Выполнение сценариев Node.js в качестве службы

Хотя сценарии JavaScript Node.js с открытым исходным кодом можно запускать из командной строки с помощью screen, запуск сценариев в качестве службы с помощью менеджера процессов PM2 дает сценариям более надежный набор поведений. При запуске в качестве службы скрипты автоматически перезапускаются в случае перезагрузки сервера или сбоя скрипта.

PM2 — это менеджер процессов для Node.js с широким набором функций, которые вы можете использовать для контроля и управления вашими скриптами Node.js. Посетите официальный сайт PM2 для получения дополнительной информации об использовании PM2.

Требования

  • Облачный сервер под управлением Linux (Ubuntu 16.04).
  • Рабочее доменное имя, которое ссылается на сервер.
  • Установленный и работающий веб-сервер Apache.

Установите Node.js

Обновите пакеты вашего сервера и установите curl с помощью следующих команд:

sudo apt-get update
sudo apt-get install curl

Скачайте архив персональных пакетов Node.js (PPA). Он содержит более свежую версию Node.js, чем репозитории Ubuntu:

curl -sL https://deb.nodesource.com/setup_6.x -o nodesource_setup.sh

Выполните команду nodesource_setup.sh, чтобы добавить PPA в кэш пакетов вашего сервера:

sudo bash nodesource_setup.sh
Примечание

Этот скрипт обновит сервер автоматически. Нет необходимости запускать apt-get update во второй раз.

После этого установите Node.js:

sudo apt-get install nodejs

Это также автоматически установит npm.

Наконец, установите пакет build-essential для npm:

sudo apt-get install build-essential

Создание примера приложения Node.js

Для этого примера мы начнем с создания отдельного каталога в корне документа вашего сайта для размещения приложений Node.js:

sudo mkdir /var/www/html/nodejs

Создайте файл hello.js в этом каталоге:

sudo nano /var/www/html/nodejs/hello.js

Добавьте в файл следующее содержание примера:

#!/usr/bin/env nodejs
var http = require('http');
http.createServer(function (request, response) {
   response.writeHead(200, {'Content-Type': 'text/plain'});
   response.end('Hello World! Node.js is working correctly.n');
}).listen(8080);
console.log('Server running at http://127.0.0.1:8080/');

Сохраните и выйдите из файла, сделав его исполняемым:

sudo chmod 755 hello.js

Установите PM2

Используйте npm для установки PM2 с помощью команды:

sudo npm install -g pm2

Запустите скрипт примера hello.js, который вы только что создали, командой:

sudo pm2 start hello.js

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

sudo pm2 startup systemd

Настройте Apache

Чтобы получить доступ к скрипту Node.js из интернета, установите модули Apache proxy и proxy_http с помощью команд:

sudo a2enmod proxy
sudo a2enmod proxy_http

После завершения установки перезапустите Apache, чтобы изменения вступили в силу:

sudo service apache2 restart

Далее необходимо настроить конфигурацию прокси Apache. Следующие директивы необходимо вставить в командный блок VirtualHost в главном конфигурационном файле Apache сайта.

По общему соглашению, этот файл конфигурации Apache обычно находится в /etc/apache2/sites-available/example.com.conf на Ubuntu.

Примечание

Расположение и имя файла конфигурации Apache сайта могут отличаться.

Отредактируйте этот файл в выбранном вами редакторе, например, с помощью команды:

sudo nano /etc/apache2/sites-available/example.com.conf

Прокрутите файл, пока не найдете блок команды VirtualHost, который будет выглядеть следующим образом:

<VirtualHost *:80>
ServerName example.com
    <Directory "/var/www/example.com/html">
    AllowOverride All
    </Directory>
</VirtualHost>

Добавьте следующее в командный блок VirtualHost:

ProxyRequests Off
   ProxyPreserveHost On
   ProxyVia Full
   <Proxy *>
      Require all granted
   </Proxy>

   <Location /nodejs>
      ProxyPass http://127.0.0.1:8080
      ProxyPassReverse http://127.0.0.1:8080
   </Location>

Обязательно поместите эти строки вне любых командных блоков Directory. Например:

<VirtualHost *:80>
ServerName example.com

   ProxyRequests Off
   ProxyPreserveHost On
   ProxyVia Full
   <Proxy *>
      Require all granted
   </Proxy>

   <Location /nodejs>
      ProxyPass http://127.0.0.1:8080
      ProxyPassReverse http://127.0.0.1:8080
   </Location>

    <Directory "/var/www/example.com/html">
    AllowOverride All
    </Directory>
</VirtualHost>

Сохраните и выйдите из файла, затем перезапустите Apache, чтобы изменения вступили в силу:

sudo services apache2 restart`

После перезапуска Apache вы можете протестировать приложение, просмотрев его в браузере. Вы должны увидеть следующее сообщение из тестового файла, который вы создали ранее:

Hello World! Node.js is working correctly.

Оцените статью
cdelat.ru
Добавить комментарий