Главная
Главная Руководства Ubuntu › nodejs + nginx + passenger + ubuntu 16.04



Автор:

Статья опубликована: 2018-08-09 19:31:49
Последние правки: 2019-09-23 17:29:10

Запускаем node.js приложение при помощи Phusion Passenger, установленного как модуль для nginx в Ubuntu 16.04.

  • Исходные данные
    # cat /etc/os-release
    PRETTY_NAME="Ubuntu 16.04.5 LTS"
    

  • Passenger
    Добавляем репозиторий passenger.
    Файл /etc/apt/sources.list.d/passenger.list
    deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main
    
    Добавляем ключ passenger:
    apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
    
    # apt-get update
    
    Вместо nginx (если установлен, то будет удален) необходимо установить nginx-common
    # apt-get install nginx-common
    
    Устанавливаем
    # apt-get install nginx-extras passenger
    

  • nodejs
    Ставим версию 8. Кому нужна версия 12 - меняем 8 на 12.
    Добавляем в систему ключ:
    # curl -LSs https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
    
    Добавляем репозиторий в файл /etc/apt/sources.list.d/nodejs.list
    deb https://deb.nodesource.com/node_8.x xenial main
    deb-src https://deb.nodesource.com/node_8.x xenial main
    
    # apt-get update
    # apt-get -y install nodejs
    
    проверяем, если /usr/bin/node нет, то делаем симлинк
    # ln -s /usr/bin/nodejs /usr/bin/node
    
    Проверяем:
    # node -v
    v8.11.3
    # npm -v
    5.6.0
    

  • Сайт
    Добавить или найти и раскомментировать в файле /etc/nginx.conf
    http {
      include /etc/nginx/passenger.conf;
    }
    
    Конфиг сайта: /etc/nginx/sites-available/site-nodejs.conf (не забудьте сделать линк в sites-enabled):
    server {
      listen 80;
      server_name site-nodejs.test;
      root /var/www/site-nodejs/public;
    
      try_files $uri @backend;
    
      location @backend {
        passenger_app_root /var/www/site-nodejs;
        passenger_enabled on;
        passenger_app_type node;
        passenger_startup_file test.js;
      }
    }
    
    # systemctl restart nginx
    
    Делаем папки сайта:
    # mkdir -p /var/www/site-nodejs/public
    # mkdir -p /var/www/site-nodejs/tmp
    # chown -R www-data:www-data /var/www/site-nodejs
    
    Пишем в файл /var/www/site-nodejs/test.js :
    var http = require("http");
    function onRequest(request, responce){
            var body = '<html><head></head>'+
            '<body>42</body></html>';
    
            responce.writeHead(200, {"Content-Type" : "text/html"});
            responce.write(body);
            responce.end();
    }
    http.createServer(onRequest).listen(9080);