One place for hosting & domains

      Как установить Nginx в Ubuntu 18.04


      Предыдущая версия руководства была написана Джастином Эллингвудом.

      Введение

      Nginx является одним из самых популярных веб-серверов в мире, его используют для хостинга самых больших и нагруженных сайтов в Интернете. Nginx в подавляющем большинстве случаев менее требователен к ресурсам, чем Apache; его можно использовать как в качестве веб-сервера, так и в качестве обратного прокси-сервера (reverse proxy).

      В этом руководстве мы рассмотрим процесс установки Nginx на ваш сервер с Ubuntu 18.04.

      Перед установкой

      Перед тем, как начать следовать описанным в этой статье шагам, убедитесь, что у вас есть обычный не-рутовый (non-root) пользователь с привилегиями sudo. Узнать, как настроить такого пользователя на вашем сервере, можно из статьи о первичной настройке сервера на Ubuntu 18.04.

      После того, как вы создали такого пользователя, зайдите на сервер используя его логин и пароль. Теперь вы готовы следовать шагам, описанным в этой статье.

      Шаг 1 – Установка веб-сервера Nginx

      Nginx доступен в стандартных репозиториях Ubuntu, поэтому мы можем использовать менеджер пакетов apt для его установки.

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

      • sudo apt update
      • sudo apt install nginx

      В результате выполнения этих команд apt установит Nginx и другие необходимые для его работы пакеты на ваш сервер.

      Шаг 2 – Настройка файрвола

      Перед тем, как начать проверять работу Nginx, нам необходимо настроить наш файрвол для разрешения доступа к сервису. При установки Nginx регистрируется в сервисе файрвола ufw. Поэтому настройка доступа осуществляется достаточно просто.

      Для вывода настроек доступа для приложений, зарегистрированных в ufw, введём команду:

      В результате выполнения этой команды будет выведен список профилей приложений:

      Вывод

      Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

      Как видно из этого вывода, для Nginx настроено три профиля:

      • Nginx Full: этот профиль открывает порты 80 (обычный, не шифрованный веб-трафик) и 443 (трафик шифруется с помощью TLS/SSL).
      • Nginx HTTP: этот профиль открывает только порт 80 (обычный, не шифрованный веб-трафик).
      • Nginx HTTPS: этот профиль открывает только порт 443 (трафик шифруется с помощью TLS/SSL).

      Рекомендуется настраивать ufw таким образом, чтобы разрешать только тот трафик, который вы хотите разрешить в явном виде. Поскольку мы ещё не настроили SSL для нашего сервера, в этой статье мы разрешим трафик только для порта 80.

      Сделать это можно следующей командой:

      • sudo ufw allow 'Nginx HTTP'

      Вы можете проверить изменения введя команду:

      В результате должен отобразиться вывод следующего вида:

      Вывод

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

      Шаг 3 - Проверка работы веб-сервера

      После завершения процесса установки Ubuntu 18.04 запустит Nginx автоматически. Таким образом веб-сервер уже должен быть запущен.

      Мы можем убедиться в этом выполнив следующую команду:

      Вывод

      ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-04-20 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

      Как видно из вывода выше, сервис запущен и работает. Тем не менее, убедимся в его полной работоспособности путём запроса веб-страницы.

      Для этого мы можем проверить, отображается ли веб-страница Nginx, доступная по умолчанию при вводе доменного имени или IP адреса сервера. Если вы не знаете публичного IP адреса сервера, вы можете найти этот IP адрес несколькими способами.

      Попробуйте набрать эту команду в терминале вашего сервера:

      • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's//.*$//'

      В результате будет выведено несколько IP адресов. Попробуйте вставить каждый из них в браузер.

      Другим способом определить свой IP адрес будет проверка, как ваш сервер виден из Интернета:

      Наберите полученный IP адрес или доменное имя в вашем веб-браузере.

      http://IP_адрес_вашего_сервера
      

      Вы должны увидеть страницу Nginx по умолчанию.

      Страница Nginx по умолчанию

      Если вы видите подобную страницу в своём браузере, вы успешно установили Nginx.

      Шаг 4 - Управление процессом Nginx

      Теперь, когда Nginx установлен и мы убедились в его работоспособности, ознакомимся с некоторыми базовыми командам для управления нашим веб-сервером.

      Для остановки веб-сервера используйте команду:

      • sudo systemctl stop nginx

      Для запуска остановленного веб-сервера наберите:

      • sudo systemctl start nginx

      Для перезапуска веб-сервера можно использовать следующую команду:

      • sudo systemctl restart nginx

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

      • sudo systemctl reload nginx

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

      • sudo systemctl disable nginx

      Для повторного включения запуска Nginx при старте сервера введите:

      • sudo systemctl enable nginx

      Шаг 5 - Настройка серверных блоков (рекомендуется)

      При работе с Nginx серверный блоки (аналог виртуальных хостов в Apache) используются для инкапсуляции настроек сайтов и позволяют хостить более одного домена на сервере. Мы рассмотрим настройку серверных блоков на примере example.com, но вам будет необходимо заменить этот домен своим реальным доменным именем. Узнать больше о настройке доменных имён в DigitalOcean вы можете из нашего руководства Введение в DNS DigitalOcean.

      Nginx для Ubuntu 18.04 уже настроен для поддержки одного серверного блока, который настроен на показ документов из директории /var/www/html. Несмотря на то, что это работает для одного сайта, это не очень удобно для хостинга нескольких сайтов. Вместо того, чтобы менять /var/www/html создадим новую структуру директорий внутри /var/www/ для нашего сайта example.com. Директорию /var/www/html оставим без изменений, её содержимое будет отображаться, если клиентские запросы не подходят для отображения других настроенных на сервере сайтов.

      Создадим директорию для example.com следующей командой, используя флаг -p для создания любых необходимых родительских директорий:

      • sudo mkdir -p /var/www/example.com/html

      Далее настроим права доступа для созданной директории для текущего пользователя, используя переменную окружения $USER:

      • sudo chown -R $USER:$USER /var/www/example.com/html

      Теперь права должны для корневой директории быть настроены правильным образом при условии, что вы не меняли своё значение umask. На всяких случай мы можем удостовериться в этом командой:

      • sudo chmod -R 755 /var/www/example.com

      Далее создадим страницу index.html в nano или любом другом текстовом редакторе:

      • nano /var/www/example.com/html/index.html

      Добавим в файл следующий HTML:

      /var/www/example.com/html/index.html

      <html>
          <head>
              <title>Welcome to Example.com!</title>
          </head>
          <body>
              <h1>Success!  The example.com server block is working!</h1>
          </body>
      </html>
      

      Сохраните и закройте файл.

      Для того, чтобы Nginx мог отдавать этот контент, нам необходимо настроить серверный блок. Вместо того, чтобы редактировать существующий файл конфигурации серверного блока, создадим новый файл для нашего сайта - /etc/nginx/sites-available/example.com:

      • sudo nano /etc/nginx/sites-available/example.com

      Скопируйте следующий текст настроек серверного блока в созданный файл:

      /etc/nginx/sites-available/example.com

      server {
              listen 80;
              listen [::]:80;
      
              root /var/www/example.com/html;
              index index.html index.htm index.nginx-debian.html;
      
              server_name example.com www.example.com;
      
              location / {
                      try_files $uri $uri/ =404;
              }
      }
      

      Обратите внимание на то, что мы изменили конфигурацию root на адрес нашей новой директории, а server_name на наше доменное имя.

      Теперь активируем файл путём создания ссылки на него в директории sites-enabled, которую Nginx проверяет при старте:

      • sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

      Теперь два серверных блока активированы и настроены для ответа на основании своих директив listen и server_name (вы можете узнать больше о том, как Nginx обрабатывает эти директивы вот тут):

      • example.com: Будет отвечать на запросы example.com и www.example.com.
      • default: Будет отвечать на любые запросы на порту 80, которые не соответствуют другим настроенным блокам.

      Для того, чтобы избежать потенциальной проблемы hash bucket memory, которая может появиться при добавлении дополнительных имён серверов, нам необходимо изменить одно значение в файле /etc/nginx/nginx.conf. Откройте файл командой:

      • sudo nano /etc/nginx/nginx.conf

      Найдите директиву server_names_hash_bucket_size и удалите символ # для того, чтобы раскомментировать её:

      /etc/nginx/nginx.conf

      ...
      http {
          ...
          server_names_hash_bucket_size 64;
          ...
      }
      ...
      

      Далее проверим файлы Nginx на наличие синтаксических ошибок:

      Сохраните и закройте файл.

      Если никаких проблем не обнаружилось, перезапустите Nginx для применения внесённых изменений:

      • sudo systemctl restart nginx

      Теперь Nginx должен корректно обрабатывать ваше новое доменное имя. Вы можете убедиться в этом набрав в браузере http://example.com и увидев что-то вроде такого вывода:

      Успешная настройка example.com

      Шаг 6 - Важные файлы и директории Nginx

      Теперь, когда мы знаем основные команды для управления веб-сервером, ознакомимся с основными директориями и файлами.

      Контент

      • /var/www/html: веб-контент, который по умолчанию состоит только из тестовой страницы Nginx, которую мы видели ранее, находится в директории /var/www/html. Путь к этой директории можно настроить в файлах конфигурации Nginx.

      Конфигурация сервера

      • /etc/nginx: директория конфигурации Nginx. Все файлы конфигурации Nginx находятся в этой директории.
      • /etc/nginx/nginx.conf: основной файл конфигурации Nginx. Этот файл используется для внесения изменений в глобальную конфигурацию Nginx.
      • /etc/nginx/sites-available: директория, в которой хранятся серверные блоки для каждого сайта. Nginx не будет использовать конфигурационные файлы в этой директории, если они не имеют соответствующих ссылок в директории sites-enabled (см. ниже). Обычно все настройки серверного блока осуществляются в этой директории, а затем сайт активируется путём создания ссылки в другой директории.
      • /etc/nginx/sites-enabled/: в этой директории хранятся серверные блоки для активированных сайтов. Обычно это достигается путём создания ссылок на конфигурационные профили сайтов, расположенные в директории sites-available.
      • /etc/nginx/snippets: в этой директории хранятся фрагменты конфигурации, которые можно использовать при конфигурации любых сайтов. Фрагменты конфигурации, которые потенциально могут быть использованы в нескольких файлах конфигурации, являются прекрасными кандидатами для создания этих сниппетов.

      Логи сервера

      • /var/log/nginx/access.log: каждый запрос к вашему веб-серверу записывается в этот файл лога, если иное не задано настройками Nginx.
      • /var/log/nginx/error.log: любые ошибки Nginx будут записываться в этот файл.

      Заключение

      Теперь, когда у вас есть установленный и настроенный веб-сервер, вы можете выбирать, какой контент отдавать пользователям, и какие другие технологии вы можете использовать в дополнение к веб-серверу.

      Если вы хотите использовать более полный стек приложений, рекомендуем ознакомиться с нашим руководством по настройке стека LEMP на сервере с Ubuntu 18.04.



      Source link

      Как повысить безопасность Nginx с помощью Let’s Encrypt в Ubuntu 18.04


      Предыдущая версия руководства была написана Хэйзел Вирдо.

      Введение

      Let’s Encrypt представляет собой центр сертификации (Certificate Authority, CA), позволяющий получать и устанавливать бесплатные сертификаты TLS/SSL, тем самым позволяя использовать шифрованный HTTPS на веб-серверах. Процесс получения сертификатов упрощается за счёт наличия клиента Certbot, который пытается автоматизировать большую часть (если не все) необходимых операций. В настоящее время весь процесс получения и установки сертификатов полностью автоматизирован и для Apache и для Nginx.

      В этом руководстве мы используем Certbot для получения бесплатного SSL сертификата для Nginx на Ubuntu 18.04, а также настроим автоматическое продление этого сертификата.

      Перед установкой

      Перед тем, как начать следовать описанным в этой статье шагам, убедитесь, что у вас есть:

      • Сервер с Ubuntu 18.04, настроенный согласно руководству по первичной настройке сервера с Ubuntu 18.04, включая настройку не-рутового (non-root) пользователя с привилегиями sudo и настройку файрвола.
      • Зарегистрированное доменное имя. В этом руководстве мы будем использовать example.com. Вы можете приобрести доменное имя на Namecheap, получить бесплатное доменное имя на Freenom или использовать любой другой регистратор доменных имён.
      • Для вашего сервера настроены обе записи DNS, указанные ниже. Для их настройки вы можете использовать наше введение в работу с DNS в DigitalOcean.
        • Запись A для example.com, указывающая на публичный IP адрес вашего сервера.
        • Запись A для www.example.com, указывающая на публичный IP адрес вашего сервера.
      • Nginx, установленный согласно инструкциям из руководства Как установить Nginx в Ubuntu 18.04. Убедитесь, что у вас есть настроенный серверный блок для вашего домена. В этом руководстве мы будем использовать /etc/nginx/sites-available/example.com в качестве примера.

      Шаг 1 – Установка Certbot

      Перед началом использования Let’s Encrypt для получения SSL сертификаты установим Certbot на ваш сервер.

      Certbot находится в активной разработке, поэтому пакеты Certbot, предоставляемые Ubuntu, обычно являются устаревшими. Тем не менее, разработчики Certbot поддерживают свой репозиторий пакетов для Ubuntu с актуальными версиями, поэтому мы будем использовать именно этот репозиторий.

      Сначала добавим репозиторий:

      • sudo add-apt-repository ppa:certbot/certbot

      Далее нажмите ENTER.

      Установим пакет Certbot для Nginx с помощью apt:

      • sudo apt install python-certbot-nginx

      Теперь Certbot готов к использованию, но для того, чтобы он мог настроить SSL для Nginx, нам сперва необходимо проверить кое-какие настройки Nginx.

      Шаг 2 – Проверка настроек Nginx

      Certbot должен иметь возможность найти корректный серверный блок в вашей конфигурации Nginx для того, чтобы автоматически конфигурировать SSL. Для этого он будет искать директиву server_name, которая совпадает с доменным именем, для которого вы запросите сертификат.

      Если вы следовали инструкциям по настройке серверного блока в руководстве по установке Nginx, у вас должен быть серверный блок для вашего домена по адресу /etc/nginx/sites-available/example.com с уже правильно настроенной директивой server_name.

      Для проверки откройте файл серверного блока в nano или любом другом текстовом редакторе:

      • sudo nano /etc/nginx/sites-available/example.com

      Найдите строку с server_name. Она должна выглядеть примерно так:

      /etc/nginx/sites-available/example.com

      ...
      server_name example.com www.example.com;
      ...
      

      Если она выглядит таким образом, закройте файл и переходите к следующему шагу.

      Если она не выглядит так, как описано выше, обновите директиву server_name. Затем сохраните и закройте файл, после чего проверьте корректность синтаксиса вашего конфигурационного файла командой:

      Если вы получили ошибку, откройте файл серверного блока и проверьте его на наличие опечаток или пропущенных символов. После того, как ваш конфигурационный файл будет проходить проверку на корректность, перезагрузите Nginx для применения новой конфигурации:

      • sudo systemctl reload nginx

      Теперь Certbot может находить и обновлять корректный серверный блок.

      Далее обновим настройки файрвола для пропуска HTTPS трафика.

      Шаг 3 - Разрешение HTTPS в файрволе

      Если у вас включен файрвол ufw, как рекомендуется в руководстве по первичной настройке сервера, вам необходимо внести некоторые изменения в его настройки для разрешения трафика HTTPS. К счастью, Nginx регистрирует необходимые профили в ufw в момент установки.

      Вы можете ознакомиться с текущими настройками командой:

      Скорее всего вывод будет выглядеть следующим образом:

      Вывод

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

      Как видно из вывода, разрешён только трафик HTTP.

      Для того, чтобы разрешить трафик HTTPS, разрешим профиль Nginx Full и удалим избыточный профиль Nginx HTTP:

      • sudo ufw allow 'Nginx Full'
      • sudo ufw delete allow 'Nginx HTTP'

      Проверим внесённые изменения:

      Теперь настройки ufw должны выглядеть следующим образом:

      Вывод

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

      Теперь мы можем запустить Certbot и получить наши сертификаты.

      Шаг 4 - Получение SSL сертификата

      Certbot предоставляет несколько способов получения сертификатов SSL с использованием плагинов. Плагин для Nginx берёт на себя настройку Nginx и перезагрузку конфигурации, когда это необходимо. Для использования плагина выполним команду:

      • sudo certbot --nginx -d example.com -d www.example.com

      Эта команда запускает certbot с плагином --nginx, ключи -d определяют имена доменов, для которых должен быть выпущен сертификат.

      Если это первый раз, когда вы запускаете certbot, вам будет предложено ввести адрес электронной почты и согласиться с условиями использования сервиса. После этого certbot свяжется с сервером Let's Encrypt, а затем проверит, что вы действительно контролируете домен, для которого вы запросили сертификат.

      Если всё прошло успешно, certbot спросит, как вы хотите настроить конфигурацию HTTPS.

      Вывод

      Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ------------------------------------------------------------------------------- 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

      Выберите подходящий вариант и нажмите ENTER. Конфигурация будет обновлена, а Nginx перезапущен для применения изменений. certbot выдаст сообщение о том, что процесс прошёл успешно, и где хранятся ваши сертификаты:

      Вывод

      IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2018-07-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

      Ваши сертификаты загружены, установлены и работают. Попробуйте перезагрузить ваш сайт с использованием https:// и вы увидите значок безопасности в браузере. Он означает, что соединение с сайтом зашифровано, обычно он выглядит, как зелёная иконка замка. Если вы проверите ваш сервер тестом SSL Labs Server Test, он получит оценку A.

      Закончим тестированием процесса обновления сертификата.

      Шаг 5 - Проверка автоматического обновления сертификата

      Сертификаты Let's Encrypt действительны только 90 дней. Это сделано для того, чтобы пользователи автоматизировали процесс обновления сертификатов. Пакет certbot, который мы установили, делает это путём добавления скрипта обновления в /etc/cron.d. Этот скрипт запускается раз в день и автоматически обновляет любые сертификаты, которые закончатся в течение ближайших 30 дней.

      Для тестирования процесса обновления мы можем сделать "сухой" запуск (dry run) certbot:

      • sudo certbot renew --dry-run

      Если вы не видите каких-либо ошибок в результате выполнения этой команды, то всё в полном порядке. При необходимости Certbot будет обновлять ваши сертификаты и перезагружать Nginx для применения изменений. Если автоматическое обновление по какой-либо причине закончится ошибкой, Let's Encrypt отправит электронное письмо на указанный вами адрес электронной почты с информацией о сертификате, который скоро закончится.

      Заключение

      В этом руководстве мы рассмотрели процесс установки клиента Let's Encrypt certbot, загрузили SSL сертификаты для вашего домена, настроили Nginx для использования этих сертификатов и настроили процесс автоматического обновления сертификатов. Если у вас есть вопросы по работе с Certbot, рекомендуем ознакомиться с документацией Certbot.



      Source link

      Как установить Node.js в Ubuntu 18.04


      Введение

      Node.js это платформа для разработки приложений на языке JavaScript, позволяющая быстро создавать приложения, работающие в сети. Использование JavaScript одновременно на клиентской и на серверной стороне позволяет сделать разработку более унифицированной и спроектированной в рамках единой системы.

      В этом руководстве мы покажем вам, как начать использовать Node.js на сервере с Ubuntu 18.04.

      Перед установкой

      Инструкции в этом руководстве предполагают, что вы используете Ubuntu 18.04. Перед началом убедитесь, что у вас есть не-рутовый пользователь с привилегиями sudo. Настроить такого пользователя вы можете с помощью инструкций в статье Начальная настройка сервера на Ubuntu 18.04.

      Установка стабильной версии дистрибутива из стандартных репозиториев

      В стандартных репозиториях Ubuntu 18.04 есть версия Node.js, которую удобно использовать для обеспечения однородной среды выполнения сетевых приложений сразу на нескольких серверах. На момент написания этой статьи текущая версия в репозиториях – 8.10.0. Это не самая последняя версия, но она довольно стабильна и её будет достаточно для экспериментов с языком.

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

      Теперь установим Node.js из репозиториев:

      Если пакет из репозиториев удовлетворяет вашим потребностям, то на этом установка Node.js закончена. Однако в большинстве случаев вам также потребуется установить npm - менеджер пакетов для Node.js. Это можно сделать при помощи следующей команды:

      Это позволит вам легко устанавливать модули и пакеты для Node.js.

      Из-за конфликта с другим пакетом, исполняемый файл из репозиториев Ubuntu называется nodejs вместо node. При работе имейте это ввиду.

      Для проверки того, какую именно версию Node.js вы установили в процессе, описанном выше, выполните команду:

      После того, как вы определили версию Node.js, установленную из репозиториев Ubuntu, вы можете решить, хотите ли вы работать с разными версиям, архивами пакетов или менеджерами версий. Далее мы рассмотрим эти вопросы вместе с процессом более гибкой установки.

      Установка при помощи PPA

      Альтернативный способ, при помощи которого можно установить более свежую версию Node.js, - это использование PPA (персональный архив пакетов), который поддерживается компанией NodeSource. В архиве содержатся более новые версии Node.js, чем в официальных репозиториях Ubuntu. Используя архив вы также сможете выбирать между Node.js v6.x (поддерживается до апреля 2019), Node.js v8.x (текущая версия с долгосрочной поддержкой до декабря 2019) и Node.js v10.x (последняя версия, поддерживается до апреля 2021).

      Прежде всего, вам необходимо установить сам PPA для получения доступа к его содержимому. Убедитесь, что вы находитесь в своей домашней директории, а затем используйте curl для получения установочного скрипта для необходимой вам версии, заменив 8.x на необходимую вам версию:

      • cd ~
      • curl -sL https://deb.nodesource.com/setup_8.x -o nodesource_setup.sh

      Вы можете просмотреть содержимое скрипта с помощью nano (или любого другого текстового редактора):

      Запустите скрипт с правами sudo:

      • sudo bash nodesource_setup.sh

      PPA будет включен в конфигурацию и ваш локальный кэш пакетов обновится автоматически. После выполнения установочного скрипта от Nodesource, вы можете установить Node.js так же, как описано ранее:

      Для проверки того, какую именно версию Node.js вы установили в процессе, описанном выше, выполните команду:

      Вывод

      v8.11.1

      Пакет nodejs содержит и nodejs и npm, поэтому нет никакой необходимости в дополнительной установке npm.

      npm использует конфигурационный файл в вашей домашней директории для отслеживания обновлений. Этот файл будет создан при первом запуске npm. Выполните следующую команду для того, чтобы убедиться, что npm установлен, а также для создания конфигурационного файла:

      Вывод

      5.6.0

      Для работы некоторых пакетов из npm (например таких, которые требуют компиляцию из исходников), вам потребуется установить пакет build-essentials:

      • sudo apt install build-essential

      Теперь у вас есть все необходимые инструменты для работы с пакетами npm, которые требуют компиляции из исходников.

      Установка при помощи NVM

      Альтернативой установке Node.js через apt является использование специального инструмента nvm, что расшифровывается как "Node.js version manager" (менеджер версий Node.js). Вместо того, чтобы работать на уровне операционной системы, nvm работает на уровне независимой директории в вашей домашней директории. Это означает, что вы можете устанавливать несколько самостоятельных версий Node.js, которые не будут влиять друг на друга.

      Контроль вашей среды разработки посредством nvm позволяет вам получить доступ к последним версиям Node.js, сохраняя при этом предыдущие версии. Эта утилита, тем не менее, отличается от apt, и версии Node.js, которыми вы управляете с её помощью, отличаются от стабильных версий из стандартных репозиториев Ubuntu.

      Для загрузки установочного скрипта nvm со страницы проекта на GitHub можно использовать curl. Обратите внимание на то, что номер версии может отличаться от указанного в этом примере:

      • curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh -o install_nvm.sh

      Просмотреть установочный скрипт можно используя nano:

      Запустите скрипт в bash:

      Эта команда установит ПО в поддиректорию ~/.nvm вашей домашней директории. Также в файл ~/.profile будут добавлены некоторые необходимые для работы настройки.

      Для получения доступа к функционалу nvm, вам необходимо перелогиниться в системе, либо вы можете использовать команду source для того, чтобы применить изменения не прерывая текущую сессию:

      Теперь, когда nvm установлен, вы можете устанавливать изолированные версии Node.js. Чтобы узнать, какие версии Node.js доступны для установки, наберите:

      Вывод

      ... v8.11.1 (Latest LTS: Carbon) v9.0.0 v9.1.0 v9.2.0 v9.2.1 v9.3.0 v9.4.0 v9.5.0 v9.6.0 v9.6.1 v9.7.0 v9.7.1 v9.8.0 v9.9.0 v9.10.0 v9.10.1 v9.11.0 v9.11.1 v10.0.0

      Как вы можете видеть, новейшей версией на момент написания руководства является v8.11.1. Установить ее можно при помощи следующей команды:

      Обычно nvm переключается на использование последней установленной версии. Вы можете указать nvm использовать только что загруженную версию в явном виде следующим образом:

      Если вы устанавливаете Node.js через nvm, исполняемый файл будет иметь имя node. Посмотреть, какую версию в данный момент использует shell, можно при помощи команды:

      Вывод

      v8.11.1

      Если у вас установлено несколько версий Node.js, посмотреть их список можно с помощью команды:

      Если вы хотите настроить одну из версий как версию по умолчанию, введите:

      Эта версия будет автоматически выбираться при начале новой сессии. Вы также можете ссылаться на нее по псевдониму (алиасу) следующим образом:

      Каждая версия Node.js имеет свои собственные пакеты, управлять которыми можно при помощи npm.

      npm может устанавливать пакеты в директорию ./node_modules проектов Node.js. Например, для модуля express это можно сделать вот так:

      Если вы хотите установить пакет глобально (чтобы он был доступен для других проектов, использующих ту же версию Node.js), следует добавить флаг -g:

      Эта команда установит пакет в директорию:

      • ~/.nvm/versions/node/node_version/lib/node_modules/express

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

      Узнать больше о доступных опциях можно при помощи следующей команды:

      Удаление Node.js

      Вы можете удалить Node.js используя apt или nvm в зависимости от того, что вы использовали для установки. Для удаление стабильной версии дистрибутива из репозиториев Ubuntu используйте apt:

      Эта команда удалит пакет, но оставит конфигурационные файлы. Это может быть удобно, если вы захотите установить пакет ещё раз позднее. Если вы не хотите сохранять конфигурационные файлы для последующего использования, выполните команду:

      Эта команда удалит пакет и конфигурационные файлы, связанные с ним.

      Вы также можете удалить все неиспользуемые пакеты, которые были автоматически установлены при установке удалённого пакета:

      Для удаления версии Node.js, установленной с помощью nvm, сперва определите, является ли эта версия текущей активной версией:

      Если версия, которую вы хотите удалить, не является текущей активной версией, выполните команду:

      • nvm uninstall node_version

      Эта команда удалит выбранную версию Node.js.

      Если удаляемая версия является текущей активной версией, вам необходимо сначала деактивировать nvm для применения ваших изменений:

      Теперь вы можете удалить текущую версию с использованием команды удаления выше, которая удалит все файлы, связанные с выбранной версией Node.js, за исключением кэшированных файлов, которые могут быть использованы при повторной установке.

      Заключение

      Как вы видите, существует несколько способов установки Node.js на ваш сервер с Ubuntu 18.04. Какой из этих способов подходит вам больше - решать вам. В то время, как установка из репозиториев Ubuntu - это наиболее простой метод, использование для установки nvm является куда более гибким.



      Source link