杨海振
当自己的才华撑不起野心时,那就沉下心来学习吧!

一、前提条件

获取nginx-1.24.0.tar.gz软件包,及SSL证书文件。
2. 操作步骤

  1. 以root用户登录需要安装nginx的服务器.
  2. 检查防火墙是否关闭.
#执行如下命令,查看防火墙状态
su - root
systemctl status firewalld
#若未关闭,执行如下命令关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

3.关闭SELinux( linux操作系统中默认开启了防火墙,SELinux也处于启动状态,一般状态为enforing,致使很多服务端口默认是关闭的,所以这里将SELinux关闭)

#  执行如下命令,将selinux状态改为disabled
setenforce 0
sed -i '/SELINUX/{s/enforcing/disabled/}' /etc/selinux/config

4.安装依赖

yum install gcc -y
yum install gcc-c++  -y
yum install make -y
yum install perl -y
yum install openssl -y
yum install openssl-devel -y
yum install pcre-devel -y
yum install zlib -y
yum install zlib-devel -y

5.新建操作系统用户,用于安装Nginx服务

useradd -d /data/nginx -s /bin/bash -m nginx

说明:

点击查看代码
-d 主目录名称为{用户目录},{用户目录}为示例,需要根据现场环境修改,不允许直接使用,下文中{用户目录}均代指该用户目录。
-s shell类型,指定用户的登录shell,推荐使用/bin/bash。
-m 用户名,{用户名}为示例,需要根据现场环境进行修改,下文中{用户名}均代指该用户名。

6.设置用户密码

passwd nginx

7.设置新建用户的系统资源限制

vi /etc/security/limits.conf 
nginx soft nofile 65535 
nginx  hard nofile 65535

8.创建文件夹

mkdir -p /data/nginx/.tmp
mkdir -p /data/nginx/logs
mkdir -p /data/nginx/nginx/cert
mkdir -p /data/nginx/nginx/conf/conf.d

9.将安装包上传到/data/nginx/.tmp下
10.解压安装包

cd /data/nginx/.tmp
tar -xvf nginx-1.24.0.tar.gz

11.执行安装nginx

cd /data/nginx/.tmp/nginx-1.24.0

./configure --prefix=/data/nginx/nginx --error-log-path=/data/nginx/logs/error.log --http-log-path=/data/nginx/logs/access.log --user=nginx --group=nginx --with-stream --with-http_ssl_module --with-http_v2_module --with-http_auth_request_module

12.执行安装

make && make install

13.上传server.crt和server.key证书文件到/data/nginx/nginx/cert目录下

cd  /data/nginx/nginx/cert

14.配置nginx配置文件

cd  /data/nginx/nginx/conf
mv nginx.conf nginx.conf.bak

vi /data/nginx/nginx/conf/nginx.conf
iuser nginx;
worker_processes 1;
error_log /data/nginx/logs/error.log;
pid /data/nginx/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /data/nginx/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
  log_format  main  '[$time_local] $remote_addr "$http_x_forwarded_for" $remote_user '
                  '"$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" '
                  '- $upstream_addr $upstream_status $request_time $upstream_response_time $upstream_connect_time ';

    access_log  /data/nginx/logs/access.log  main;

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

    include             mime.types;
    default_type        application/octet-stream;
    server_tokens off;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /data/nginx/nginx/conf/conf.d/*.conf;
}

15.新增启动脚本

vi /data/nginx/nginx/sbin/start_nginx.sh
i#!/bin/bash
PID=`ps -U $USER -f | grep 'nginx:' | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]; then
    echo "Server already started!"
    exit
fi
cd $HOME/nginx/sbin || return
./nginx -c $HOME/nginx/conf/nginx.conf
sleep 5
PID=`ps -U $USER -f | grep 'nginx:' | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]; then
    echo "Starting SUCCESS!"
    exit
else
    echo "Starting Failed!"
    exit 1
fi

16.新增停止脚本

vi /data/nginx/nginx/sbin/stop_nginx.sh
i#!/bin/bash
PID=`ps -U $USER -f | grep 'nginx:' | grep -v grep | awk '{print $2}'`
if [ -n "$PID" ]
then
  cd $HOME/nginx/sbin || return
  ./nginx  -c $HOME/nginx/conf/nginx.conf -s stop
   echo "Stop SUCCESS!"
else
  echo "No server process found"
fi

17.设置环境变量

vi /data/nginx/.bashrc
#在文件最后追加
export NGINX_HOME=/data/nginx/nginx
export PATH=$NGINX_HOME/sbin/:$PATH
alias start-nginx='$NGINX_HOME/sbin/start_nginx.sh'

18.配置nginx日志绕接

  1. 创建目录
mkdir -p /data/nginx/nginx/conf/logrotate.d

vi /data/nginx/nginx/conf/logrotate.d/nginx.logrotate
i/data/nginx/logs/*.log {
    daily
    dateext
    dateformat -%Y-%m-%d
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 nginx nginx
    sharedscripts
    postrotate
        [ -f /data/nginx/nginx.pid ] && kill -USR1 `cat /data/nginx/nginx.pid`
    endscript
}

19.可选)新用户添加crontab权限,open Euler操作系统需要执行此操作
在文件新的一行,输入nginx用户,然后保存文件。

vi /etc/cron.allow
inginx

20.添加定时任务

su - nginx
crontab -e

1 0 * * * /usr/sbin/logrotate -f /data/nginx/nginx/conf/logrotate.d/nginx.logrotate > /dev/null 2>&1

21.修改文件权限

# 切换root用户
chown -R nginx:nginx /data/nginx
chmod -R u+x /data/nginx/nginx/sbin/

22.启动Nginx服务(非root用户)

su - nginx
start-nginx

23.启动Nginx服务(root用户)

# 切换root用户
cd /data/nginx/nginx/sbin
./nginx

24.安装后验证

su - nginx

nginx -v
ps -ef|grep nginx

25.服务启停

  1. 启动
# 普通用户启动
su - nginx
start-nginx

# root用户启动
su - root
cd /data/nginx/nginx/sbin
./nginx

2.停止

su - mysql
stop-nginx

3.重新加载配置

su - nginx

cd /data/nginx/nginx/sbin
./nginx -s reload 
posted on 2025-11-17 15:54  沧海浮尘  阅读(5)  评论(0)    收藏  举报