Развертывание http-сервиса (web-приложения) OneScript на Ubuntu Server 16.04

04.03.18

Разработка - OneScript

В статье описан процесс настройки сервера, а также процесс развертывания http-сервиса (web-приложения) OneScript на Ubuntu Server 16.04

Введение

В достаточно компактном виде, информация о настройке и развертывании http-сервисов OneScript в среде Linux описана в соответствующем разделе на сайте проекта (http://oscript.io/docs/page/http). Как правило ее достаточно для развертывания. Тем не менее, настоящая статья, являясь пошаговым руководством, имеет своей целью детализировать существующую документацию.

Развертывание ASP.NET приложений в среде Linux возможно в несколькких вариантах. В настоящей статье рассмотрен вариант установки на web-сервер Apache с модудем mod-mono-server, как наиболее распространенный.

В статье предполагается, что Вы имеете web-приложение OneScript, созданное на основе этой или этой статьи, либо же каким-либо другим способом. Автор использовал для размещения приложение, созданное в этой публикации.

 

Система

В качестве тестовой системы используется виртуальная машина, размещенная в среде Hyper-V. В качестве исходного дистрибутива для установки использовался дистрибутив Ubuntu Server 16.04.4, который Вы можете скачать с сайта Ubuntu (https://www.ubuntu.com/).

В процессе установки была добавлена поддержка русской клавиатуры, а также установлен OpenSSH сервер для удаленного доступа к серверу.

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

 

Необходимые утилиты

Для удаленного доступа к серверу и копирования файлов, использовался SSH-клиент PuTTY (https://www.putty.org/). Для удаленного доступа и копирования файлов, достаточно скачать putty.exe и pscp.exe.

 

Настройка системы

 

Подключаемся к серверу

Подключаемся к серверу при помощи putty.exe и вводим логин и пароль.

 

Обновляем список доступных пакетов и устанавливаем новые версии

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

sudo apt-get update


sudo apt-get upgrade

 

Устанавливаем утилиту распаковки zip файлов

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

sudo apt-get install unzip

 

Устанавливаем mono

Поскольку http-сервисы OneScript по сути являются ASP.NET приложениями, для того, чтобы они выполнялись на ОС Linux, необходимо установить среду Mono, которая является аналогом .NET Framework для ОС Linux. Детальная информация об установке находится на сайте проекта Mono https://www.mono-project.com/ в разделе загрузки.

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

Подключаем репозитарий Mono

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF


echo "deb http://download.mono-project.com/repo/ubuntu stable-xenial main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list

sudo apt-get update 

Устанавливаем Mono

sudo apt-get install mono-complete

 

Устанавливаем и настраиваем web-сервер

Как было указано ранее, в качестве web-сервера используется Apache с модулем mod-mono-server.

Устанавливаем Apache

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

sudo apt-get install apache2 -y 

Тестируем работоспособность сервера

Проверить работоспособность web-сервера можно обратившись к нему из браузера.

Устанавливаем mod-mono-server4

Этот компонент необходим для выполнения ASP.NET приложений в среде Apache.

Детальная документация по продукту, установке и настройке можно найти по ссылке:

http://www.mono-project.com/docs/web/mod_mono/

https://medium.com/@shrimpy/configure-apache2-mod-mono-to-run-asp-net-mvc5-application-on-ubuntu-14-04-314a700522b9

Для установки данного компонента, выполним нижеследующую команду:

sudo apt-get install libapache2-mod-mono mono-apache-server4

Настраиваем mono-mod-server

Для простоты, используем режим AutoHosting. Для активации режима выполним нижеследующую команду:

sudo a2enmod mod_mono_auto

Рестартуем сервис Apache

sudo service apache2 restart

Тестируем работоспособность ASP.NET

По умолчанию, корневая папка документов Apache расположена по нижеследующему пути: /var/www/html

Создадим в этой папке файл test.aspx следующего содержания:
 

<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>ASP Test Page</title> </head> <body> <form id="form1" runat="server"> <asp:label id="lbl1" runat="server">ASP Test Page</asp:label> </form> </body> </html>

Для этого используем редактор vi (основные команды редактора можно посмотреть здесь https://kb.iu.edu/d/adxz ):

sudo vi /var/www/html/test.aspx

Вставляем текст страницы и сохраняем файл (нажимаем ESC, затем Shift + Z + Z).

Тестируем работоспособность, для этого, из браузера обращаемся к созданной странице.

 

Настраиваем обработку расширений для *.os файлов

Для того, чтобы web-сервер рассматривал файлы OneScript (*.os), как файлы ASP.NET, аналогично файлам *.aspx и обрабатывал их соответствующим образом, добавим расширение .os к списку ASP.NET файлов.

Для этого, отредактируем строку Add-Type application/x-asp-net, добавив туда расширение .os, в файле /etc/mono-server4/mono-server4-hosts.conf

Открываем файл

sudo vi /etc/mono-server4/mono-server4-hosts.config

Нажимаем Insert для включения редактированния, затем добавляем расширение .os в строку с Add-Type

Сохраняем файл (Нажимаем ESC, затем Shift + Z + Z).

Рестартуем сервис Apache

sudo service apache2 restart

 

Развертывание приложения

 

Копируем приложение на сервер

Для копирования, воспользуемся утилитой pscp.exe. Основные команды можно посмотреть перейдя по ссылке ( https://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter5.html )

Предположим, что архив нашего приложения (application.zip) расположен в папке E:\Putty. Запустим командную строку Windows и выполним нижеследующую команду:

E:\Putty>pscp E:\Putty\application.zip onescript@192.168.1.199:/tmp/application.zip

После завершения копирования, файл с архивом приложения появится в папке /tmp

Разархивируем приложение

Разархивируем application.zip в папку /var/www/html. Для этого, в командной строке выполним нижеследующую команду:

sudo unzip /tmp/application.zip -d /var/www/html/

Переходим в папку /var/www/html и проверяем содержимое

cd /var/www/html


ls

Удаляем файл Web.config так как он используется для ОС Windows и переименовываем файл Web.config.linux в Web.config. Для этого выполним нижеследующие команды:

sudo rm ./Web.config


sudo mv ./Web.config.linux ./Web.config

Тестируем работоспособность

Обратимся из браузера к развернутому web-приложению. Если все настроено правильно, увидим примерно такой результат (зависит от приложения, которое Вы размещали).

 

Заключение

Надеюсь эта статья поможет Вам в развертывании http-сервисов OneScript на ОС Linux.

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

См. также

Особенности национального Workflow: Github Actions и OneScript

Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    1191    bayselonarrend    3    

37

TCP прокси-сервер хранилища конфигурации 1С

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    2775    kamisov    17    

57

Что такое ОСень? Или как лучшие практики из мира Java прижились в экосистеме OneScript

OneScript Бесплатно (free)

Думаете, на OneScript неудобно создавать сложные инфраструктурные приложения? Ошибаетесь. Благодаря фреймворку ОСень за последний год экосистема библиотек, упрощающих написание собственных приложений, существенно выросла. Расскажем о самых передовых технологиях OneScript. Спойлер: будет много рефлексии, мета-аннотаций, желудей, напильников и дубов с завязями.

21.11.2023    3115    NikitaIvanchenko    16    

46

Библиотека создания клиент-серверных приложений для сценарного языка OneScript

Инструментарий разработчика Работа с интерфейсом OneScript Россия Бесплатно (free)

Представленная библиотека позволяет создать многопоточный TCP сервер, к которому может одновременно подключиться множество TCP клиентов с удаленных компьютеров. Эти клиенты могут вызывать методы скриптов как на сервере, так и на других клиентах. Методы будут выполнены в контексте скрипта на удаленной машине. Возможна передача параметров в метод и получение результата. Для TCP клиента можно создать графический интерфейс с большим набором элементов управления, модальными диалоговыми окнами и с обработкой событий.

31.07.2023    2018    ahyahy    8    

32

Получаем статистику по git-репозиторию в разрезе разработчиков

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Итак! Представим, что наступил момент, когда разработка через исходный код реализована на предприятии в полном объеме. Мы разрабатываем в EDT или конфигураторе (но выгружаем конфигурацию в исходный код), версионируем внешние отчеты и обработки и расширения, собираем релизы, проверяем код статическим анализом, в разработке царит гармония и мир. Красота! Но менеджерам этого мало, всегда хочется чего-то еще, и вот мне прилетает задача - дай статистику по вкладу в код каждого разработчика.

13.03.2023    3625    ardn    3    

27

Прокси хранилища 1С (IIS, OneScript)

Групповая разработка (Git, хранилище) OneScript DevOps и автоматизация разработки Платформа 1С v8.3 Россия Бесплатно (free)

Избавляемся от версионной зависимости, проверяем комментарии, вызываем веб-хуки, делаем красивые пути. И все это на привычном IIS и понятном OneScript.

08.12.2022    8039    kamisov    57    

95

OneScript на страже порядка на сервере тестовых баз данных

Администрирование СУБД OneScript Бесплатно (free)

Наводим порядок на сервере тестовых баз с помощью любимого инструмента - OneScript. Находим заброшенные базы на сервере MS SQL, определяем кандидатов на удаление.

14.06.2022    4255    ardn    23    

37

Идем в Serverless с кодом 1С

Облачные сервисы, хостинг OneScript Россия Абонемент ($m)

Запускаем код OneScript в Serverless Container Яндекса.

1 стартмани

29.04.2022    3698    1    papami    2    

9
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Evil Beaver 8107 04.03.18 23:51 Сейчас в теме
Статья уже сама по себе хороша для настройки ASP под Linux, даже и без OneScript. А уж с ним - и вообще прекрасно! :)
Shmell; CSiER; nixel; binex; JohnyDeath; +5 Ответить
11. пользователь 18.04.18 15:39
Сообщение было скрыто модератором.
...
13. пользователь 19.04.18 03:34
Сообщение было скрыто модератором.
...
14. пользователь 19.04.18 11:33
Сообщение было скрыто модератором.
...
15. пользователь 19.04.18 16:02
Сообщение было скрыто модератором.
...
18. пользователь 19.04.18 20:31
Сообщение было скрыто модератором.
...
19. пользователь 20.04.18 01:27
Сообщение было скрыто модератором.
...
21. пользователь 20.04.18 10:43
Сообщение было скрыто модератором.
...
22. пользователь 20.04.18 19:42
Сообщение было скрыто модератором.
...
23. пользователь 21.04.18 01:13
Сообщение было скрыто модератором.
...
24. пользователь 22.04.18 00:44
Сообщение было скрыто модератором.
...
25. пользователь 23.04.18 04:29
Сообщение было скрыто модератором.
...
2. CSiER 35 05.03.18 05:16 Сейчас в теме
Дело привычки - для работы с scp под Windows мне больше нравится WinSCP.
4. nixel 1403 07.03.18 08:22 Сейчас в теме
(2) так он графический же :) а pscp - консольный
5. CSiER 35 07.03.18 09:24 Сейчас в теме
(4), есть такое ) просто мне удобнее ввести реквизиты и уже интерактивно работать с каталогами на удаленном хосте, чем прописывать руками весь путь. Также с vi - nano, mc проще в работе для начинающих GNU/Linux пользователей, imho. Как и писал выше - это дело привычки :)
djl; nixel; +2 Ответить
6. nixel 1403 07.03.18 09:28 Сейчас в теме
(5) за nano и mc неистово плюсую
3. binex 277 05.03.18 10:06 Сейчас в теме
Теперь я знаю кунг- фу )
7. binex 277 10.03.18 17:50 Сейчас в теме
скачать vhdx файл с развернутым приложением и использовать его для тестов


