Как на vds запустить программу

Я купил vds с ОС ubuntu, и скачал туда go. Но возник вопрос-как мне запустить мой проект на golang в сервере правильно? Я запускаю go файл через go run main.go, там вывод Println работает, а вывод на страницу нет код:

package main import ( «github.com/gorilla/mux» «net/http» «fmt» ) func setDefaultHeaders(w http.ResponseWriter, r *http.Request) < fmt.Fprintf(w, «helloooooooo») >func main() < fmt.Println(«helloooooo») r := mux.NewRouter() r.HandleFunc(«/», setDefaultHeaders) http.ListenAndServe(«:8000», r) >
Отслеживать
righty_dev
задан 20 авг 2021 в 7:52
righty_dev righty_dev
125 10 10 бронзовых знаков

залить на сервер исходники, сбилдить и запустить. Или сбилдить у себя, залить бинарь на сервер и запустить. не так?

20 авг 2021 в 7:55
Прописать go [путь к файлу с программой]
20 авг 2021 в 7:58
20 авг 2021 в 8:27

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Скопируйте ваш main.go на сервер в какой-нибудь каталог. Пусть для определённости это будет ~/tmp/stackoverflow .

Загрузка бота на VPS/VDS сервер [NodeJS / Python]

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

cd ~/tmp/stackoverflow go mod init example.org/server go mod tidy go build ./

В результате в каталоге ~/tmp/stackoverflow появится исполнимый файл server . Это бинарник вашей программы.

Имя модуля example.org выбрано мной «от балды». Вы можете назвать ваш модуль как угодно. Бинарник по умолчанию получит имя, стоящее после крайнего / в имени модуля.

Источник: ru.stackoverflow.com

Deploy Django проекта на VPS

В данной статье я расскажу как просто развернуть ваш Django проект на базе сервера (VPS, VDS, Dedicated) на базе Ubuntu. Для этого вам предстоит пройти пройти простые и понятные шаги, описанные в данной статье. Deploy Django проекта проще чем кажется.

  1. Сервер на базе Ubuntu;
  2. PostgreSQL;
  3. Nginx;
  4. Gunicorn;
  5. Django проект;

Проверка локалей на сервере:

При подключении к серверу из под пользователя root. Необходимо проверить локали системы. Командой:

locale

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

LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_CTYPE=»en_US.UTF-8″ LC_NUMERIC=»en_US.UTF-8″ LC_TIME=»en_US.UTF-8″ LC_COLLATE=»en_US.UTF-8″ LC_MONETARY=»en_US.UTF-8″ LC_MESSAGES=»en_US.UTF-8″ LC_PAPER=»en_US.UTF-8″ LC_NAME=»en_US.UTF-8″ LC_ADDRESS=»en_US.UTF-8″ LC_TELEPHONE=»en_US.UTF-8″ LC_MEASUREMENT=»en_US.UTF-8″ LC_IDENTIFICATION=»en_US.UTF-8″ LC_ALL=en_US.UTF-8

Либо ru_RU, но обязательно UTF-8.

Создание базы данных:

Удаленный рабочий стол на Windows VDS (VPS сервер). Как запускать программы и решать задачи 24/7

Подключаемся к postgres:

sudo -u postgres psql

Создаем базу данных с пользователем:

CREATE DATABASE database_name WITH ENCODING=’UTF-8′; CREATE USER database_user WITH PASSWORD »; ALTER ROLE database_user SET client_encoding TO ‘utf8’; ALTER ROLE database_user SET default_transaction_isolation TO ‘read committed’; ALTER ROLE database_user SET timezone TO ‘UTC’; GRANT ALL PRIVILEGES ON DATABASE database_name TO database_user;

Проект не должен крутится на сервере из под под пользователя root. Все процессы должны запускаться под любым другим пользователем, которого мы создадим далее.

Добавляем пользователя в Ubuntu:

adduser user_name

Добавляем нашего пользователя в группы sudo и www-data:

usermod -aG sudo user_name usermod -aG www-data user_name

Переключаемся на нашего пользователя:

su — user_name

Клонирование и настройка проекта:

Важно: Все последующие действия из этого раздела, выполнять из под созданного нами пользователя.

Переходим в папку нашего пользователя (если она не создалась при создании пользователя, то создать её):

