Многие руководители задумываются, как бы им избавиться от дорогостоящей Windows в своей организации. Частично эту проблему решают сисадмины, заменяя на некоторых рабочих станциях и серверах Windows на какой-нибудь опенсорс, но труднее всего приходится с терминальным сервером, на котором крутится 1С, БЭСТ, Консультант+ и всё такое, и если ходить в терминал из под линукса еще можно без проблем, то вот сам терминал всё еще приходится держать на Windows Server. Ну, чтож, более не придётся. Делаем бухгалтерию и бухгалтеров, работающих с 1С полностью свободными от Windows.
Этот способ, конечно, можно совершенствовать и совершенствовать до предела, но он вполне рабочий и сам по себе. В этот раз я не стал заморачиваться заточкой вайна, купил за 400 рублей Wine@Etersoft, благо, его лицензия не ограничивает количество компьютеров, на которых можно применять одну и ту же копию купленного продукта. Но если хотите использовать обычный бесплатный вайн, милости прошу
Для начала я организовал терминальный сервер на FreeBSD, для этого установил седьмую фрюшку и поставил на неё из портов xrdp и vnc. Тут надо помнить об особенностях vnc-сервера, он по сути является не терминалом, а удаленным доступом к рабочему столу, то есть при заходе в него вы видите ту саму сессию, которая запущена на сервере, и если вы откроете её еще где-нибудь, то будете видеть, как шевелит мышку первый юзер. Впрочем всё это не страшно, если у каждого юзера свой аккаунт, так даже лучше, хотя и труднее настройка сервера.
И так, нужно создать на сервере столько юзеров (командой adduser), сколько их у нас реально будет. Затем каждому создать конфиг vnc — ~/.vnc/xstartup — лучше всего туда записать exec startkde, чтобы у всех на рабочем столе было KDE, но это по желанию. Из-под каждого юзера надо запустить команду vncserver и задать пароль для входа этого пользователя по сети в свой рабочий стол. Таким образом у вас откроется несколько tcp-портов начиная с 5901 и далее по количеству пользователей — это будут vnc-сервера для каждого из рабочих столов (то есть для каждого юзера свой порт). Теперь надо это дело агрегировать, чтобы не пугать бухгалтерш. Для этого я и ставил xrdp — он будет стандартно слушать порт 3389, и подключаться к нему можно как из виндоуз, так и из любой другой системы, где есть rdesktop. Для того что бы наш xrdp агрегировал все vnc-серверы, нужно создать конфиг /usr/local/etc/xrdp/xrdp.ini — в него нужно записать свойства каждого из запущенных vnc-серверов, вот мой пример:
[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1
[xrdp1]
name=Root
lib=libvnc.so
password=ask
ip=127.0.0.1
port=5901
[xrdp2]
name=Bocha
lib=libvnc.so
ip=127.0.0.1
port=5902
password=ask
Этот конфиг позволяет пользователям заходить через терминальный клиент на наш UNIX-сервер и видеть такую картину.
Достаточно выбрать пользователя из списка и ввести к нему пароль — юзер будет направлен на свой рабочий стол. Никаких дополнительных клиентских приложений не требуется, более того, на десерт сообщу вам, что каждый порт 59xx дублируется портом 58xx, на который можно зайти через любой веб-броузер и попасть в свой терминал вообще безо всякого клиента.
Далее я установил Wine@Etersoft на сервере и переписал туда обычную файловую 1С вместе с базой. Ничего более не потребовалось — 1Ска запустилась и прекрасно работает. Создаём каждому юзеру на рабочем столе ярлычек с командой wine „/путь/до/1c/1cv7s.exe“ — и всё, дело сделано, теперь у каждой бухгалтерши есть доступ к терминалу с 1Ской и общей для всех сотрудников базой этой 1Ски. По желанию можно установить БЭСТ, Консультант+ и иже с ними, все эти продукты данным вайном подерживаются. Напомню так же, что Wine@Etersoft не требует утсановки DCOM98, всё работает и без него, по этому с лицензионной точки зрения всё чисто, Windows не нужна ни на сервере, ни на клиенте, в качестве которого может выступать хоть Солярис на СПАРКе — чужой для 1Ски архитектуре. (Для не сильных в области Русского языка: запятая и слово "которого", использованного вместо слова "которых" конкретнее некуда обращает ваше внимание на то, что речь про спарк идёт только о клиенте, сервер на спарке невозможен из-за вайна и 1Ски)
Если хотите печатать из 1С на принтеры, то понадобится поставить CUPS — как это сделать много раз написано в интернете. Wine подхватит принтеры из капса (хоть локальные, хоть удаленные) и отдаст их виндовым программам без проблем.