【问题标题】:Running multiple web/php applications effectively有效运行多个 web/php 应用程序
【发布时间】:2018-06-27 17:35:44
【问题描述】:

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

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

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

总结一下……

  • 如何在同一台服务器上独立运行多个 Web 应用程序?
  • docker 是正确的方法(请举例说明)还是矫枉过正?
  • 我应该考虑其他替代方案吗?
  • 还有什么我应该考虑的(潜在问题、解决方案)?

【问题讨论】:

    标签: php mysql apache docker virtualhost


    【解决方案1】:

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

    在我看来,这是实现目标的最佳方式。

    【讨论】:

      猜你喜欢
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      相关资源
      最近更新 更多