前言
在現代 Web 服務部署中,Docker 和 Nginx 的結合是一種高效、靈活且可擴展的解決方案。
- Docker 使應用程序及其依賴項封裝到一個獨立的容器中,確保一致性,并簡化部署過程。
- Nginx 作為高性能 Web 服務器和反向代理,能夠高效處理請求、提供負載均衡,并提升網站安全性。
本教程將詳細介紹如何使用 Docker 和 Nginx 部署 Web 服務,并結合 慈云數據 的服務器推薦,幫助您高效地完成部署任務。
一、準備工作
在開始部署之前,確保您擁有一臺穩定的服務器。慈云數據 提供高性能云服務器,適合各類 Web 應用和 DevOps 項目。
1.1 為什么選擇慈云數據?
- 高性價比:提供靈活的配置,滿足不同規模的業務需求。
- 高速穩定:BGP 多線接入,直連中國電信 CN2 網絡,保證低延遲、高速訪問。
- 7x24h 服務器監控:專業運維團隊提供全天候支持,確保業務穩定運行。
👉 服務器推薦:
- 基礎型:2 核 4G 內存,適用于個人博客、小型應用。
- 標準型:4 核 8G 內存,適用于中等流量網站、企業應用。
- 高性能型:8 核 16G 內存,適用于高并發、大流量 Web 服務。
立即獲取服務器 👉 慈云數據官網
二、Docker 環境安裝
2.1 安裝 Docker
可以通過官方提供的安裝腳本進行快速安裝:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
如果遇到網絡問題,可使用國內 Daocloud 一鍵安裝:
curl -sSL https://get.daocloud.io/docker | sh
啟動 Docker 服務:
sudo systemctl start docker
驗證 Docker 是否安裝成功:
docker --version
如果正確顯示版本號,則安裝成功。
2.2 推薦安裝 1Panel 面板
1Panel 是一款現代化的服務器管理面板,支持一鍵安裝 Docker 和 Docker Compose,極大提升服務器管理的便捷性。
可在 慈云數據 服務器上安裝:
curl -sSL https://get.1panel.cn | bash
安裝完成后,即可在 Web 界面管理容器、創建 Web 服務,極大簡化運維操作。
三、部署 Web 應用
3.1 拉取 Nginx 鏡像
docker pull nginx
這將從 Docker 官方倉庫拉取最新版的 Nginx 鏡像。
3.2 創建掛載目錄
在宿主機上創建以下目錄,用于存放 日志、配置、Web 文件:
mkdir -p /root/nginx_conf
mkdir -p /root/nginx_logs
mkdir -p /root/nginx_web
授權文件夾,防止 Nginx 無法訪問:
chmod 777 /root/nginx_conf
chmod 777 /root/nginx_logs
chmod 777 /root/nginx_web
3.3 創建容器并掛載目錄
?? 注意:如果直接掛載空目錄,會導致 Nginx 容器的配置文件目錄為空,進而啟動失敗。我們先啟動一次容器,然后復制默認配置文件。
第一步:啟動 Nginx 容器
docker run -itd --name nginx -p 80:80 nginx
第二步:復制配置文件到宿主機
docker cp nginx:/etc/nginx /root/nginx_conf
第三步:刪除容器,并重新創建
docker rm -f nginx
docker run -itd --name nginx -p 80:80 \-v /root/nginx_web:/var/www/html \-v /root/nginx_conf/nginx:/etc/nginx \-v /root/nginx_logs:/var/log/nginx \nginx
四、配置 Nginx
進入配置目錄 /root/nginx_conf/conf.d/
,修改 default.conf
,或者新建 .conf
文件。
Nginx 會自動讀取該目錄下所有
.conf
配置文件
示例 Nginx 配置文件:
server {listen 80;server_name 你的服務器IP或域名;client_max_body_size 20m;access_log /var/log/nginx/host.access.log main;gzip on;gzip_static on;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 5;gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;gzip_disable "MSIE [1-6]\.";location / {root /var/www/html;index index.html index.htm;try_files $uri $uri/ /index.html;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}
}
五、上傳 Web 文件并訪問
5.1 上傳 Web 項目
將您的 Web 項目上傳到 /root/nginx_web 目錄,例如:
scp -r my_project root@your_server_ip:/root/nginx_web
5.2 重啟 Nginx
docker restart nginx
5.3 訪問 Web 服務
通過瀏覽器訪問:
http://你的服務器IP:80
如果一切正常,您的 Web 頁面應能正確加載。
六、域名綁定和 HTTPS 配置
6.1 綁定域名
如果您想通過 域名 訪問 Web 服務,需要進行 DNS 解析。
操作步驟:
- 在域名服務商(如阿里云、騰訊云)購買域名
- 在 DNS 解析管理頁面,添加 A 記錄,將域名指向 慈云數據 服務器的 IP
- 修改 Nginx 配置文件,將
server_name
改為你的域名:
server_name www.yourdomain.com;
- 重啟 Nginx
docker restart nginx
6.2 配置 HTTPS(SSL 證書)
HTTP 站點會被瀏覽器標記為 不安全,因此建議啟用 HTTPS。
步驟:
- 在 阿里云 申請 免費 SSL 證書,下載
.pem
和.key
文件 - 將證書上傳至服務器
/root/nginx_conf/ssl/
目錄 - 在 Nginx 配置中啟用 HTTPS:
server {listen 443 ssl;server_name www.yourdomain.com;ssl_certificate /root/nginx_conf/ssl/cert.pem;ssl_certificate_key /root/nginx_conf/ssl/key.pem;location / {root /var/www/html;index index.html index.htm;}
}
- 重啟 Nginx
docker restart nginx
訪問 https://yourdomain.com
,即可使用 HTTPS 安全訪問。
總結
本教程介紹了如何在 Docker + Nginx 環境中部署 Web 服務,并結合 慈云數據 云服務器,確保高效穩定運行。
如果你需要高性能云服務器,推薦訪問 慈云數據官網,選擇適合的配置!🚀