gpt4 book ai didi

php - 有效运行多个 Web/PHP 应用程序

转载 作者:行者123 更新时间:2023-11-29 10:25:52 25 4
gpt4 key购买 nike

我目前的任务是在同一台 Windows 服务器上设置三个独立的 Web 应用程序。 Web 应用程序全部使用 PHP/Laravel 构建,并使用 MySql 作为数据库。

我通常通过在服务器上手动设置 Apache、PHP 和 MySql 并在 Apache 上运行每个 PHP Web 应用程序(每个应用程序都有自己的虚拟主机)来完成此类任务。我使用这种方法的问题是,如果其中一个 Web 应用程序需要进行一些维护,导致需要关闭 Apache 或 MySql 等服务,那么其他 Web 也会遭受停机的影响。

因此,我想探索其他选项,可以将许多 Web 应用程序及其依赖的服务作为独立进程运行。据我所知,我应该能够使用 Docker(或其他一些虚拟化解决方案)来做类似的事情,但我不确定这是否太过分了,或者是否还有其他我可以探索的解决方案。

总结一下...

  • 如何在同一服务器上独立运行多个网络应用程序?
  • docker 是正确的方法(请举例)还是太过分了?
  • 我应该考虑其他选择吗?
  • 我还应该考虑哪些其他问题(潜在问题、解决方案)?

最佳答案

我使用 docker 多年,在同一台服务器上部署多个应用程序非常容易。每个应用程序独立运行,可以有不同的配置甚至不同的操作系统。

方法是:

  • 1(或3)个mysql服务器(图像:mysql)

  • 3 个 php 服务器(图片:php)

  • 1 个 nginx,用于重定向请求,作为代理(图片:jwilder/nginx-proxy)

这可以是 docker-compose 中服务的示例(根据需要重复 mysql 和应用程序的服务):

services:
nginx:
image: jwilder/nginx-proxy
restart: on-failure:3
hostname: nginx
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /opt/docker/nginx/vhost.d:/etc/nginx/vhost.d:ro
- /opt/docker/nginx/certs:/etc/nginx/certs
- /opt/docker/nginx/htpasswd:/etc/nginx/htpasswd
- ./html:/usr/share/nginx/html:rw
environment:
- "DEFAULT_HOST=www.example.com"
- "ENABLE_IPV6=true"
ports:
- "80:80"
- "443:443"
cpuset: "0"
mem_limit: 256M

mysql:
image: mysql:5.7
volumes:
- ./mysql/data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=password

aplication:
image: php:7
links:
- mysql
volumes:
- ./www/:/var/www/html
environment:
- "VIRTUAL_HOST=application.example.com"

请参阅每张图片的说明以获取更多信息。

关于开销,请阅读:

What is the runtime performance cost of a Docker container

我认为这是实现目标的最佳方式。

关于php - 有效运行多个 Web/PHP 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48324811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com