有效运行多个web/php应用程序

vhmi4jdf  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(330)

我目前的任务是在同一个windows服务器上设置三个独立的web应用程序。web应用程序都是用php/laravel构建的,并使用mysql作为数据库。
我通常通过在服务器上手动设置apache、php和mysql,并在apache上运行各自具有vhost的php web应用来完成这样的任务。这种方法的问题是,如果其中一个web应用程序需要一些维护,导致需要关闭apache或mysql等服务,那么其他web也会遭受停机的影响。
因此,我想探索其他选项,在这些选项中,我可以将许多web应用程序及其相关服务作为独立进程运行。据我所知,我应该能够使用docker(或其他一些虚拟化解决方案)来做类似的事情,但我不确定这是不是太过了,或者是否有其他解决方案可以探索。
总结一下。。。
如何在同一台服务器上独立运行多个web应用程序?
docker是正确的方法(请举例说明)还是过度使用?
我应该考虑其他选择吗?
还有什么我应该考虑的(潜在问题、解决方案)?

6vl6ewon

6vl6ewon1#

我使用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"

有关详细信息,请参阅每张图片的说明。
关于头顶,请阅读:
docker容器的运行时性能成本是多少
我认为这是实现你目标的最好方法。

相关问题