Как запустить приложение на сервере
Я сделал приложение java, которое хранит данные из a .csv-файл в базу данных MySql. Теперь мой клиент хочет загрузить это приложение в свое веб-пространство (веб-пространство, которое он взял для своего веб-сайта), чтобы он мог запустить эту программу на этом сервере.
я использовал FileZilla программа для загрузки программа для его веб-хостинг, но теперь я не знаю как запустить эту программу на своем сервере.
чтобы запустить его в localsystem, необходимо открыть окно командной строки для запуска он.
есть ли какая-либо конкретная функция, которую веб-хостинг должен поддерживать для запуска этой программы java?
поскольку он хранит данные из файла (.csv-файл) в базу данных MySql, тогда было бы лучше развернуть эту программу на сервере, на котором размещается база данных, а не на сервере, на котором размещается веб-сайт?
действительно, говоря "веб-приложение", мы обычно имеем в виду специальное приложение, запрограммированное для работы на веб-сервере все время, просто ожидая запросов от пользователя для обработки.
в вашем случае, у вас есть консольное приложение.
в зависимости от конфигурации сервера ни одно из этих приложений не может быть запущено на вашем клиентском веб-хостинге, ни одно из них или оба.
поскольку, как правило, веб-хостинг предоставляется хостинг-компанией, они могут иметь конфигурации, готовые для запуска ваших приложений, могут включать/выключать его или даже брать за это деньги.
в случае внутреннего сервера компании вам нужно попросить своего клиента и его ИТ-материал настроить это.
наконец, вам нужно спросить: 1. Поддерживает ли сервер SSH? - это просто пульт дистанционного управления. Обычно он работает на порту 22, и вы многие проверяете его с помощью команды " telnet yourserver 22" (windows и linux) - если он не отклоняет ваше соединение - настроены означает, что SSH-это. 2. Установлен ли на вашем сервере java и доступен ли он для вашей учетной записи через SSH-соединение?
- только если ваш клиент действительно означает веб-приложение вместо консольного приложения, вам нужно спросить, есть ли у сервера сервер веб-приложений для Java - обычно это что-то вроде Apache Tomcat, Jetty, JBoss, Weblogic и т. д. Но этот способ потребует модификации приложения, чтобы запустить его на веб-сервере.
Если вы решите использовать консольное приложение, а не" обновлять " его до веб-приложения, вы действительно можете запустить его на хосте, на котором работает ваша база данных (опять же, вам понадобится SSH). Вы сэкономите время на операциях удаленного доступа к базе данных-теоретически ваша программа будет работать быстрее.
наличие "веб-пространства" не обязательно означает, что он имеет достаточный доступ к серверу для запуска произвольных программ (или базы данных MySql).
вы может потенциально перепишите приложение как веб-приложение, но это может быть не очень хорошо подходит.
первое, что нужно проверить, является ли он can войдите в систему для запуска программ с консоли некоторого описания. Если он может, то все в порядке - и путь свободен. Если он не может, вам нужно подумать о том, почему он действительно хочет, чтобы это было на его веб - сервере, и имеет ли смысл запускать приложение там-или лучше сделать это в другом месте.
ваше приложение, скорее всего, консольное, а не веб-приложение.
вашему клиенту нужно будет SSH на сервер и сделать что-то вроде:
Если у вашего веб-хоста есть java, вы можете попробовать выполнить его из php cronjob без необходимости ssh:
В наше время даже для собак придумали удаленное управление.
Возвращаясь к циклу «Конспект Админа», мне хотелось бы рассказать о вариантах запуска исполняемых программ на удаленных компьютерах. Эта статья будет интересна тем, у кого еще нет систем централизованного управления, но уже есть понимание утомительности ручного обхода рабочих станций и серверов. Либо тем, кому решения «под ключ» не интересны ввиду неспортивности.
В качестве того, зачем нужен такой запуск программ, можно привести недавнюю истерию с Петей\Не-Петей, когда все бросились проверять\отключать SMBv1 и загружать обновления. Да и провести инвентаризацию или установить срочный патч таким методом тоже можно.
Когда-то давно я устроился работать в организацию в период эпидемии Kido\Conficker. Наиболее простым способом выяснить, все ли хорошо в ИС компании, была славная утилита от Касперского под названием Kido Killer, которая проверяла наличие вируса и устраняла его. Запускать программу на доброй сотне машин руками было невесело, поэтому пришлось знакомиться с автоматизацией.
Если в операционных системах *nix для удаленного запуска, как правило, используется SSH, то у Windows способов запуска программ и скриптов воистину как песка в пустыне. Я разберу основные варианты, как общеизвестные, так и экзотические. Таких очевидных вещей как telnet-сервер касаться не буду, тем более Microsoft уже убрала его из современных ОС.
Psexec
Пожалуй, это первое, что приходит на ум, когда идет речь об удаленном запуске программ. Утилита от Марка Руссиновича используется еще со времен Windows NT и до сих пор применяется. Помимо основной функции, можно использовать ее и как Runas, и для запуска программ в пользовательской сессии терминального сервера. Psexec также позволяет задавать ядра процессора, на которых будет запускаться программа, и ее приоритет в системе.
В качестве примера посмотрим, установлено ли обновление, закрывающее нашумевшую уязвимость SMB на списке компьютеров:
В файле computers.txt находится список компьютеров. Для запуска по всему домену можно использовать \\*. В файле \\server\share\log.txt будут появляться имена рабочих станций или серверов без обновления. Если в домене существуют компьютеры с *nix на борту или нет доступа к административному сетевому ресурсу Admin$ ― команда на этой машине не выполнится, но обработка продолжится. Чтобы скрипт не зависал при каждой попытке подключения, можно задать тайм-аут с помощью ключа -n.
Если компьютер выключен ― мы об этом не узнаем. Поэтому лучше предварительно проверять доступность машин или собирать в файле информацию об успешном или неудачном выполнении.
К минусам Psexec можно отнести то, что она из-за своего удобства и популярности часто используется вирусописателями. Поэтому антивирусные системы могут обнаруживать утилиту как опасность вида remote admin.
По умолчанию процесс на удаленной машине выполняется от имени пользователя, запустившего Psexec. При необходимости логин и пароль можно задать явно или же использовать аккаунт SYSTEM.
Для управления системами Windows с помощью разных графических утилит часто используется WMI (Windows Management Instrumentation) ― реализация объектно-ориентированного стандарта управления WBEM. В качестве утилиты с графическим интерфейсом для работы с WMI можно использовать wbemtest.exe.
Для работы с WMI из консоли создана wmic.exe. Например, для проверки установленных обновлений вместо жутковатой конструкции из предыдущего примера можно использовать простую команду:
Использовать список компьютеров также можно командой /node:"@computers.txt".
Еще при помощи WMI можно запускать программы – синтаксис предельно прост:
К сожалению, в отличие от Psexec, получить вывод в консоли не получится ― придется выводить результаты команды в файл.
По умолчанию процесс на удаленной машине выполняется от имени пользователя, запустившего wmic. При необходимости логин и пароль можно задать явно.
Групповые политики и скрипты
Если предыдущие варианты не требовали доменной среды, то в этом случае потребуется домен. Поддерживаются скрипты при входе и выходе пользователя из системы, а также при ее включении и выключении. Поскольку каждый администратор Windows сталкивался с ними, я не буду подробно расписывать как ими пользоваться ― лишь напомню, где их искать.
Скрипты, выполняющиеся при старте и завершении системы.
Скрипты, выполняющиеся при входе и выходе пользователя из системы.
Скрипты, настраиваемые в пользовательском разделе, выполняются от имени пользователя, а в разделе компьютера ― под аккаунтом SYSTEM.
Назначенные задания
Довольно интересный способ, заслуживающий право на жизнь. Назначенные задания можно создавать из командной строки при помощи утилиты schtasks.exe, выполнять их, затем удалять. Подробнее с синтаксисом можно ознакомиться в документации, я же разберу пример использования назначенных заданий в доменной среде. Предположим, нам нужно выполнить команду как можно быстрее вне зависимости от того, выключен компьютер или нет. Для этого используются так называемые предпочтения групповых политик (Group Policy Preference).
Искать установку назначенных заданий следует в конфигурации компьютера или пользователя ― «Настройка ― Параметры панели управления ― Назначенные задания».
Создание нового назначенного задания.
Для выполнения команды или скрипта ASAP понадобится создать «Немедленную задачу (Windows 7 и выше)». Если вдруг в инфраструктуре остались машины под управлением Windows XP, то подойдет «Очередное задание (Windows XP)».
Стоит сделать несколько политик с соответствующими WMI-фильтрами или создать два разных назначенных задания в одной политике с нацеливанием ― например, при помощи того же WMI-фильтра. Это поможет избежать конфликтов в разнородной среде со старыми и новыми Windows.
Пример WMI-фильтра для применения политики только на компьютерах с Windows XP:
В остальном процедура создания назначенного задания тривиальна. Единственное, не забывайте отметить пункт «Применить один раз и не применять повторно», если задача не требует повторного запуска.
Запускаем немедленную задачу только один раз.
При использовании таких назначенных заданий программа запустится, как только компьютер получит обновление групповой политики. Это удобно: не нужно проверять доступность компьютеров в случае Psexec и wmic и заставлять пользователей перезагружать машины, как в случае скриптов групповых политик. При необходимости можно скопировать файл скрипта локально в разделе «Настройка ― Конфигурация Windows ― Файлы».
Назначенные задания позволяют явно задать имя пользователя для запуска программы, в том числе и для SYSTEM.
Через реестр
Модификация реестра на пользовательских машинах ― странный вариант, лишь на случай крайней необходимости. Можно использовать ветки Run или RunOnce. Подробнее о них ― в документации. Сама модификация реестра может проводиться через групповые политики или из командной строки ― например, такой командой:
В зависимости от ветки реестра, процесс будет выполняться или под пользователем, выполнившим вход в систему, или под аккаунтом SYSTEM.
Есть и другие способы, такие как правка ярлыков в папке «Автозагрузка» или добавление в ярлык к популярной программе && script.cmd, но эти методы уже из серии «можно, но не нужно».
Теперь перейдем к новым инструментам.
PowerShell, оправдывая свое название, может подключаться к удаленным компьютерам при помощи WMI, RPC и WS-Management (WSMan). Использование последнего метода требует предварительной настройки.
Командлеты, не требующие предварительной настройки, как правило, имеют параметр ComputerName, но не имеют параметра Session. Посмотреть список таких командлетов можно командой:
Для настройки WSMan в общем случае достаточно выполнить команду Enable-PSRemoting-Force. Она запустит службу удаленного управления WinRM и пропишет исключения в фаерволе ― в принципе, это можно сделать для всего домена при помощи групповых политик. Подробнее настройка описана в документации.
После того как все компьютеры будут готовы принимать запросы, мы сможем подключаться при помощи соответствующих командлетов PowerShell. Для проверки возможности подключения используется командлет Test-WSMan.
Проверка возможности подключения.
Для того чтобы выполнить определенную команду или скрипт, используется командлет Invoke-Command со следующим синтаксисом:
Где COMPUTER ― имя компьютера, COMMAND ―– имя команды, а USERNAME ― имя пользователя, если оно нужно.
Смотрим содержимое диска С удаленного компьютера.
Если же нам нужно получить полноценную консоль ― не автоматизации ради, а ради управления конкретным компьютером, ― то можно использовать командлет Enter-PSSession.
Работаем в консоли удаленного компьютера.
Напомню, что с помощью JEA можно ограничить доступные подобной сессии командлеты или дать доступ нужным без прав администратора.
Конечно, кроме встроенных средств и небольших утилит, существует множество программ для управления структурой. Помимо взрослых решений, для управления конфигурациями вроде Chef, Ansible и MS SCCM можно использовать и средства мониторинга вроде Zabbix, и даже консоль управления антивирусом Касперского.
В период гетерогенных структур хорошо бы иметь возможность унифицированного управления Windows и Linux. Это можно сделать и с помощью PowerShell, что само по себе достойно отдельной статьи ― стоит такую сделать или уже лишнее?
Кстати, поделитесь вашими способами скрытого и не очень запуска программ на удаленных компьютерах. Ну, за исключением эксплойтов.
Запустить скрипт на локальном (например, на домашнем) компьютере – весьма просто. А вот как это сделать на удаленном компьютере, т.е. на сервере?
Запуск программы, написанной на языке С, на сервере, можно выполнить либо из консоли (по протоколу SSH), либо путем вызова выполнения системной команды (например, из PHP).Понятно, что в автоматическом режиме его можно запустить, используя автоматический планировщик Cron. А вот как быть, если требуется запустить вручную (например, для окончательной отладки программы)? Об этом пойдет речь в нашей статье. Статья написана, скорее, для новичков.
Что такое серверный скрипт, для чего он бывает необходим при работе сайта, объяснять не буду. В самом деле, любой мало-мальски функциональный сайт нуждается в автоматизированном выполнении тех или иных операций.
Подавляющее большинство серверных (т.е. таких, которые выполняются на стороне сервера) скриптов пишут, например, на PHP, на Perl (ну, и плюс та или иная СУБД, если, конечно, в ней есть необходимость). РНР используется, если скрипты выполняют относительно небольшой объем работы, т.е. их целесообразно использовать там, где производительность (быстродействие) не является критичным. По сути, имея синтаксис и особенности, во многом сходные с языком С (Си), PHP во многом напоминает не что иное, как VBA от Microsoft. Практически та же самая идеология и, соответственно, примерно аналогичное быстродействие. На наш взгляд, PHP может применяться в основном для создания вспомогательных, не слишком часто запускаемых скриптов, которые, в идеале, запускаются не при первой загрузке страницы сайта. Например, для организации интерфейса, передачи данных с открытой страницы на сервер, ну, или т.п.
Кому-то может показаться, что написание серверных скриптов на С является анахронизмом. Однако, это не так. На самом деле, язык С дает примерно те же возможности, да и синтаксис, в целом, схож с РНР. Правда, серверные скрипты, написанные на С, являются, конечно, более объемными по сравнению с теми, что выполнены на РНР. Потом, в С можно столкнуться с довольно серьезной проблемой, связанной с кириллической кодировкой. В PHP она решается, можно сказать, автоматически, а в С – придется все программировать вручную. Но, повторимся, выигрыш в быстродействии – того стоит.
Как запустить на сервере программу, написанную на С (Си)?
На локальном компьютере эта задача особых проблем, вроде бы, не вызывает. В Windows это делается путем нажатия кнопки Пуск , затем Выполнить (или Пуск – Программы – Выполнить ), и в появившемся окне ввести имя программы. В ряде случаев может понадобиться ввод пути.
В LINUX же немного по-другому. Например, для запуска программы, имеющей имя program, надо будет открыть консоль (или терминал, как его называют) и написать в командной строке:
Опять же, если запускается программа, находящаяся не в том каталоге, который открыт в терминале (консоли), необходимо либо ввести путь к программе, либо в терминале перейти в тот каталог, где она находится.
Надеемся, Вы в курсе об одном из основных отличиях систем Windows и LINUX? Windows, начиная с версии XP, дает пользователю графический интерфейс, а консоль там является, на самом деле, лишь настройкой над ним (т.е. запускается соответствующая виртуальная машина, эмулируюшая консоль). Тогда как в LINUX система, наоборот, загружается изначально в консольном режиме, а уже над ней может быть загружена графическая оболочка.
Итак, на локальном компьютере все просто. А вот как это сделать на сервере?
Для этого, естественно, вначале следует скопировать Вашу программу (исполняемый файл) в соответствующий каталог, из которого Вы хотите ее запустить. Понятно, что перед этим программа должна быть соответствующим образом скомпилирована и протестирована на локальном компьютере на предмет наличия ошибок, ибо исправлять ошибки у программы, загруженной на сервер, определенно сложнее.
Однако, просто так запустить программу на сервере не получится. Скажем, нажатие клавишей Enter или двойной щелчок мыши, скорее всего, вызовет попытку открыть ее код.
Чтобы запустить программу на сервере вручную, необходим или соответствующий клиент, который позволит это сделать или, что проще, консольный доступ на сервер.
Далее все зависит от того, в какой операционной системе работает сервер (хостинг), на котором Вы планируете запускать программу. Как правило, на серверах работает LINUX, например, Debian. Windows гораздо менее популярен. Понятно, что Ваша программа, которую Вы скопировали на сервер и хотите запустить, должна корректно запускаться в операционной системе сервера. Т.е. если, скажем, там установлен LINUX, то и программа должна быть написана и скомпилирована в Линуксе.
Затем, имеет большое значение, в какой операционной системе работает Ваш (домашний) компьютер.
Если он работает в Windows, в этом случае можно воспользоваться утилитой telnet от Microsoft. Она, к сожалению, не соответствует современным требованиям безопасности (в частности, аутенификационные данные – пароль – передаются в открытом виде). Поэтому целесообразно использовать соответствующий клиент для того, чтобы подключиться к серверу по SSH:
Возможно использование SSH-клиента PuTTy. Перейдя по указанной ссылке, Вы можете ознакомиться с подробным описанием технологии консольного подключения, т.е. по протоколу SSH. Клиент необходим для того, чтобы, в частности, эмулировать LUNUX на Вашем компьютере.
Если же Ваш компьютер работает в LINUX, то задача упрощается: необходимо лишь открыть терминал и ввести команду
u123456789 — логин учётной записи хостинга
123.123.123.123 — IP-адрес сервера
Далее, если параметры введены правильно, система запросит пароль и, после корректного его ввода и проверки системой Вы попадете в консоль НА СЕРВЕР. И, в общем-то, можете делать там все, что потребуется. Ну, в рамках Ваших прав доступа, конечно.
Заметим, что примерно такая же методология может быть использована, скажем, чтобы в режиме удаленного доступа попасть не только на сервер, но и на (частный) компьютер какого-нибудь пользователя - такого же, как Вы. Правда, для этого необходимо знать пароль (который некоторые установить забывают). Но, даже если и неизвестен пароль, возможен доступ в так называемые общие (share) папки. Поэтому некоторые пользователи компьютеров, если они используются для выхода в интернет, иногда вообще отключают эти общие папки или, что проще, останавливают службу server , которая по умолчанию, после установки Windows, является работающей.
Например, чтобы попасть в коренной каталог (на примере нашего сайта), нужно будет набрать команду
Вам нужно будет указать, соответственно, адрес своего сайта.
Далее, используя команду
cd пробел имя каталога
Можно перейти в нужный каталог, т.е. в тот, в котором находится программа. А дальше действуем так, как будто находимся на локальном компьютере, т.е. вводим
Если ошибок в Вашей программе нет, то она запустится и начнет выполняться.
При этом хочется обратить Ваше внимание на некоторые, для новичков неочевидные, вещи. Иногда требуется запустить программу в фоновом режиме, т.е. чтобы ее выполнение не мешало другим программам, в том числе и самой оболочке (например, bash). Когда это актуально?
Поэтому программу подобного рода целесообразнее запустить (при ручном запуске) в фоновом режиме, что делается путем добавления символа &:
Однако, это может повлечь за собой новую проблему. Дело в том, что, работая в фоновом режиме, программа никак себя не проявит (до тех пор, пока не произойдет событие, которого она ожидает). Поэтому, естественно, продолжит выполняться (точнее, ожидать событие) и после того, как Вы прекратите сеанс взаимодействия (связи) с сервером.
Вот с домашним компьютером – все проще: выключили его или начали перезагружать – и все, оперативная память чистая, все программы, даже зависшие и те, что работали в фоновом режиме, прекращают выполняться. А ведь здесь мы имеем дело – с СЕРВЕРОМ. Который выключается весьма редко (а если это будет часто, люди не станут размещать там свои сайты). Поэтому… Ваша программа, не будучи выгруженной, так и будет оставаться в оперативной памяти сервера. Во-первых, создавая ему бесполезную нагрузку.
Поэтому после того, как Вы решите закончить работу с ней, все же необходимо убедиться, выгружена ли она из памяти, не работает ли в фоновом режиме.
Для сервера, работающего в LINUX, для этой цели может быть использована команда
Она выведет перечень всех процессов, запущенных Вами в системе (с учетом самой оболочки bash и служба аутенификации, конечно же). И, что немаловажно, укажет индентификаторы каждой из запущенных программ (столбец с заголовком PID).
Кстати, вот список основных команд, которые здесь могут пригодиться:
- ps - выводить список запущенных процессов
- jobs - альтернативный путь для просмотра процессов запущенных Вами
- ls – просмотр текущего каталога
- bg - ставит выполнение процесса в фоновый режим
- fg - выводит выполнение процесса из фонового режима
- kill - отправляет сигнал на один или несколько процессов (в основном, чтобы "убить" их)
Вот, к примеру, результат, который выводит команда ps :
PID TTY TIME CMD
7318 pts/2 00:00:00 bash
20543 pts/2 00:00:00 ps
28314 pts/2 00:00:00 bash
28315 pts/2 00:00:00 logger
Кстати, команда kill имеет опции, выражаемые целым числом. Среди них имеют значение 1, 2, 15, 9. Последняя – вызывает принудительное, наиболее сильное (или грубое) завершение программы, причем игнорировать его она не сможет. Так, если Вы наберете
то должна выгрузиться оболочка bash (правда, скорее всего, она будет тут же автоматически загружена вновь, но уже с другим идентификатором).
-bash-4.1$ ./program & [1] 21015
Видим, что программе присвоен идентификатор со значением 21015.
Набираем ps, и вот что видим:
PID TTY TIME CMD
10292 pts/2 00:00:00 bash
10293 pts/2 00:00:00 logger
21015 pts/2 00:00:00 program
21016 pts/2 00:00:00 bash
21017 pts/2 00:00:00 logger
21022 pts/2 00:00:00 ps
28478 pts/2 00:00:00 bash
Так и есть, в третьей строчке находится наша программа с тем самым идентификатором.
Попытаемся (для эксперимента) вновь запустить ту же самую программу, путем набора
Система тут же сообщит:
bind: Address already in use
Примечание 1 . В программе, по сути, представляющей собой мини-сервер, использована функция bind , привязывающая прослушивающий сокет к номеру порта, равному 5425. Кстати, выбор номера порта достаточно произволен, главное, чтобы он не был ниже 1024 (для самостоятельно разработанных программ), ибо область значений, меньших 1024 отведена под стандартные порты.
Примечание 2 . Не спутайте данную программу (написанную нами), представляющую собой мини-сервер, с программой-сервером хостинга. Наша программа работает под управлением сервера, который, в свою очередь, управляет хостингом. Надеемся, Вы в курсе, что понятие "сервер" включает в себя два смысла (значения): во-первых, это программа, которая управляет работой хостинга, позволяет пользователям открывать страницы сайтов, расположенных на нем. Во-вторых, сервер - это компьютер, на котором расположена и работает программа-сервер. Для сервера наша программа ( program ) представляет собой лишь одну из программ, которая может быть запущена пользователем (нами, к примеру), не более того.
Примечание 3 . Программа названа мини-сервером, так как, после ее запуска, она открывает для прослушивания определенный порт и может взаимодействовать с любым соответствующим клиентом, посылающим запрос на хостинг на этот порт.
Так как порт под номером 5425 занят, то, соответственно, команда bind во второй раз сработать не может, вызывая указанную ошибку.
Так вот, кстати, если теперь прекратить сеанс работы, то program останется загруженной в оперативную память сервера. А если еще ее спроектировать так, чтобы она каждый раз генерировала все новые и новые значения портов – то в итоге можно запустить сколько угодно копий указанной программы… и потом получить замечание от хостера. Что нам, конечно, совсем ни к чему.
Поэтому – выгрузим программу из оперативной памяти:
[1]+ Killed ./program
Проверка при помощи команды ps показывает, что все, процесса с названием программ больше нет:
PID TTY TIME CMD
2382 pts/2 00:00:00 bash
2383 pts/2 00:00:00 logger
5848 pts/2 00:00:00 ps
28478 pts/2 00:00:00 bash
Кроме того, порт, скорее всего, не освободится в том случае, если работа программы будет завершена некорректно.
Это означает, что вновь, до момента освобождения порта, программа может не заработать – порт-то занят.
Поэтому после окончания работы с нею желательно проверить, каким сервисом открыты соединения на данному порту, при помощи следующей команды:
netstat -tnlp | grep 5425
Вот что сообщит система:
tcp 0 0 0.0.0.0:5425 0.0.0.0:* LISTEN 21015/./program
Так вот, в данном случае указанный порт действительно занят нашей программой, повторимся, даже несмотря на то, что она, вроде бы, выгружена из памяти.
Для очистки порта (т.е. для удаления его из системы) можно набрать
Произойдет «жесткое» удаление программы из оперативной памяти, в том числе и всех созданных ею объектов, т.е. логических портов.
Вот теперь, как закончили работу, можно закрыть сеанс соединения. Для этого набираем команду
Сеанс должен закрыться:
logout Connection to <IP-адрес> closed.
Таким образом, как видите, ручной запуск скрипта на удаленном сервере не представляет особого труда.
Запуск на локальном сервере
Здравствуйте, Друзья. Знакомлюсь с HTML. Установил Denwer3 (Ос - Windows7). Создал документ.
Запуск exe на сервере
Подскажите как запустить программу из php скрипта, соответственно передать в нее параметры, и.
запуск программ на сервере
Здаров! Тута мысля пришла, можно ли запускать exe'шники на сервере? Например, плеер. Т.е.
вообще то нет ничего не возможного .
технология CGI позволяет запускать абсолютно
любые приложения по запросу, но администраторы
ставит разные ограничения . (ну это и понятно)
то есть сдесь для запуска даже PHP не понадобиться.
по идее. но опять же - это общий случай.
в пхп есть функции запуска внешних программ
ОГРАНИЧЕНИЯ:
- программа должна быть разработана под ось сервера
- должно быть право на выполнение, так как как правило сервер и все скрипты запускаются с правами nobody
и многое другое.
еслиб расписал конкретнее что ты хочешь сделать то и ответил бы конкретнее!
Технология CGI не подходит. Я ее слабо знаю. Суть такая - пользователь обращается на сервер. И по его обращению сервер запускает программу, которая на нем находится. Сервер конфигурирую я сама и даю права на запуск. Вот мне надо написать такой скрипт, который при обращении к странице запускает программу на сервере. Можно на PHP, можно на Borlnd C++ Builder.
Пыталась
void __fastcall TWebModule1::WebModule1waHelloAction(TObject *Sender,
TWebRequest *Request, TWebResponse *Response, bool &Handled)
STARTUPINFO si;
PROCESS_INFORMATION p ;
memset(&si,0, sizeof(si));
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWNORMAL;
Response->Content = 'Very good';
>
Пишет Very good - но процесс не запускает
вот функции php которые запускают внешние программы
string system(string $command [,int& $return_var])
-выполняет команду и результат ее выполнения выводит в браузер.
string exec(string $command [, list& $array] [, int& $return_var])
-запускает команду, и возвращает последнюю строку ее выходного потока, если задан $array (переменная) , то в нее помещаются все строки выводимые данной командой в выходной поток
string PassThru(string $command [, int& $return_var])
-запускает команду и ее выходной паток выводит в браузер 1 в 1
вот все что есть в ПХП для запуска внешних программ
Все они ждут окончания их исполнения
Все они в общем то связаны с WWW
пример:
header('Content-type: image/jpeg');
PassThru('test_image.jpg');
Автоматический запуск скрипта на сервере
Здравствуйте. Хочу сделать парсинг нескольких сайтов. Для этого пишу скрипт. Но терзает меня.
Запуск exe программы на сервере с помощью ASP .
Возможно ли запустить exe программу на сервере с помощью ASP для того чтобы сгенерить отчет и.
Читайте также: