Acabo de enterarme de que puedo escribir realmente simple web server usando Python. Ya tengo un servidor web Apache. Me gustaría probar el servidor web basado en Python en esta máquina. Pero me temo que puedo tener algún tipo de conflicto si lo intento. Me refiero a cómo dos servidores web "decidirán" quién necesita enviar una solicitud a un cliente.¿Puedo ejecutar dos servidores web en la misma computadora?
Respuesta
Haz que escuchen diferentes puertos y estarás bien.
El puerto web predeterminado es 80. Cuando abre algunas URL en el navegador sin especificar un puerto, 80 se usa de forma predeterminada.
Puede configurar el servidor web para escuchar a un puerto diferente, pero entonces también tendrá que especificar explícitamente en la url:
http://localhost:8080
Al elegir un prestar atención puerto que este número de puerto en particular no es aún en uso por cualquier software que haya instalado y ejecutado en su caja. De lo contrario, como adivinó correctamente, habrá un conflicto.
P.S. Hace unos días, haciendo la reinstalación, no conseguí que IIS pudiera comenzar (aparentemente sin razón). Resultó que la nueva versión de Skype ocupaba este puerto predeterminado. Tuvo que eliminar su configuración "Usar el puerto 80 y 443 como alternativas para las conexiones entrantes".
OK. ¿Hay un puerto predeterminado utilizado por los navegadores web? ¿Puedo especificar el puerto cuando intento abrir una página web en un servidor web específico? – Roman
El puerto HTTP predeterminado es 80. Puede especificar puertos en la URL de la siguiente manera: 'http: // yourserver: portnumber'. –
El valor predeterminado es 80 para HTTP 443 para HTTPS. Puede especificar uno diferente usando: – Ofir
No puede abrir dos servidores web en el mismo puerto (que por defecto es 80); si desea crear dos o más servidores web, debe usar puertos diferentes.
Si está utilizando un DNS, puede configurar fácilmente su servidor web para responder con diferentes sitios web a diferentes solicitudes, que podrían ser útiles si necesita tener diferentes sitios web para subdominios o dominios diferentes.
HTTP/1.1 para win –
de hecho, granizar HOST-HEADER! – Dal
Un servidor web está vinculado a un puerto específico. Normalmente, este es el puerto 80. Si el puerto no está explícitamente especificado, este es el puerto que un navegador intentará alcanzar.
Puede hacer que su servidor alternativo se ejecute en un puerto diferente (8080 o 8081 parecen ser populares para servidores web, pero la elección es suya).
Esto detendrá el conflicto. Todo lo que va al puerto 80 golpea tu antiguo servidor. Todo lo que vaya a 8080 (o el puerto en el que decida ejecutar su servidor) llegará a su servidor de python simple.
para que alcance su otro servidor, usar una URL como: -
Los servidores web no tendrían voz en servicios informáticos que una solicitud de conexión (esta tarea se encuentra todavía en el nivel del sistema operativo). Además, sin opciones de socket especiales, el socket debe estar vinculado a una combinación única de interfaz, dirección de Internet y puerto.
Le sugiero que dedique un servidor a atender las solicitudes de https (puerto 443).
De esta forma puede evitar el conflicto de puerto que otros han mencionado y al mismo tiempo no requerir que los usuarios escriban nada extraño en sus navegadores (números de puerto arbitrarios). Incluso puede hacer que cada servidor redirija el tráfico al otro (por ejemplo, el servidor http recibe una solicitud http de un nombre de host que conoce el servidor https, por lo que puede redirigir la solicitud a https con el mismo nombre de host, transfiriendo así la solicitud al servidor apropiado).
Servidor A:
http://localhost
servidor B:
https://localhost
Si realmente desea ejecutar servidores separados para poner a prueba el software de servidor de ver las otras respuestas, pero ...
Parece (porque eres un desarrollador, no un administrador de sistemas ¿verdad?) realmente solo quieres ejecutar sitios de Python y PHP en la misma computadora. Entonces, perdóneme si leo su pregunta, pero esta configuración me permite ejecutar ambos tipos de sitios en la misma computadora con el mismo puerto (puerto 80) en un servidor, Apache.
hago nuevas entradas en/etc/hosts (o C: \ Windows \ System32 \ drivers \ etc anfitriones \ en Windows) y el punto de 127.0.0.1:
127.0.0.1 localhost
# development projects
127.0.0.1 somephpsite.com.local
127.0.0.1 www.somephpsite.com.local
127.0.0.1 otherpythonsite.com.local
127.0.0.1 www.otherpythonsite.com.local
Luego, en Apache añado VirtualHosts para cada sitio:
<VirtualHost *:80>
DocumentRoot "/Library/WebServer/Documents"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
<Directory "/Users/Robert/Projects/SomeSite/somephpsite.com">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
DocumentRoot "/Users/Robert/Projects/SomeSite/somephpsite.com"
ServerName somephpsite.com.local
ServerAlias www.somephpsite.com.local
ErrorLog "/Users/Robert/Projects/SomeSite/error.log"
CustomLog "/Users/Robert/Projects/SomeSite/access.log" common
</VirtualHost>
<VirtualHost *:80>
<Directory "/Users/Robert/Projects/OtherSite/otherpythonsite.com">
Order allow,deny
Allow from all
</Directory>
DocumentRoot "/Users/Robert/Projects/OtherSite/otherpythonsite.com/static"
Alias /(.*(\.css|\.gif|\.ico|\.jpg|\.js|\.pdf|\.txt)) /Users/Robert/Projects/OtherSite/otherpythonsite.com/static/$1
WSGIScriptAlias//Users/Robert/Projects/OtherSite/otherpythonsite.com/wsgi.py
ServerName otherpythonsite.com.local
ServerAlias www.otherpythonsite.com.local
ErrorLog "/Users/Robert/Projects/OtherSite/error.log"
CustomLog "/Users/Robert/Projects/OtherSite/access.log" common
</VirtualHost>
por lo tanto, los sitios PHP se ejecutan en el DocumentRoot
como siempre lo hacen. Y los sitios de Python se ejecutan en WSGI. Y ambos corren en Apache. Luego, para probar, solo agrego ".local" en el navegador que estoy usando para trabajar en mi copia local.
+1, no responde la pregunta pero útil y relevante de todos modos. – AlexMA
¡Justo lo que necesitaba! ¿Por qué alguien querría que los usuarios escriban un número de puerto? –
Por si acaso alguien necesita dos servidores web diferentes. Por ejemplo, una aplicación node.js y una aplicación php, ambas públicas. Si estos dos están en el mismo servidor, uno de ellos debe escuchar un puerto diferente. – Akis
- 1. ¿Puedo instalar dos versiones diferentes de Visual Studio en la misma computadora?
- 2. ¿Cómo puedo ejecutar 2 servidores a la vez en Python?
- 3. ¿Puedo utilizar la conexión JDBC misma, declaración y de resultados de ejecutar dos consultas en JDBC
- 4. ¿Está ejecutando múltiples agentes de TeamCity en la misma computadora?
- 5. Colisión de JSESSIONID entre dos servidores en la misma ip pero puertos diferentes
- 6. Transferir datos grandes entre aplicaciones .net en la misma computadora
- 7. ¿Cómo puedo fusionar dos mapas en la misma lista?
- 8. Dos ValidationSummary en la misma página
- 9. Desarrollar la misma aplicación en dos computadoras diferentes
- 10. Cómo ejecutar archivos php en mi computadora
- 11. ¿Cómo funcionan varios servidores en sincronización para la aplicación web?
- 12. Dos UITableView en la misma vista
- 13. Inicializar dos variables en la misma línea
- 14. dividir dos veces en la misma expresión?
- 15. ¿Cómo despliega un sitio web en sus servidores web?
- 16. granja de servidores web de signalR
- 17. servidores web nginx y apache
- 18. ¿Cómo funcionan los servidores web?
- 19. Misma copia de trabajo del código con 2 servidores SVN
- 20. file_put_contents ¿codificación utilizada en servidores web?
- 21. Supervisión/manejo de errores en servidores web
- 22. Orchard CMS en servidores web balanceados de carga
- 23. Apagar la computadora en MS-DOS utilizando ACPI
- 24. ¿Es posible ejecutar archivos .php en mi computadora local?
- 25. java: use dos versiones de la misma lib en una sola aplicación web
- 26. ¿Cómo conectar dos servidores node.js con websockets?
- 27. ¿Es posible contar con dos columnas en la misma consulta
- 28. misma función para dos botones en jQuery
- 29. ¿Tiene sentido usar servidores web con estado?
- 30. ¿Cómo ejecutar emacs grep-find link en la misma ventana?
FWIW, Python tiene un módulo de servidor web integrado (SimpleHTTPServer). Su puerto predeterminado es 8000. Puede ejecutarlo en la línea de comando usando el comando: python -m SimpleHTTPServer – ianalis