Démarrer un serveur apache dans le répertoire en ligne de commande

Je veux pouvoir démarrer un serveur apache à partir de la ligne de commande, en tapant quelque chose comme apache site-folder ou apache . --port=2000

Cela devrait lire et utiliser les fichiers .htaccess.

Je connais python -m SimpleHTTPServer et c'est proche de ce dont j'ai besoin, mais pas tout à fait.

Solutions Idéales:

  1. contribuer à une excellente interface de ligne de commande à apache lui-même
  2. Écrire un outil de ligne de commande simple qui enveloppe / contient apache (ou quelque chose)
  3. lien vers des documents sur une cli existante pour apache

Je veux juste taper command <Directory> --port=8000 --other-options

Le nom de La commande peut également être pache

À un moment donné, je pourrais vouloir l'utiliser en production. Il devrait être facile d'envoyer le processus en arrière-plan, puis d'arrêter cette instance ou toutes les instances, comme forever

Liens Pertinents: http://httpd.apache.org/docs/2.4/programs/httpd.html

Aussi

Il ne devrait y avoir qu'une seule commande pour installer le script pour une utilisation immédiate

23
demandé sur Devin G Rhode 2012-12-04 06:58:18

7 réponses

Qu'en est-il du mode de débogage apache (- X)?

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

Pour le mettre en arrière-plan une fois démarré, vous pouvez utiliser Ctrl^Z puis taper " bg "

En utilisant le drapeau de premier plan, en l'enveloppant dans un script shell:

#!/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

Appelez-le "pache", chmod + x, alors vous pouvez exécuter

./pache 1026 /tmp/webroot
15
répondu gpilotino 2016-12-26 19:04:25

http-server est un serveur http simple bien meilleur que pache, c'est ce que j'utilise actuellement! :)

Utiliser [pache] [1]

Installer avec npm - qui vient avec le noeud ici: http://nodejs.org/

sudo npm install pache -g

Fonctionne sur le répertoire actuel, port 3000:

pache

Ou spécifiez le répertoire et le port:

pache site-directory 2000

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

7
répondu Devin G Rhode 2018-01-25 08:22:59

Cela fonctionne:

Votre configuration d'apache pourrait pointer vers /var/www

Ensuite, utilisez:

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

Pour annuler l'utilisation:

sudo umount /var/www

Si vous voulez plusieurs ports, vous pouvez préconfigurer les ports dans apache pour pointer vers des répertoires comme / var / www / 8000.

3
répondu Rembunator 2013-04-11 14:01:19

Pourquoi ne pas utiliser Gatling qui vous permet de faire exactement ce que vous voulez?

Http://www.fefe.de/gatling/

1
répondu Cyrus 2013-04-04 19:13:02

J'espère que vous trouverez votre solution. J'ai la haine .htaccess. J'ai donc écrit ceci:

#!/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 joyer@uc
    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
1
répondu Joyer 2014-06-12 06:13:08

Pour le bénéfice de quiconque trébuchant sur cela avec la même question, je voulais quelque chose qui était aussi simple que le paquetpache mentionné, mais ne pas compter sur un nœud.js installé.

Mes de cas d'utilisation est à la recherche d'un remplacement pour le serveur webrick utilisé dans Jekyll. Webrick, comme la plupart des serveurs http run-anywhere légers, ne prend pas en charge .fichiers htaccess.

J'ai donc pris la réponse de gpilotino et l'ai emballée un peu. Je l'ai utilisé pendant quelques semaines maintenant et bien que je suis sûr qu'il peut être amélioré, il fait le travail. Il vient comme un script et un httpd minimal.fichier conf, ce qui le rend facile à étendre pour soutenir, disons, PHP.

Vous pouvez le trouver à: https://github.com/julianbrowne/apache-anywhere

Essentiellement, une fois qu'il est installé (une configuration éventuellement modifiée), vous exécutez simplement:

apache -d document_root_directory -p {port}

Et:

apache stop {port}

Quand vous avez terminé.

1
répondu Julian Browne 2014-07-22 12:35:05

Hmm... Intéressant.

Je peux voir pourquoi vous voulez pouvoir générer une instance apache distincte, à la demande,sur un port différent, etc. etc.

C'est-à-dire, Parfois, vous voulez simplement changer la configuration pour une instance, ou vous souhaitez que les utilisateurs puissent self-service, etc.

Mais plus important encore, vous voulez être en mesure de donner à vos utilisateurs la flexibilité Apache sans casser Apache pour tout le monde. C'est quelque chose qu'un fichier de configuration virtualhost massif ne peut pas traiter avec.

J'ai quelque chose de similaire dans mes propres environnements.

Dans les deux cas, pour lancer Apache sur un Mac avec des paramètres personnalisés, voici ce que j'ai fait:

Dossiers/fichiers:

~ / site / conf / httpd.conf ~ / site / journaux/ ~/site/public/

Contenu du httpd.fichier 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>

Cela utilise L'installation d'Apache à l'échelle du système.

Pour déclencher l'instance:

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

Configuration pour les modules, les ports écoutés, php, pid et le fichier de verrouillage des lieux, etc. peut être déplacé vers une inclusion extérieure, qui serait contrôlée par l'administrateur et non par l'utilisateur. Vous pouvez ensuite fournir à l'utilisateur un modèle de base httpd.fichier conf, un simple start / stop / reload / etc. wrapper, et donner à tous vos utilisateurs la possibilité de lancer leur propre site web.

Étant donné qu'il s'agit D'un environnement Mac OS, moins vous avez besoin d'installer, plus la gestion sera simple.

0
répondu Wing Tang Wong 2013-04-11 18:13:59