Чего файл такой огромный? 1,2 гига.

П.С.: Видимо, это нормально. )) Прогуглил "vhdx"
8. blackhole321 1303 10.03.18 18:08 Сейчас в теме
(7)это архив, сам файл ~5. Это же уже готовый виртуальный диск с системой.
9. quick 583 16.03.18 12:18 Сейчас в теме
Большего садомазо чем писать скрипты на 1С подобном языке придумать невозможно. Тем более под linux.
10. blackhole321 1303 16.03.18 13:14 Сейчас в теме
(9)
А Вы пишите прям в конфигураторе :)
https://infostart.ru/public/789679/
12. Evil Beaver 8107 18.04.18 18:04 Сейчас в теме
16. quick 583 19.04.18 17:58 Сейчас в теме
(12) Надеюсь что когда нибудь наступят времена когда смогу сказать. "Как же я заблуждался, 1С язык действительно удобней того что использую сейчас".
Без сарказма, правда хочу что бы они сделали его выразительней.
17. Evil Beaver 8107 19.04.18 19:54 Сейчас в теме
(16) Ну ок, держите нас в курсе того, что вы используете. А мы используем 1С.
20. пользователь 20.04.18 01:27
Сообщение было скрыто модератором.
...
26. amig0 16.07.23 14:39 Сейчас в теме
подскажите пожалуйста. устанавливал по вашей статье и по статье сайта oscript.

https://oscript.io/docs/page/http

ubuntu 22.04
тестовый скрипт с asp test page - выполняется исправно.
в тестовое приложение с main.os добавил папку bin с файлами из
oscript.web.linux-x64

вываливается в 500 ошибку.
web.config следующего содержания:

<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.os" type="OneScript.ASPNETHandler.ASPNETHandler" />
</httpHandlers>
<customErrors mode="Off"/>
</system.web>
<system.webServer>
<handlers>
<add name="OneScript" verb="*" path="*.os" type="OneScript.ASPNETHandler.ASPNETHandler" />
</handlers>
</system.webServer>
<appSettings>
<add key="CachingEnabled" value="false"/>
</appSettings>
</configuration>
Оставьте свое сообщение