返回

Docker 一站式搭建 Nginx + PHP 环境

后端

Docker + Nginx + PHP:构建开发环境的利器

作为 IT 工程师,搭建开发环境是家常便饭。而 Docker 作为一种容器化技术,无疑是搭建环境的利器。本文将分享我搭建 Docker + Nginx + PHP 环境的实战经验,帮助你轻松开启开发之旅。

安装 Docker

首先,在 Linux 服务器上安装 Docker,步骤如下:

  • 更新系统:sudo apt-get update
  • 安装依赖:sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  • 添加 Docker GPG 密钥:curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
  • 添加 Docker 仓库:sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb-release -cs) stable"
  • 更新系统并安装 Docker:sudo apt-get updatesudo apt-get install docker-ce

拉取 Nginx 和 PHP 镜像

在 Docker 中,拉取镜像可以获取预构建的环境,执行以下命令拉取 Nginx 和 PHP 镜像:

  • sudo docker pull nginx
  • sudo docker pull php:7.4

创建 Docker 网络

为了让 Nginx 和 PHP 容器通信,创建 Docker 网络:sudo docker network create webnet

运行 Nginx 容器

运行 Nginx 容器:sudo docker run -d --name nginx --network webnet -p 80:80 nginx

运行 PHP 容器

运行 PHP 容器:sudo docker run -d --name php --network webnet --link nginx:web php:7.4

配置 Nginx 代理

配置 Nginx 代理:

  1. 打开 Nginx 配置文件:sudo nano /etc/nginx/sites-available/default
  2. 找到代码块:location / { try_files $uri $uri/ /index.php?$args; }
  3. 替换为:location / { proxy_pass http://php:80; }

配置 SSL

保护网站安全:

  1. 生成自签名证书:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
  2. 配置 Nginx 的 SSL:
server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;
}

重启 Nginx

配置完成后,重启 Nginx:sudo systemctl restart nginx

测试网站

通过浏览器访问网站测试配置:https://example.com

常见问题

  • Nginx 无法代理 PHP 容器的请求?

    • 检查 Nginx 配置文件中的 proxy_pass 指令。
  • SSL 证书配置失败?

    • 检查 SSL 证书是否生成成功,确保 Nginx 配置文件中正确配置了 SSL 证书路径。
  • 如何提高网站性能?

    • 优化 Nginx 配置,启用 Gzip 压缩,设置合理的缓存策略。
  • 如何解决 Nginx 的 404 错误?

    • 检查 Nginx 配置文件中的 root 指令是否指向正确的目录。
  • 如何为我的网站创建自定义域名?

    • 设置 DNS 记录,将域名指向你的 Docker 主机。