cd /home/user_name/

Клониурем репозиторий с проектом:

git clone repository_name

Переходим в папку с проектом и создаем виртуальное окружение:

Читайте также:
Программа ваг ком 12

virtualenv venv —python=python

Активируем виртуальное окружение:

activate venv/bin/activate

Устанавливаем зависимости проекта:

pip install -r requirement_file.txt

Указываем настройки подключения к базе данных (которую мы создали ранее, в разделе “Создание базы данных”.

Применяем миграции:

python manage.py migrate

Собираем статику:

python manage.py collectstatic

Пробуем запустить проект через runserver:

python manage.py runserver 0.0.0.0:8000

Далее переходим в браузере по адресу http://:8000. Если открывается ваш проект, значит все сделано правильно и переходим к следующему шагу.

Устанавливаем gunicorn внутри виртуального окружения (если не было указано в requirements):

pip install gunicorn

Переключаемся обратно на пользователя root (т.к из под созданного пользователя, вы не сможете создать файл конфигурации, из-за отсутствия прав на директории):

Создаем файл конфигурации:

nano /etc/systemd/system/project_name.gunicorn.service

Где project_name — название вашего проекта.

Добавляем в этот файл следующее содержимое и сохраняем его:

[Unit] Description=gunicorn daemon After=network.target [Service] User= Group=www-data WorkingDirectory= ExecStart=/venv/bin/gunicorn —access-logfile — —workers 3 —bind unix:server.sock .wsgi:application [Install] WantedBy=multi-user.target

— путь до вашего проекта, например: “/home/my_user/my_project/”.

— название главного приложения (где лежат главные urls.py, settings.py и сам .wsgi файл.

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

Активируем кофигурацию gunicorn и запускаем процесс:

sudo systemctl enable .gunicorn sudo systemctl start .gunicorn

Проверяем запустился ли gunicorn демон (нет ли ошибок в файле):

sudo systemctl status .gunicorn

Если видим зеленую надпись Active running, то значит ошибок нет, и все идет по плану.

Аналогично как и в предыдущем разделе, создание файла конфигруации NGINX необходимо производить из под root пользователя.

Создаем файл конфигурации:

etc/nginx/sites-available/

Вписываем в созданный файл следующую конфигурацию:

server < listen 80; server_name ; location = /favicon.ico < access_log off; log_not_found off; >location /static/ < root ; > location /media/ < root ; > location /admin/static/ < root ; > location / < include proxy_params; proxy_pass http://unix:/server.sock; > >

Затем сохраняем его.

В даннной конфигруации мы задали настройки маршрутизации запросов. Статику, медиа файлы отдает nginx (не напрягая при этом сам наш проект), а остальные запросы передает в gunicorn.

Создаем символическую ссылку:

sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Проверяем корректность кофигурации NGINX:

sudo nginx -t

Если видим, что “syntax is ok”, то значит все идет по плану.

Перезагружаем NGINX:

sudo systemctl restart nginx

Всё! Если вы проделали все шаги правильно, то перейдя по ip адресу сервера или домену (смотря что вы укаали в конфигурации nginx в директиве “server_name”, то вы увидите свой проект.

Полезная статья? — Скажи спасибо в комментариях!

Источник: alexlinus.ru

РАЗВОРАЧИВАЕМ NODE.JS-ПРОЕКТ (NUXT.JS) НА БАЗЕ VDS С OC UBUNTU SERVER

—>

В данной статье рассмотрим вопрос развертывания с нуля Nuxt.js-проекта (либо любого другого проекта на Node.js) на VDS-сервере с использованием веб-сервера Apahce2, Node.js, менеджера процессов pm2 с полным циклом установки всех компонентов.

Установка будет производится на чистом VDS-сервере, не имеющем каких-либо настроек.

Шаг 1. Подключаемся по SSH к VDS

Для подключения к VDS-серверу по SSH более не требуется скачивать и устанавливать какие-либо дополнительные программы, так как в Windows PowerShell на ОС Windows 10 последних версий уже встроен клиент OpenSSH.

Я же буду использовать приложение Windows Terminal, скачать которое можно в Microsoft Store (разработчик Windows Terminal — сами Microsoft).

В данной инструкции в качестве операционной системы на сервере мы будем использовать Ubuntu Server 20.04

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

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

Вместо IP-адреса также можно использовать и FQDN-адрес сервера, если вы уже прописали DNS A-запись на Вашем домене со значением Вашего IP-адреса сервера.

При успешном логине Вы увидите уже терминал (консоль) сервера:

Как видим, мы подключены к удаленному серверу.

Читайте также:
Программа которая сжимает размер файлов

Шаг 2. Добавление репозитория Apache2 на сервер и установка веб-сервера

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

Для начала установим необходимые пакеты командой:

apt install software-properties-common

Если данный пакет уже установлен, то вы увидите следующее:

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

apt-add-repository ppa:ondrej/apache2

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

После добавления репозитория, производим установку самого веб-сервера Apache2:

apt install apache2

В терминале появится вопрос о подтверждении установки веб-сервера Apache2. Если согласны с установкой — смело нажимайте клавишу Enter.

Теперь можно перейти по IP-адресу, либо по FQDN-адресу вашего сервера и убедиться, что веб-сервер Apache2 успешно установлен.

Примечание. Порты 80 и 443 на вашей виртуальной машине должны быть открыты. Если есть управляемый файерволл в панели управления вашего сервера на хостинге — обязательно проверьте!

Шаг 3. Установка менеджера версий Node.js (nvm) и самого Node.js

Для установки и более удобного дальнейшего контроля версий NodeJS мы установки менеджер версии NodeJS. Пакет называется nvm.

И перейдем в раздел Installing and Updating и выберем один их способов установки скрипта. Я выберу второй через утилиту wget:

Копируем команду и вставляем ее в терминал сервера:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

И жмем клавишу Enter.

После установки перезагружаем сервер при помощи кнопки перезагрузки в панели управления сервером, либо через команду в терминале init 6

Примечание. Вместо перезапуска сервера можно переподключиться к нему по SSH так, как указано в шаге 1.

После перезагрузки снова подключаемся к серверу согласно шагу 1.

Запускаем команду nvm для того, чтобы посмотреть и ознакомится со списком команд скрипта. Находим команду установки NodeJS в версии LTS:

Пакет NVM поможет вам «в 2 клика» поддерживать всегда актуальную версию Node.js

Вводим эту команду в терминал и жмем клавишу Enter:

nvm install —lts

Проверяем установленную версию Node.js следующей командой:

node -v

И получаем сообщение об установленной версии Node.js:

Шаг 4. Установка менеджера процессов pm2

Для того, чтобы управлять процессами и приложениями, запущенными в среде Node.js, а также автоматического их запуска после перезагрузки сервера, нам понадобится менеджер процессов Node.js, который мы установим глобально в систему через пакетный менеджер npm. Пакет называется pm2:

npm install -g pm2

При успешной установке мы увидим следующее:

При помощи команды pm2 -h можно посмотреть список доступных команд

Шаг 5. Запуск Node.js-приложения (в нашем случае — Nuxt.js-приложения)

Я создам новое приложение на Nuxt.js для демонстрации работы. Можно запустить таким же образом любое Node.js-приложение, как новое, только что созданное, так и уже готовое приложение.

Примечание. Установку Nuxt.js описывать не буду, так как приложение новое и установка стандартная. Она написана на официальном сайте проекта, у которого есть русская версия документации

Nuxt.js проект по-умолчанию запускается в двух режимах:

  • В режиме разработки — npm run dev
  • В режиме продакшена — npm run start

Есть еще режим static, который запускается через команду npm run generate . Но я его рассматривать не буду, так как он не используется для постоянного запуска приложения через Node.js

Я же не буду сразу запускать это приложение одной из этих команд, а сразу воспользуюсь менеджером pm2

Для этого перейдем в папку с проектом и запустим команду инициализации менеджера pm2:

pm2 init

Открываем файл ecosystem.config.js прямо в терминале через редактор nano командой и удаляем все содержимое:

nano ecosystem.config.js

Вставляем туда следующее содержимое и сохраняем комбинацией клавиш Ctrl+O, затем жмем Enter:

module.exports = < apps : [ < name: «nuxt-dev», script: «npm», args: «run dev» >, < name: «nuxt-prod», script: «npm», args: «run start» >] >

Читайте также:
Как зайти в программы компьютера

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

pm2 start ecosystem.config.js —only nuxt-dev

Для запуска prod-версии:

npm run build pm2 start ecosystem.config.js —only nuxt-prod

Для примера, запустим Dev-версию:

Для последующей остановки/запуска приложения не нужно будет заходить в папку с проектом и запускать командой выше. Достаточно будет ввести название приложения из монитора pm2:

pm2 start nuxt-dev

для запуска, либо

pm2 stop nuxt-dev

для остановки приложения.

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

pm2 status

Для просмотра монитора процессов:

pm2 monit

Подключаем автоматический запуск приложений через pm2 после перезагрузки сервера:

pm2 startup

и сохраняем изменения:

pm2 save

[Дополнительно] Графический интерфейс pm2 вне терминала

Для запуска веб-интерфейса управления процессами pm2 необходимо зарегистрироваться на сайте pm2.io и создать Bucket.

Будем считать, что есть существующий аккаунт и Bucket (инструкцию можно почитать на оф. сайте pm2).

Вводим команду для подключения к веб-интерфейсу:

pm2 plus

На первом этапе pm2 спросит, есть ли у Вас аккаунт pm2.io (в нашем случае есть и мы вводим букву y и жмем клавишу Enter

Вводим ваш email и пароль от аккаунта.

Если все введено верно, то pm2 попросит Вас выбрать, к какому Bucket подключиться — выбирайте ранее созданный. У меня это TestBucket

При успешном подключении к Bucket в веб-интерфейсе pm2 появится Ваше приложение(процесс). Там вы сможете посмотреть статистику, сбросить монитор и перезагрузить приложение:

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

pm2 unstartup pm2 startup pm2 save

Шаг 6. Проксирование Node.js-приложения через Apache2 Proxy

У нас уже запущено приложение на Nuxt.js на порту 3000 (по-умолчанию)

Теперь нам необходимо проксировать его на определенный адрес и стандартный порт 80 (для HTTP).

Для этого установим и включим модуль Apache2 Proxy:

a2enmod proxy_http

И перезагрузим веб-сервер командой:

systemctl restart apache2

Переходим в папку с виртуальными хостами Apache2 командой:

cd /etc/apache2/sites-available

и дублируем дефолтный файл конфигурации виртуального хоста Apache2:

cp 000-default.conf ваш_домен.conf

Открываем файл ваш_домен.conf с помощью редактора nano. Изменяем на Ваши следующие значения:

Затем, чтобы проксировать наше приложение на этот адрес, нам необходимо добавить следующие строки:

ProxyPreserveHost On ProxyPass / http://127.0.0.1:3000/ ProxyPassReverse / http://127.0.0.1:3000/

Где :3000 — Ваш порт приложения

Сохраняем изменения комбинацией клавиш Ctrl+O и жмем Enter. Выходим из редактора комбинацией Ctrl+Z

Теперь можно включить виртуальный хост и перезагрузить веб-сервер*:

a2ensite ваш_домен systemctl reload apache2

* В команде a2ensite ваш_домен не обязательно указывать расширение конфигурационного файла

Как видим — приложение успешно открывается на необходимом нам адресе и стандартном порту веб-сервера Apache2

Шаг 7. Тестирование работы pm2

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

Для этого в терминале пропишем команду init 6 , либо перезагрузим сервер в панели управления хостингом.

Если Вы все сделали правильно и согласно инструкции — приложение на Node.js автоматически запустится на вашем адресе в течение минуты после запуска VDS-сервера.

В данном материале я рассмотрел подробно установку веб-сервера Apache2, установку менеджера версий Node.js — пакета NVM и установку самого Node.js через этот менеджер, запуск Node.js-приложения на примере приложения на Vue.js-фреймворке — Nuxt.js, автоматический запуск этого приложения после перезагрузки сервера с помощью менеджера процессов pm2 и проксирование приложения на определенный адрес.

Старался объединить несколько инструкций в одну на своем личном опыте, когда еще только начинал работать с этими инструментами.

Возможно, более удобный (или правильный?) способ запуска будет через Docker и NGINX. Но в данной статье я показал базовый пример запуска.

Возможно, кому-то статья будет полезной.

Источник: alianscompany.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru