在Linux中使用Nginx和Docker进行项目部署

前言

随着云计算和微服务架构的发展,容器化技术如Docker变得越来越重要。本篇文章将向大家介绍如何在Linux操作系统中使用Nginx作为Web服务器,并结合Docker容器化技术来部署一个简单的Web应用。通过本文,你将学会基本的Linux命令、Nginx的安装与配置,以及如何使用Docker进行应用部署。

Linux基本操作命令

在开始之前,我们需要熟悉一些基本的Linux命令,以便更高效地管理和操作文件及服务。

文件与目录操作

  • ls:列出目录内容
  • cd:改变当前目录
  • pwd:显示当前路径
  • mkdir:创建目录
  • rm:删除文件或目录
  • cp:复制文件或目录
  • mv:移动或重命名文件或目录

文件查看与编辑

  • cat:显示文件内容
  • less:分页查看文件内容
  • nanovim:文本编辑器

系统管理

  • sudo:以管理员权限执行命令
  • service:管理服务状态
  • systemctl:控制systemd系统和服务管理器
  • ps:显示进程信息
  • top:动态显示系统运行状态

安装Nginx

Nginx是一个高性能的HTTP和反向代理服务器。以下是安装Nginx的步骤:

使用包管理器安装

对于Debian/Ubuntu系统:

复制代码

Bash

深色版本

复制代码
sudo apt update
sudo apt install nginx

对于CentOS/RHEL系统:

复制代码

Bash

深色版本

复制代码
sudo yum install epel-release
sudo yum install nginx

启动Nginx服务

复制代码

Bash

深色版本

复制代码
sudo systemctl start nginx

设置开机启动

复制代码

Bash

深色版本

复制代码
sudo systemctl enable nginx

配置Nginx

Nginx的主要配置文件位于 /etc/nginx/nginx.conf。我们通常会修改站点配置文件,这些文件位于 /etc/nginx/sites-available/ 目录下。例如,创建一个名为 myapp 的配置文件:

复制代码

Nginx

深色版本

复制代码
server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

将该配置文件链接到 sites-enabled 目录:

复制代码

Bash

深色版本

复制代码
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/

测试配置

复制代码

Bash

深色版本

复制代码
sudo nginx -t

重新加载Nginx

复制代码

Bash

深色版本

复制代码
sudo systemctl reload nginx

使用Docker部署应用

Docker是一种轻量级的容器化技术,可以将应用及其依赖打包成一个独立的容器,确保应用在不同环境中的一致性。

安装Docker

对于Debian/Ubuntu系统:

复制代码

Bash

深色版本

复制代码
sudo apt update
sudo apt install docker.io

对于CentOS/RHEL系统:

复制代码

Bash

深色版本

复制代码
sudo yum install docker

启动Docker服务

复制代码

Bash

深色版本

复制代码
sudo systemctl start docker

设置开机启动

复制代码

Bash

深色版本

复制代码
sudo systemctl enable docker

创建Dockerfile

在项目的根目录下创建一个名为 Dockerfile 的文件,内容如下:

复制代码

Dockerfile

深色版本

复制代码
# 使用官方Node.js运行时镜像
FROM node:14

# 设置工作目录
WORKDIR /usr/src/app

# 复制package.json和package-lock.json
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制应用源代码
COPY . .

# 暴露端口
EXPOSE 3000

# 启动应用
CMD ["node", "app.js"]

构建Docker镜像

复制代码

Bash

深色版本

复制代码
docker build -t myapp .

运行Docker容器

复制代码

Bash

深色版本

复制代码
docker run -d -p 3000:3000 myapp

查看运行中的容器

复制代码

Bash

深色版本

复制代码
docker ps

停止和删除容器

复制代码

Bash

深色版本

复制代码
docker stop <container_id>
docker rm <container_id>

删除镜像

复制代码

Bash

深色版本

复制代码
docker rmi myapp

总结

通过本文,你已经学会了如何在Linux操作系统中使用Nginx作为Web服务器,并结合Docker容器化技术来部署一个简单的Web应用。Nginx和Docker的结合不仅提高了应用的可移植性和可维护性,还简化了部署流程。希望本文对你有所帮助!

相关推荐
嵩山小老虎5 小时前
Windows 10/11 安装 WSL2 并配置 VSCode 开发环境(C 语言 / Linux API 适用)
linux·windows·vscode
Fleshy数模5 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
a41324475 小时前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm
一只自律的鸡7 小时前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug
17(无规则自律)7 小时前
【CSAPP 读书笔记】第二章:信息的表示和处理
linux·嵌入式硬件·考研·高考
!chen7 小时前
linux服务器静默安装Oracle26ai
linux·运维·服务器
莫大3307 小时前
2核2G云服务器PHP8.5+MySQL9.0+Nginx(LNMP)安装WordPress网站详细教程
运维·服务器·nginx
REDcker8 小时前
Linux 文件描述符与 Socket 选项操作详解
linux·运维·网络
蒹葭玉树8 小时前
【C++上岸】C++常见面试题目--操作系统篇(第二十八期)
linux·c++·面试
2501_927773078 小时前
imx6驱动
linux·运维·服务器