Подтвердить что ты не робот

Запуск сервера Apache в любом каталоге из командной строки

Я хочу, чтобы запустить apache-сервер из командной строки, набрав что-то вроде apache site-folder или apache . --port=2000

Это должно читать и использовать файлы .htaccess.

Я знаю о python -m SimpleHTTPServer, и это близко к тому, что мне нужно, но не совсем.

Идеальные решения:

  • Предоставление отличного интерфейса командной строки для самого apache
  • Написание простого инструмента командной строки, который обертывает/содержит apache (или что-то еще)
  • Связывание документов с существующим кликом для apache

Я просто хочу набрать command <Directory> --port=8000 --other-options

Название команды также может быть pache

В какой-то момент я могу использовать это в производстве. Необходимо просто отправить процесс на задний план, а затем остановить этот экземпляр или все экземпляры, например forever

Соответствующие ссылки: http://httpd.apache.org/docs/2.4/programs/httpd.html

Также

Для немедленного использования

должна быть только одна команда для установки script
4b9b3361

Ответ 1

http-server - намного лучший простой http-сервер, чем pache, это то, что я использую в настоящее время!:)

Использовать [pache] [1]

Установить с npm - который поставляется с node здесь: http://nodejs.org/

sudo npm install pache -g

Запуск на текущем каталоге, порт 3000:

pache

Или укажите каталог и порт:

pache site-directory 2000

[1]: https://github.com/devinrhode2/pache

Ответ 2

Как насчет режима отладки apache (-X)?

apache2 -X -d. -f.htaccess -C"PidFile `mktemp`"  -C"Listen 1025" 
-C"ErrorLog /dev/stdout" -C"DocumentRoot `pwd`"

чтобы поместить его в фоновом режиме после запуска, вы можете использовать Ctrl ^ Z, затем введите "bg"

Используя флаг FOREGROUND, оберните его в оболочку script:

#!/bin/sh
if [ $# -ne 2 ]; then 
    echo "$0 <port> <dir>"
    exit 10 
fi
/usr/sbin/apache2 -DFOREGROUND -d. -f.htaccess -C"PidFile `mktemp`" \ 
-C"Listen $1" -C"ErrorLog /dev/stdout" -C"DocumentRoot $2" -e debug

назовите его "pache", chmod + x, затем вы можете запустить

./pache 1026 /tmp/webroot

Ответ 3

Это работает:

Ваша конфигурация apache может указывать на /var/www

Затем используйте:

sudo mount -o bind /home/webcreatorperson/mywebsite /var/www

чтобы отключить использование:

sudo umount /var/www

Если вы хотите несколько портов, вы можете предварительно сконфигурировать порты в apache, чтобы указать на такие каталоги, как/var/www/8000.

Ответ 4

Почему бы не использовать Gatling, который позволяет вам делать именно то, что вы хотите?

http://www.fefe.de/gatling/

Ответ 5

Хм... интересно.

Я могу понять, почему вы хотите создать отдельный экземпляр apache по запросу, на другом порту и т.д. и т.д.

То есть, иногда вы хотите просто изменить конфигурацию для одного экземпляра, или вы хотите, чтобы пользователи могли самостоятельно обслуживать и т.д.

Но что более важно, вы хотите, чтобы ваши пользователи могли гибко адаптировать Apache, не нарушая Apache для всех остальных. Это то, с чем не справляется массивный файл конфигурации virtualhost.

У меня есть что-то подобное в моей среде.

В любом случае, чтобы запустить Apache на Mac с пользовательскими настройками, это то, что я сделал:

Папки/файлы:

~/сайт/CONF/httpd.conf ~/Сайт/журналы/ ~/Сайт/государственный/

Содержимое файла httpd.conf:

# Can be substituted with an Include statement, which all httpd.conf can pull in.
# Included here for simplicity/single file example.
LoadModule authn_file_module /usr/libexec/apache2/mod_authn_file.so
LoadModule authn_dbm_module /usr/libexec/apache2/mod_authn_dbm.so
LoadModule authn_anon_module /usr/libexec/apache2/mod_authn_anon.so
LoadModule authn_dbd_module /usr/libexec/apache2/mod_authn_dbd.so
LoadModule authn_default_module /usr/libexec/apache2/mod_authn_default.so
LoadModule authz_host_module /usr/libexec/apache2/mod_authz_host.so
LoadModule authz_groupfile_module /usr/libexec/apache2/mod_authz_groupfile.so
LoadModule authz_user_module /usr/libexec/apache2/mod_authz_user.so
LoadModule authz_dbm_module /usr/libexec/apache2/mod_authz_dbm.so
LoadModule authz_owner_module /usr/libexec/apache2/mod_authz_owner.so
LoadModule authz_default_module /usr/libexec/apache2/mod_authz_default.so
LoadModule auth_basic_module /usr/libexec/apache2/mod_auth_basic.so
LoadModule auth_digest_module /usr/libexec/apache2/mod_auth_digest.so
LoadModule cache_module /usr/libexec/apache2/mod_cache.so
LoadModule disk_cache_module /usr/libexec/apache2/mod_disk_cache.so
LoadModule mem_cache_module /usr/libexec/apache2/mod_mem_cache.so
LoadModule dbd_module /usr/libexec/apache2/mod_dbd.so
LoadModule dumpio_module /usr/libexec/apache2/mod_dumpio.so
LoadModule reqtimeout_module /usr/libexec/apache2/mod_reqtimeout.so
LoadModule ext_filter_module /usr/libexec/apache2/mod_ext_filter.so
LoadModule include_module /usr/libexec/apache2/mod_include.so
LoadModule filter_module /usr/libexec/apache2/mod_filter.so
LoadModule substitute_module /usr/libexec/apache2/mod_substitute.so
LoadModule deflate_module /usr/libexec/apache2/mod_deflate.so
LoadModule log_config_module /usr/libexec/apache2/mod_log_config.so
LoadModule log_forensic_module /usr/libexec/apache2/mod_log_forensic.so
LoadModule logio_module /usr/libexec/apache2/mod_logio.so
LoadModule env_module /usr/libexec/apache2/mod_env.so
LoadModule mime_magic_module /usr/libexec/apache2/mod_mime_magic.so
LoadModule cern_meta_module /usr/libexec/apache2/mod_cern_meta.so
LoadModule expires_module /usr/libexec/apache2/mod_expires.so
LoadModule headers_module /usr/libexec/apache2/mod_headers.so
LoadModule ident_module /usr/libexec/apache2/mod_ident.so
LoadModule usertrack_module /usr/libexec/apache2/mod_usertrack.so
LoadModule setenvif_module /usr/libexec/apache2/mod_setenvif.so
LoadModule version_module /usr/libexec/apache2/mod_version.so
LoadModule proxy_module /usr/libexec/apache2/mod_proxy.so
LoadModule proxy_connect_module /usr/libexec/apache2/mod_proxy_connect.so
LoadModule proxy_ftp_module /usr/libexec/apache2/mod_proxy_ftp.so
LoadModule proxy_http_module /usr/libexec/apache2/mod_proxy_http.so
LoadModule proxy_scgi_module /usr/libexec/apache2/mod_proxy_scgi.so
LoadModule proxy_ajp_module /usr/libexec/apache2/mod_proxy_ajp.so
LoadModule proxy_balancer_module /usr/libexec/apache2/mod_proxy_balancer.so
LoadModule ssl_module /usr/libexec/apache2/mod_ssl.so
LoadModule mime_module /usr/libexec/apache2/mod_mime.so
LoadModule dav_module /usr/libexec/apache2/mod_dav.so
LoadModule status_module /usr/libexec/apache2/mod_status.so
LoadModule autoindex_module /usr/libexec/apache2/mod_autoindex.so
LoadModule asis_module /usr/libexec/apache2/mod_asis.so
LoadModule info_module /usr/libexec/apache2/mod_info.so
LoadModule cgi_module /usr/libexec/apache2/mod_cgi.so
LoadModule dav_fs_module /usr/libexec/apache2/mod_dav_fs.so
LoadModule vhost_alias_module /usr/libexec/apache2/mod_vhost_alias.so
LoadModule negotiation_module /usr/libexec/apache2/mod_negotiation.so
LoadModule dir_module /usr/libexec/apache2/mod_dir.so
LoadModule imagemap_module /usr/libexec/apache2/mod_imagemap.so
LoadModule actions_module /usr/libexec/apache2/mod_actions.so
LoadModule speling_module /usr/libexec/apache2/mod_speling.so
LoadModule userdir_module /usr/libexec/apache2/mod_userdir.so
LoadModule alias_module /usr/libexec/apache2/mod_alias.so
LoadModule rewrite_module /usr/libexec/apache2/mod_rewrite.so
LoadModule hfs_apple_module /usr/libexec/apache2/mod_hfs_apple.so

# These can also be turned into an Include. 
PidFile logs/httpd.pid
LockFile logs/httpd.lock

# Can be substituted for a variable in an Include.
Listen 8099
NameVirtualHost *:8099

# Just put this here to stop the startup error. Can be replaced with something else.
ServerName test

Include /etc/apache2/extra/httpd-autoindex.conf
Include /etc/apache2/extra/httpd-default.conf
Include /etc/apache2/extra/httpd-info.conf

<VirtualHost *:8099>
    DocumentRoot /Users/doe/site/public
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    ErrorLog logs/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

</VirtualHost>

Это использует системную установку Apache.

Чтобы запустить экземпляр:

export PATH=/usr/sbin:$PATH
httpd -f /Users/doe/site/conf/httpd.conf  -d `pwd` -T  -k start

Конфигурация для модулей, прослушиваемых портов, php, pid и блокировки файлов и т.д. может быть перемещена во внешнюю среду, которая будет контролироваться администратором, а не пользователем. Затем вы можете предоставить пользователю базовый шаблон httpd.conf файла, простой start/stop/reload/etc. обертки и дать всем вашим пользователям возможность запускать собственный веб-сайт.

Учитывая, что это среда Mac OS, чем меньше вам нужно установить, тем более простым будет управление.

Ответ 6

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

В моем случае использовалась замена сервера webrick, используемого в Jekyll. Webrick, как и большинство лёгких серверов HTTP, не поддерживает файлы .htaccess.

Итак, я взял gpilotino ответ и упаковал его немного. Я использую его в течение нескольких недель, и хотя я уверен, что его можно улучшить, выполняя эту работу. Он поставляется как script и минимальный файл httpd.conf, что упрощает расширение, например, PHP.

Вы можете найти его по адресу: https://github.com/julianbrowne/apache-anywhere

По сути, после его установки (необязательно настроенная настройка) вы просто запускаете:

apache -d document_root_directory -p {port}

и

apache stop {port}

когда вы закончите.

Ответ 7

Надеюсь, вы найдете свое решение. Я ненавижу .htaccess. Поэтому я написал следующее:

#!/bin/bash
cat >._apache2_dir_conf << EOF
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf
ErrorLog $1/._apache2_dir_error.log
HostnameLookups Off
NameVirtualHost *:$2
ServerName joyeruc
Listen $2
PidFile $1/._apache2_pid
<VirtualHost *:$2>
    ServerAdmin [email protected]
    DocumentRoot $1
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory $1/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
    </Directory>
    ErrorLog $1/._apache2_dir_error.log
    LogLevel warn
</VirtualHost>

EOF

#apache2 -k $3 -X -f $1/._apache2_dir_conf
apache2 -X -f $1/._apache2_dir_conf