Использование API хостинга

Использование API хостинга

Большинство наших клиентов работают с хостингом через панель управления. Нашим клиентам, которым требуется автоматизировать работу с хостингом без входа в панель управления, мы можем предложить API.

С его помощью можно делать все тоже самое, что и через панель — создавать и удалять сайты или контейнеры, менять настройки PHP, перезагружать сайты и многое другое.

Получение ключа API

Откройте раздел “Ключ API” в панели управления. Если ключ еще не создан, то нажмите “Создать ключ”.

При помощи API ключа получите токен, который будет действовать 24 часа:

Запрос

curl -XPOST https://panel.netangels.ru/api/gateway/token/ -d 'api_key=3fyL8piL6goKDkWa8ctK6AdQsfW79N5uG9cLD71hfjc3rHKhXfQ7t96b'

Ответ

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dpbiI6InUzNzY2MyIsImV4cCI6MTU2NjQxMjc3M30.FQNDFOqJDaLvZgiqxhDp9jljulGDoeT5zlQ4aZArLfs"
}

Более подробно получение токена описано на странице https://api.netangels.ru/gateway/#token-obtain

Сохраним токен как переменную, чтобы проще было обращаться к нему:

export TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dpbiI6InUzNzY2MyIsImV4cCI6MTU2NjQxMjc3M30.FQNDFOqJDaLvZgiqxhDp9jljulGDoeT5zlQ4aZArLfs"

Теперь все готово, чтобы полноценно работать с API.

Как создать контейнер

curl --request POST https://api-ms.netangels.ru/api/v1/hosting/containers/ -H "Authorization: Bearer ${TOKEN}" -H "Content-Type: application/json" --data '{ "name": "Мои сайты", "memory_limit": 512, "quota": 5120,  "redis": 512, "memcache": 512 }'
Показать пример ответа сервера { "created": "2019-08-20 13:49:21", "enabled": true, "environment": "STRETCH", "id": 10214, # <--- уникальный номер контейнера "is_in_transfer": false, "locked": false, "login": "c10214", "memcache": { "created": "2019-08-20 13:49:21", "enabled": true, "id": 1864, "locked": false, "memory_limit": 512, "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 13:49:21" }, "memory_limit": 512, "name": "Мои сайты", "quota": 5120, "redis": { "created": "2019-08-20 13:49:21", "enabled": true, "id": 1198, "locked": false, "memory_limit": 512, "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 13:49:21" }, "service_address": "h7.netangels.ru", "service_ip": "91.201.52.235", "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 13:49:21", "virtualhosts": { "entities": [] }

Как создать сайт на wordpress

При создании контейнера в ответе нам был показан уникальный номер контейнера “id”: 10214. Он понадобится нам для создания сайта в поле container_id.

Запрос

curl --request POST https://api-ms.netangels.ru/api/v1/hosting/virtualhosts/install/ -H "Authorization: Bearer ${TOKEN}" -H "Content-Type: application/json" --data '{"name": "apitest.na4u.ru", "image": "wordpress", "force_https": true, "charset": "utf-8", "aliases": ["www.apitest.na4u.ru"], "main_alias": "apitest.na4u.ru", "container_id": "10214", "admin_email": "info@netangels.ru", "admin_password": "Ra7Ia2oh" }'
Показать пример ответа сервера { "aliases": [ "apitest.na4u.ru", "www.apitest.na4u.ru" ], "cache_static": 0, "certificate_id": 0, "charset": "utf-8", "container": { "created": "2019-08-20 13:49:21", "enabled": true, "environment": "STRETCH", "id": 10214, "is_in_transfer": false, "locked": false, "login": "c10214", "memcache": { "created": "2019-08-20 13:49:21", "enabled": true, "id": 1864, "locked": false, "memory_limit": 512, "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 13:49:21" }, "memory_limit": 512, "name": "Мои сайты", "quota": 5120, "redis": { "created": "2019-08-20 13:49:21", "enabled": true, "id": 1198, "locked": false, "memory_limit": 512, "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 13:49:21" }, "service_address": "h7.netangels.ru", "service_ip": "91.201.52.235", "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 13:49:21", "virtualhosts": { "entities": [] } }, "container_id": 10214, "created": "2019-08-20 14:02:10", "cron_mail": "", "dbms_account": { "connection_string": "mysql:\u002f\u002fc10214_apitest_na4u_ru:KiPqeKebdusaf56@localhost\u002fc10214_apitest_na4u_ru", "created": "2019-08-20 14:02:10", "databases": [], "db_servers_string": "localhost", "id": 19525, "login": "c10214_apitest_na4u_ru", "password": "KiPqeKebdusaf56", "type": "mysql", "updated": "2019-08-20 14:02:10", "virtual_host": null }, "enabled": true, "engine": "php", "engine_directives": [ "max_input_vars = 20000", "upload_max_filesize = 128M", "post_max_size = 128M", "display_errors = 0", "log_errors = 1", "date.timezone = Europe\u002fMoscow", "error_log = \u002fhome\u002fc10214\u002fapitest.na4u.ru\u002flog\u002fphp-errors.log", "mail.log = \u002fhome\u002fc10214\u002fapitest.na4u.ru\u002flog\u002fphp-mail.log" ], "engine_version": "7.3", "environment_variables": [ "PATH=\u002fhome\u002fc10214\u002fapitest.na4u.ru\u002fbin:\u002fhome\u002fc10214\u002fbin:\u002fusr\u002flocal\u002fbin:\u002fusr\u002fbin:\u002fbin:\u002fusr\u002fsbin" ], "force_https": false, "id": 19540, "locked": false, "main_alias": "apitest.na4u.ru", "name": "apitest.na4u.ru", "num_workers": 8, "outgoing_connections": true, "outgoing_mail": "NORMAL", "read_only_environment_variables": [ "APP_IP=127.0.4.114", "APP_PORT=53820", "DB_CONNECTION_STRING=mysql:\u002f\u002fc10214_apitest_na4u_ru:KiPqeKebdusaf56@localhost\u002fc10214_apitest_na4u_ru", "DBUSER=c10214_apitest_na4u_ru", "DBPASS=KiPqeKebdusaf56" ], "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 14:02:10" }

Как создать сайт на PHP с mysql.

Мы можем создать сайт

curl --request POST 'https://api-ms.netangels.ru/api/v1/hosting/virtualhosts/' --header "Authorization: Bearer ${TOKEN}" --header "Content-Type: application/json" --data '{
          "name": "apitest-phpengine.na4u.ru",
          "engine": "php",
          "dbms_type": "mysql",
          "force_https": true,
          "charset": "utf-8",
          "aliases": ["www.apitest-phpengine.na4u.ru"],
          "main_alias": "apitest-phpengine.na4u.ru",
          "container_id": "10214"
    }'
