Инсталляция окружения JavaScript на сервере
Установка JavaScript окружения на сервере
Как настроить универсальное окружение для выполнения JavaScript на сервере?
Наиболее гибкий и рекомендуемый способ для администраторов - использование менеджера версий Node.js (nvm). Этот инструмент позволяет устанавливать, переключать и удалять различные версии Node.js без конфликтов с системными пакетами.
Шаг 1: Установка nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashустановить js (установка javascript)
Скрипт клонирует репозиторий nvm в домашний каталог пользователя (~/.nvm) и добавляет необходимые строки в файл профиля (~/.bashrc, ~/.zshrc и т.д.).
Шаг 2: Применение изменений в текущей сессии
source ~/.bashrc
Либо перезапустить терминал. После этого команда nvm становится доступной.
Шаг 3: Установка стабильной версии Node.js
nvm install --lts
Загружается и компилируется последняя долгосрочная (LTS) версия. Для конкретной версии, например 20.11.0, используется nvm install 20.11.0.
Шаг 4: Проверка установки
node --version && npm --version
Ожидаемый вывод: номера версий узла и менеджера пакетов npm.
Почему после установки nvm команда node не найдена?
Частая ошибка - отсутствие перезагрузки профиля или запуск скрипта от root вместо обычного пользователя. Решение: выполнить source ~/.bashrc и убедиться, что nvm установлен для текущего пользователя, а не в системную директорию.
Другая проблема: конфликт с ранее установленным Node.js из системного пакета. В этом случае nvm при активации версии автоматически переопределяет PATH, старый узел перестаёт использоваться.
Варианты установки JavaScript среды
Как установить Node.js через пакетный менеджер Linux (apt, yum)?
Подходит для быстрого развертывания на серверах, где не требуется частое обновление версий. Установка из стандартных репозиториев даёт стабильную, но часто устаревшую версию.
Пример для Ubuntu/Debian:
sudo apt update && sudo apt install nodejs npm -y
Для CentOS/RHEL (репозиторий EPEL):
sudo yum install epel-release -y && sudo yum install nodejs npm -y
Почему после установки из apt версия Node.js старая?
Репозиторий дистрибутива обновляется медленно. Решение: добавить официальный репозиторий NodeSource (см. следующий вариант), либо использовать nvm.
Как получить новейшую версию Node.js через NodeSource?
NodeSource предоставляет репозиторий с актуальными сборками. Это компромисс между простотой apt и гибкостью nvm.
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt install -y nodejs
Скрипт добавляет репозиторий и устанавливает Node.js версии 20.x. Аналогично для других веток (18.x, 21.x).
Команда nodejs -version показывает версию, но npm отсутствует?
В некоторых сборках NodeSource npm может быть включён в пакет nodejs. Если его нет, устанавливается отдельно: sudo apt install npm.
Как установить Node.js на macOS с помощью Homebrew?
На macOS Homebrew - основной способ установки программ без прав суперпользователя.
brew update && brew install node
Устанавливается последняя стабильная версия. Для конкретной версии используется brew install node@20.
При запуске brew возникают ошибки прав доступа.
Решение: проверить, что /usr/local/bin доступен для записи текущему пользователю, либо изменить владельца с помощью sudo chown -R $(whoami) /usr/local/share.
Как собрать Node.js из исходных кодов для нестандартной архитектуры?
Если для целевой платформы нет готового бинарного пакета, сборка из исходников - единственный путь. Подходит для ARM, RISC-V или оптимизированных сборок.
wget https://nodejs.org/dist/v20.11.0/node-v20.11.0.tar.gz
tar -xzf node-v20.11.0.tar.gz
cd node-v20.11.0
./configure --prefix=/opt/node20
make -j$(nproc)
sudo make install
Флаг --prefix задает каталог установки. Процесс может занять от 10 до 30 минут. После установки добавляется /opt/node20/bin в PATH.
Ошибка компиляции: g++ не найден.
Требуется установка компилятора C++ и make: sudo apt install build-essential (Debian/Ubuntu) или sudo yum groupinstall 'Development Tools'.
Как запускать JavaScript приложения в изолированном контейнере с Docker?
Docker позволяет избежать конфликтов версий и упрощает развертывание. Распространённый сценарий - использование официального образа Node.js.
docker pull node:20-alpine
# Запуск контейнера с интерактивной оболочкой
docker run -it --rm node:20-alpine sh
Внутри контейнера доступны node и npm. Для монтирования кода используется -v $(pwd):/app и установка рабочей директории WORKDIR.
Контейнер завершает работу сразу после запуска без команды.
Необходимо указать процесс, который не завершится, например docker run -it node:20-alpine node (REPL) или tail -f /dev/null.
Какие альтернативы Node.js существуют для выполнения JavaScript на сервере?
Современные рантаймы Deno и Bun предлагают улучшенную производительность и встроенную поддержку TypeScript.
Установка Deno:
curl -fsSL https://deno.land/install.sh | sh
Установка Bun (Linux/macOS):
curl -fsSL https://bun.sh/install | bash
Оба инструмента после установки добавляются в PATH. Для проверки: deno --version или bun --version.
При установке Bun через curl возникает ошибка SSL.
Требуется обновить сертификаты CA: sudo apt install ca-certificates или использовать флаг -k (не рекомендуется для продакшена).
Расширенные примеры установки и использования JavaScript окружения
1. Управление множеством версий Node.js через nvm
Администратор может одновременно установить несколько версий и переключаться между ними.
nvm install 16.20.0
nvm install 18.19.0
nvm install 20.11.0
nvm use 18.19.0
node --version # показывает 18.19.0
nvm alias default 20.11.0 # задает версию по умолчанию
Теперь в новой сессии будет активна Node.js 20.11.0.
Для автоматического переключения версии в зависимости от наличия файла .nvmrc в проекте используется строка в оболочке:
cd /path/to/project && nvm use
При наличии .nvmrc с текстом '20' активируется версия 20.x.
2. Сборка Node.js с нестандартными параметрами
Для встраиваемых систем может потребоваться отключить ненужные модули.
./configure --prefix=/opt/node-custom --without-npm --without-intl
touch -c --no-warnings
make -j4 2>&1 | tee build.log
sudo make install
В результате создаётся облегчённая сборка Node.js без npm и интернационализации.
3. Создание Docker-образа для Node.js приложения
Пример многоступенчатой сборки (multi-stage) для уменьшения размера итогового образа.
FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
FROM node:20-alpine
WORKDIR /app
COPY --from=build /app /app
EXPOSE 3000
CMD ["node", "server.js"]
Сборка: docker build -t myapp .
Итоговый образ содержит только необходимые файлы и весит около 150 МБ.
4. Использование Deno с правами (permissions)
Deno по умолчанию не имеет доступа к сети, файловой системе и переменным окружения. Нужно явно указывать флаги.
deno run --allow-net --allow-read=./data --allow-env script.ts
Пример скрипта, читающего переменную PORT:
import { serve } from "https://deno.land/std/http/server.ts";
const port = Deno.env.get("PORT") || 8080;
serve(req => new Response("Hello"), { port });
Запуск с env: PORT=3000 deno run --allow-net --allow-env server.ts
5. Установка Bun на сервер без доступа к curl
Если curl заблокирован, можно использовать wget или загрузить установщик вручную.
wget https://bun.sh/install -O bun-install.sh
chmod +x bun-install.sh
./bun-install.sh
После выполнения bun будет установлен в ~/.bun/bin.
6. Компиляция TypeScript в JavaScript с помощью tsc (после установки Node.js)
Установка TypeScript глобально:
npm install -g typescript
tsc --version
Version 5.3.3
Создание файла main.ts и компиляция:
echo 'const msg: string = "Hello"; console.log(msg);' > main.ts
tsc main.ts && node main.js
Вывод: Hello
7. Установка Node.js через SDKMAN (для разработчиков, нуждающихся в Java SDK)
SDKMAN поддерживает Node.js наравне с языками JVM.
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install node 20.11.0
sdk use node 20.11.0
sdk list node покажет все доступные версии.
8. Отладка установки: проверка переменных окружения PATH
Если после установки node не находится, следует проверить PATH.
echo $PATH | tr ':' '\n' | grep -i node
В выводе должна быть строка с путём к бинарнику Node.js (например, /home/user/.nvm/versions/node/v20.11.0/bin).
Для временного добавления в PATH:
export PATH=/opt/node20/bin:$PATH
9. Удаление старой версии Node.js и очистка
Для nvm:
nvm uninstall 14.21.3
Для системной установки из apt:
sudo apt remove --purge nodejs npm -y
sudo apt autoremove -y
После удаления рекомендуется проверить, не остались ли следы в /usr/local/lib/node_modules.