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:
- contribuer à une excellente interface de ligne de commande à apache lui-même
- Écrire un outil de ligne de commande simple qui enveloppe / contient apache (ou quelque chose)
- 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
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
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
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.
Pourquoi ne pas utiliser Gatling qui vous permet de faire exactement ce que vous voulez?
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
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é.
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.