Показать пример ответа сервера { "aliases": [ "apitest-phpengine.na4u.ru", "www.apitest-phpengine.na4u.ru" ], "cache_static": 0, "certificate_id": 0, "charset": "utf-8", "container": { "created": "2019-08-20 13:49:21", "enabled": true, "environment": "STRETCH", "id": 10214, "is_in_transfer": false, "locked": false, "login": "c10214", "memcache": { "created": "2019-08-20 13:49:21", "enabled": true, "id": 1864, "locked": false, "memory_limit": 512, "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 13:49:21" }, "memory_limit": 512, "name": "Мои сайты", "quota": 5120, "redis": { "created": "2019-08-20 13:49:21", "enabled": true, "id": 1198, "locked": false, "memory_limit": 512, "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 13:49:21" }, "service_address": "h7.netangels.ru", "service_ip": "91.201.52.235", "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 13:49:21", "virtualhosts": { "entities": [] } }, "container_id": 10214, "created": "2019-08-21 13:00:11", "cron_mail": "", "dbms_account": { "connection_string": "mysql:\u002f\u002fc10214_apitest_phpengine_na4u_ru:BuFnaVemcaloj29@localhost\u002fc10214_apitest_phpengine_na4u_ru", "created": "2019-08-21 13:00:11", "databases": [], "db_servers_string": "localhost", "id": 19611, "login": "c10214_apitest_phpengine_na4u_ru", "password": "BuFnaVemcaloj29", "type": "mysql", "updated": "2019-08-21 13:00:11", "virtual_host": null }, "enabled": true, "engine": "php", "engine_directives": [ "max_input_vars = 20000", "upload_max_filesize = 128M", "post_max_size = 128M", "date.timezone = Europe\u002fMoscow", "log_errors = 1", "default_charset = \"\"", "error_log = \u002fhome\u002fc10214\u002fapitest-phpengine.na4u.ru\u002flog\u002fphp-errors.log", "mail.log = \u002fhome\u002fc10214\u002fapitest-phpengine.na4u.ru\u002flog\u002fphp-mail.log" ], "engine_version": "7.3", "environment_variables": [ "PATH=\u002fhome\u002fc10214\u002fapitest-phpengine.na4u.ru\u002fbin:\u002fhome\u002fc10214\u002fbin:\u002fusr\u002flocal\u002fbin:\u002fusr\u002fbin:\u002fbin:\u002fusr\u002fsbin" ], "force_https": false, "id": 19618, # <--- уникальный номер сайта "locked": false, "main_alias": "apitest-phpengine.na4u.ru", "name": "apitest-phpengine.na4u.ru", "num_workers": 8, "outgoing_connections": true, "outgoing_mail": "NORMAL", "read_only_environment_variables": [ "APP_IP=127.0.4.114", "APP_PORT=51387", "DB_CONNECTION_STRING=mysql:\u002f\u002fc10214_apitest_phpengine_na4u_ru:BuFnaVemcaloj29@localhost\u002fc10214_apitest_phpengine_na4u_ru", "DBUSER=c10214_apitest_phpengine_na4u_ru", "DBPASS=BuFnaVemcaloj29" ], "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-21 13:00:11" }

При создании сайта в ответе нам был показан уникальный номер сайта “id”: 19618. Он понадобится нам для изменения настроек PHP.

Как изменить настройки PHP

Сначала получим все настройки PHP. Для удобства будем использовать утилиту jq, которая позволит легко фильтровать вывод. Так же сохраним вывод в файл directives.txt:

curl --request GET 'https://api-ms.netangels.ru/api/v1/hosting/virtualhosts/19540/' --header "Authorization: Bearer ${TOKEN}" --header "Content-Type: application/json" | jq .engine_directives > directives.txt

В файле directives.txt изменим значения параметра log_errors, установив значение 0. Загрузим PHP настройки обратно:

curl --request PUT 'https://api-ms.netangels.ru/api/v1/hosting/virtualhosts/19618/engine-settings/' --header "Authorization: Bearer ${TOKEN}" --header "Content-Type: application/json" -d @directives.txt

Проверим, что настройки действительно изменились:

curl --request GET 'https://api-ms.netangels.ru/api/v1/hosting/virtualhosts/19618/php-directives/search/?term=log_errors' --header "Authorization: Bearer ${TOKEN}" --header "Content-Type: application/json"

Ответ сервера:

[
  "log_errors = 0",
  "log_errors_max_len = 1024"
]

Как подключить к сайту бесплатный SSL сертификат

curl --request PUT 'https://api-ms.netangels.ru/api/v1/hosting/virtualhosts/19618/order-certificate/' --header "Authorization: Bearer ${TOKEN}"
Показать пример ответа сервера { "aliases": [ "apitest-phpengine.na4u.ru", "www.apitest-phpengine.na4u.ru" ], "cache_static": 0, "certificate_id": 36352, "charset": "utf-8", "container": { "created": "2019-08-20 13:49:21", "enabled": true, "environment": "STRETCH", "id": 10214, "is_in_transfer": false, "locked": false, "login": "c10214", "memcache": { "created": "2019-08-20 13:49:21", "enabled": true, "id": 1864, "locked": false, "memory_limit": 512, "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 13:49:21" }, "memory_limit": 512, "name": "Мои сайты", "quota": 5120, "redis": { "created": "2019-08-20 13:49:21", "enabled": true, "id": 1198, "locked": false, "memory_limit": 512, "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 13:49:21" }, "service_address": "h7.netangels.ru", "service_ip": "91.201.52.235", "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-20 13:49:21", "virtualhosts": { "entities": [] } }, "container_id": 10214, "created": "2019-08-21 13:00:11", "cron_mail": "", "dbms_account": { "connection_string": "mysql:\u002f\u002fc10214_apitest_phpengine_na4u_ru:BuFnaVemcaloj29@localhost\u002fc10214_apitest_phpengine_na4u_ru", "created": "2019-08-21 13:00:11", "databases": [], "db_servers_string": "localhost", "id": 19611, "login": "c10214_apitest_phpengine_na4u_ru", "password": "BuFnaVemcaloj29", "type": "mysql", "updated": "2019-08-21 13:00:11", "virtual_host": null }, "enabled": true, "engine": "php", "engine_directives": [ "max_input_vars = 20000", "upload_max_filesize = 128M", "post_max_size = 128M", "date.timezone = Europe\u002fMoscow", "log_errors = 1", "default_charset = \"\"", "error_log = \u002fhome\u002fc10214\u002fapitest-phpengine.na4u.ru\u002flog\u002fphp-errors.log", "mail.log = \u002fhome\u002fc10214\u002fapitest-phpengine.na4u.ru\u002flog\u002fphp-mail.log" ], "engine_version": "7.3", "environment_variables": [ "PATH=\u002fhome\u002fc10214\u002fapitest-phpengine.na4u.ru\u002fbin:\u002fhome\u002fc10214\u002fbin:\u002fusr\u002flocal\u002fbin:\u002fusr\u002fbin:\u002fbin:\u002fusr\u002fsbin" ], "force_https": true, "id": 19618, "locked": false, "main_alias": "apitest-phpengine.na4u.ru", "name": "apitest-phpengine.na4u.ru", "num_workers": 8, "outgoing_connections": true, "outgoing_mail": "NORMAL", "read_only_environment_variables": [ "APP_IP=127.0.4.114", "APP_PORT=51387", "DB_CONNECTION_STRING=mysql:\u002f\u002fc10214_apitest_phpengine_na4u_ru:BuFnaVemcaloj29@localhost\u002fc10214_apitest_phpengine_na4u_ru", "DBUSER=c10214_apitest_phpengine_na4u_ru", "DBPASS=BuFnaVemcaloj29" ], "state": "ENABLED", "state_description": "unlock", "updated": "2019-08-21 14:10:21" }

Готово! В данной статье мы показали только небольшую часть действий, которую можно выполнить через API. Вы можете ознакомиться с подробной документацией по всем вызовам API.

Хостинг
Хостинг
Хостинг
Создавайте неограниченное количество сайтов в изолированных контейнерах
С 2003 года
Надежность.
Нам доверяют десятки тысяч компаний и разработчиков
20 лет
Предоставляем услуги профессионального хостинга
35 000
Клиентов доверяют нам размещение своих сайтов
99.99%
Подтвержденный uptime
наших серверов хостинга
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
Наши клиенты
ВК49865