当前位置: 首页 > article >正文

在linux中部署Nginx项目的详细步骤

在这里插入图片描述

部署 Nginx 项目通常包括安装、配置和调试等步骤。Nginx 是一个高性能的 Web 服务器,它不仅可以作为反向代理服务器,还可以作为负载均衡器和 HTTP 缓存。部署 Nginx 项目时,需要关注服务器的环境配置、性能优化、安全设置以及如何与其他应用(如 PHP、Node.js、Python 等)进行集成。以下是详细的步骤,涵盖从环境准备到实际部署的各个方面。
在这里插入图片描述

1. 环境准备

在部署 Nginx 项目之前,我们需要确认以下几个方面的准备:
在这里插入图片描述

1.1. 系统要求

Nginx 支持几乎所有 Linux 发行版。以下是常见的 Linux 发行版及其对应的包管理工具:

  • Ubuntu/Debian 使用 apt 包管理工具。
  • CentOS/RHEL 使用 yumdnf 包管理工具。
  • Arch Linux 使用 pacman 包管理工具。

另外,确保系统更新到最新状态,避免由于旧版软件包而导致的问题。

sudo apt update && sudo apt upgrade   # 对于 Ubuntu/Debian
sudo yum update                      # 对于 CentOS/RHEL
sudo pacman -Syu                     # 对于 Arch Linux
1.2. 安装必需的依赖项

为了确保 Nginx 的正常运行,系统需要一些基础依赖项。如果您计划与 PHP 或其他服务集成,您还需要安装 PHP-FPM、MySQL 或其他数据库等服务。

# 安装编译工具(Ubuntu/Debian)
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev

# 安装编译工具(CentOS/RHEL)
sudo yum groupinstall "Development Tools"
sudo yum install pcre-devel zlib-devel openssl-devel

2. 安装 Nginx

2.1. 使用包管理工具安装 Nginx

对于大多数 Linux 系统,您可以直接使用系统自带的包管理工具来安装 Nginx。这是最简单的方法,适合一般需求。

在 Ubuntu/Debian 上安装:

sudo apt update
sudo apt install nginx

在 CentOS/RHEL 上安装:

sudo yum install epel-release
sudo yum install nginx

在 Arch Linux 上安装:

sudo pacman -S nginx

安装完成后,您可以通过以下命令启动 Nginx 服务:

# 启动 Nginx 服务
sudo systemctl start nginx

# 设置 Nginx 开机自启
sudo systemctl enable nginx
2.2. 编译安装 Nginx

如果您需要使用自定义模块,或者想安装特定版本的 Nginx,可以从源代码编译安装。以下是编译安装的步骤:

  1. 下载 Nginx 源码:

    wget http://nginx.org/download/nginx-1.21.4.tar.gz
    tar -zxvf nginx-1.21.4.tar.gz
    cd nginx-1.21.4
    
  2. 安装依赖项:

    sudo apt install libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
    
  3. 配置编译选项:

    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module
    
  4. 编译和安装:

    make
    sudo make install
    
  5. 启动 Nginx:

    sudo /usr/local/nginx/sbin/nginx
    

通过编译安装,您可以选择启用或禁用不同的模块。

3. 配置 Nginx

3.1. 配置文件结构

Nginx 配置文件通常位于 /etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf,具体路径根据安装方式不同而有所不同。Nginx 配置文件的结构通常分为以下几个部分:

  • 全局块:定义 Nginx 的全局设置,如工作进程数、错误日志等。
  • 事件块:定义 Nginx 如何处理连接,通常配置 worker 进程数等。
  • HTTP 块:包含了所有与 HTTP 服务相关的配置,包括虚拟主机、代理、负载均衡等。
  • Server 块:定义每个虚拟主机的配置,如监听端口、域名、根目录等。
3.2. 配置 Nginx 启动项

首先,编辑 /etc/nginx/nginx.conf(或者 /usr/local/nginx/conf/nginx.conf)文件,根据项目的需求进行调整。

# 编辑 nginx.conf 配置文件
sudo nano /etc/nginx/nginx.conf

http 块中添加如下基本配置:

user www-data;
worker_processes auto;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log /var/log/nginx/access.log main;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/conf.d/*.conf;
}
3.3. 配置虚拟主机

虚拟主机配置通常在 /etc/nginx/sites-available/ 目录下创建单独的配置文件,并通过符号链接将其添加到 /etc/nginx/sites-enabled/

创建一个新的配置文件,例如 example.com

sudo nano /etc/nginx/sites-available/example.com

添加如下内容:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    error_log /var/log/nginx/example.com_error.log;
    access_log /var/log/nginx/example.com_access.log;
}

然后创建符号链接:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
3.4. 配置反向代理(可选)

如果您要使用 Nginx 作为反向代理来将请求转发到后端应用程序(如 Node.js、PHP 或其他应用),您可以在 server 块内配置反向代理:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;  # 将请求转发到本地的 Node.js 应用
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
3.5. 配置 SSL(HTTPS)

为了提高安全性,建议为您的站点配置 SSL,使用 Let’s Encrypt 或其他证书提供商。

安装 Certbot(Let’s Encrypt 客户端):

sudo apt install certbot python3-certbot-nginx

然后,使用以下命令自动为您的域名配置 SSL 证书:

sudo certbot --nginx -d example.com -d www.example.com

Certbot 会自动配置 Nginx 以支持 HTTPS。

4. 测试和启动 Nginx

4.1. 测试 Nginx 配置

在修改 Nginx 配置文件后,您应该测试配置文件的语法是否正确。使用以下命令进行测试:

sudo nginx -t

如果配置文件正确无误,会显示类似以下的输出:

nginx: configuration file /etc/nginx/nginx.conf test is successful
4.2. 启动或重启 Nginx

如果测试通过,您可以启动 Nginx 服务:

sudo systemctl restart nginx

如果使用的是源代码编译安装的版本,可以使用以下命令:

sudo /usr/local/nginx/sbin/nginx -s reload
4.3. 检查服务状态

您可以使用以下命令检查 Nginx 服务的状态:

sudo systemctl status nginx

5. 日志配置与监控

Nginx 提供了详细的访问日志和错误日志,您可以通过这些日志进行监控和排查问题。日志文件通常位于 /var/log/nginx/ 目录下。

5.1. 查看日志
# 查看访问日志
sudo tail -f /var

/log/nginx/access.log

# 查看错误日志
sudo tail -f /var/log/nginx/error.log
5.2. 日志格式化

根据需求,您可以定制日志的格式,修改 nginx.conf 文件中的 log_format 配置,按需记录信息。

6. 性能优化与安全性设置

6.1. 性能优化
  • 调整 worker_processesworker_connections,确保适应系统负载。
  • 配置 HTTP 缓存,减少静态文件的请求压力。
  • 启用 Gzip 压缩,减小数据传输量。
6.2. 安全设置
  • 禁用不必要的 HTTP 方法(如 DELETETRACE 等)。
  • 配置防火墙,限制对管理端口的访问。
  • 配置 fail2ban 等工具防止暴力破解。

7. 集成其他服务(如 PHP、Node.js)

7.1. PHP 与 Nginx 配置

如果您需要将 Nginx 与 PHP 配合使用,您可以安装 PHP-FPM,并在 Nginx 配置中将请求转发到 PHP-FPM。

  1. 安装 PHP-FPM:
sudo apt install php-fpm php-mysql
  1. 配置 Nginx:
server {
    listen 80;
    server_name example.com;

    root /var/www/html;
    index index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
}
7.2. Node.js 与 Nginx 配置

Nginx 可以作为 Node.js 应用的反向代理,您可以将请求代理到 Node.js 服务器(如 Express 应用)。配置和上面类似,使用 proxy_pass 将请求转发到后端应用。

8. 总结

部署 Nginx 项目需要进行环境准备、安装、配置以及性能调优等多个步骤。通过以上详细步骤,您可以成功地将 Nginx 安装和配置到您的服务器上,并根据实际需要进行调整。

在这里插入图片描述


http://www.kler.cn/a/566241.html

相关文章:

  • ETL系列-数据抽取(Extract)
  • 【星云 Orbit-F4 开发板】03e. 按键玩法五:按住一个独立按键不松手连续步进触发
  • ctfshow——域名TXT记录泄露
  • C++11新特性 thread线程类
  • DeepSeek集成开发全栈指南:解锁AI原生开发的终极工具箱
  • 计算机组成与接口12
  • el-switch切换之前二次确认
  • 自走式除草机器人结构设计
  • 【MySQL】数据库初识
  • 8个Linux进程管理命令详解及示例(三):pgrep和flock命令
  • LeetCode 热门100题-矩阵置零
  • BIO、NIO、AIO解析
  • TORGO 数据库:构音障碍语音研究的宝贵资源
  • 深入探索Python机器学习算法:监督学习(线性回归,逻辑回归,决策树与随机森林,支持向量机,K近邻算法)
  • Android ViewStub延迟初始化加载布局View,Kotlin
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_init_cycle 函数 - 详解(7)
  • 地弹与振铃
  • 1-6静态库和动态库
  • 解释Promise的工作原理及其状态
  • windows上执行scp命令