Поиск:

Поиск по:

Результаты поиска по запросу «»
Найдено совпадений
По вашему запросу ничего не найдено
.
Показать еще

Хостинг - как запустить сайт на golang

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

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

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

В рамках этой статьи мы, в качестве примера, запустим простой сайт на golang.

Скачать golang можно на официальном сайте.

Предположим у нас уже есть приложение, которое при запуске прикрепляется (bind) к порту 80.

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r * http.Request) {
        fmt.Fprintf(w, "Welcome to the Internet! Please follow me.\n")
    })

    http.ListenAndServe(":80", nil)
}

При обращении к сайту приложение выводит лишь одну строку текста Welcome to the Internet! Please follow me.

# curl  0.0.0.0:80
Welcome to the Internet! Please follow me.

Если бы мы захотели разместить это приложение на хостинге, то нам бы потребовалось немного его изменить. Прежде всего, на хостинге мы не можем прикрепляется (bind) к порту 80, поскольку он уже занят вебсервером nginx.

Поэтому приложению потребуется прикрепиться на IP и порт, указанные в переменных окружения APP_IP и APP_PORT.

Изменим код нашего приложения таким образом, чтобы прикрепляться к APP_IP и APP_PORT. Переменные окружения мы будем получать при помощи модуля os, встроенного в golang.

package main

import (
    "os"
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Welcome to the Internet! Please follow me.\n")
    })

    // создадим переменные APP_IP и APP_PORT, а их значения возьмем из одноименных переменных окружения
    APP_IP := os.Getenv("APP_IP")
    APP_PORT := os.Getenv("APP_PORT")

    fmt.Println(APP_IP+":"+APP_PORT)
    http.ListenAndServe(APP_IP+":"+APP_PORT, nil)
}

Сохраним этот код в файл welcome.go.

# ls -l
total 4
-rw-r--r-- 1 root root 629 Sep  4 10:23 welcome.go

Скомпилируем его

# go build welcome.go
# ls -l
total 5564
-rwxr-xr-x 1 root root 5689373 Sep  4 10:25 welcome
-rw-r--r-- 1 root root     629 Sep  4 10:23 welcome.go

Полученный файл welcome осталось загрузить на хостинг.

Создадим новый сайт на хостинге.

При создании сайта в качестве конфигурации выберите "EXE":

Настройки

Для загрузки файла подключитесь к хостингу через FileZilla.

Загрузите файл welcome в каталог sitename/app.

После загрузки файла, в FileZilla кликните правой кнопкой на файл и выберите "Права доступа к файлу". В поле "Числовое значение" укажите 755.

Далее откроем панель управления и перейдем в созданный сайт. Откроем вкладку Python AsyncIO и в строке "APP_PATH" укажем полный путь до файла. Например /home/c0000/mydomain-async.com/app/welcome.

Осталось со своего компьютера проверить все ли работает корректно:

user@local-pc:~$ curl http://mydomain-async.com/
Welcome to the Internet! Please follow me.
user@local-pc:~$

Готово!

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

user@local-pc:~$ export APP_PORT=8081
user@local-pc:~$ export APP_IP=127.0.0.1
user@local-pc:~$ env | grep 'APP_'
APP_PORT=8081
APP_IP=127.0.0.1
user@local-pc:~$ ./welcome
127.0.0.1:8081

После этого

user@local-pc:~$ curl 127.0.0.1:8081
Welcome to the Internet! Please follow me.



Больше информации об хостинге.

Регистрация доменов

в зонах .RU .РФ

от 200 рублей Зарегистрировать домен

SSL сертификаты

Подтверждение сайта и надежная защита

передаваемых данных

Купить сертификат

Облачные VDS

дешевле чашки кофе

Процессорных ядер: 4, Память: 4 Гб, Диск: 20 Гб SSD, Резервное копирование

от 35 р/день Заказать VDS

Все, что нужно от хостинга

Простое решение для вашего сайта

Подробнее

Хранилище данных

Храни что хочешь по смешным ценам

Почасовая оплата за размещенные данные.

Заказать хранилище