nginx 的离线编译安装

catoop 2020-11-13 10:21:09
安装 nginx 编译 离线


下载

官网站点下载nginx安装包,下载最新稳定版(Stable version)。
或者访问站点下载rpm版本。
本文以 CentOS7 使用 rpm 版本安装为例。

安装

安装nginx软件的方式一般分三种方法,对于 yumrpm 这两种方式安装均需要 root 用户,因为默认写入的文件目录普通用户没有权限。这两种方式也是最为简单的方式,其中 yum 需要你的机器可以联网,rpm 方式不需要机器联网,但是你需要下载和系统对应的rpm文件。这两种方式资料很多也很简单,本文不做赘述,如有需要请自行查阅资料。

注意:如果使用root用户安装和启动nginx,请把nginx配置文件第一行的修改为 user nobody 意思是让nginx 以 nobody 用户运行,nobody是Linux一个不能登录的默认用户,这样可以避免一定的安全问题。

本文重点针对异常环境(非root用户并且不能联网的服务器)的安装方法进行说明。

编译环境的准备

gcc 编译环境

  • 在一个可以联网的,和目标服务器操作系统版本一致的服务器上进行编译生成文件包(当然了如果你直接在不能联网的机器上直接捣鼓也是可以的,只是离线安装 gcc 会非常麻烦浪费时间,所以随便找一个可以联网虚拟机更简单)。
  • 如果你的目标服务器是可以联网的,请直接按照下文步骤操作。
  • 如果你的目标服务器自带 gcc 编译环境(命令 gcc --version 判断系统是否已经安装),请直接按照下文步骤操作。

相关文件包

编译安装

在 gcc 服务器上编译

首先确定你目标服务器的 非root用户名,本文的非root用户名以 shanhy 为例,具体的名字随意。
1、创建用户并设置密码
使用root用户创建用户并设置密码,如果你已经被分配好一个用户,则跳过该步

useradd shanhy
passwd shanhy

2、安装gcc编译环境
使用root用户安装gcc

yum install -y gcc-c++

3、切换到非root用户进行编译和后续操作
切换用户

su - nginx

解压压缩包

tar -xzvf nginx-1.18.0.tar.gz
tar -xzvf openssl-1.0.2s.tar.gz
tar -xzvf pcre-8.44.tar.gz
tar -xzvf zlib-1.2.11.tar.gz

配置

cd nginx-1.18.0
./configure \
--prefix=/home/shanhy/nginx \
--with-pcre=../pcre-8.44 \
--with-zlib=../zlib-1.2.11 \
--with-openssl=../openssl-1.0.2s \
--user=shanhy \
--group=shanhy \
--with-file-aio \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_gzip_static_module \
--with-http_stub_status_module

其中 --prefix 设定你 nginx 最终需要安装到的目录,这个目录一定要和你最后需要拷贝到的目标服务器上计划放置的目录一致,因为编译后这种配置是默认打入二进制文件中的不便修改。--user--group 使用你的非root用户名和其所在的用户组名称,下面是查看用户所在用户组的方法(示例):
[shanhy@cib-server1 sbin]$ cat /etc/passwd | grep shanhy
shanhy:x:1002:1003::/home/shanhy:/bin/bash
[shanhy@cib-server1 sbin]$ cat /etc/group | grep 1003
shanhy:x:1003:
更多参数请查阅相关资料。

编译

make && make install

安装

make install

安装后 --prefix 指定的目录中会出现包括但不限于 conf|html|sbin|logs 几个目录。

使用root用户授权

非root用户运行nginx不能监听1024以下的端口号,因为我们的nginx需要使用 80和443 端口,所以需要使用root用户授权。当然如果你nginx使用大端口你可以跳过这步。

su - root
cd /home/shanhy/nginx/sbin
chown root:root nginx
chmod 755 nginx
chmod u+s nginx

启动服务

使用非root用户,进入目录并启动服务

su - shanhy
cd /home/shanhy/nginx
./sbin/nginx

打开浏览器访问 http://{服务器IP} 正常应该可以看到 nginx 的默认页。

常用管理命令:
查看版本:nginx –V
停止服务:nginx -s stop 或者是通过 kill nginx 进程号
测试配置:nginx -t
刷新配置:nginx -s reload

打包文件发送到目标服务器部署

  • 将编译后的文件包进行打包,发送到纯内网的目标服务器上并解压。
  • 在目标服务器上使用 root 用户为 nginx 文件授权。
  • 启动服务。

至此,服务安装结束。


配置

nginx 的默认的主配置文件为 conf/nginx.conf,我们一般创建一个 conf.d 文件夹这样的方式来区分主配置文件和子配置文件,conf.d 中存放多个子配置文件:

使用如下配置文件替换默认配置文件:

#user nobody;
worker_processes 1;
error_log logs/error.log warn;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include ./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 logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include ./conf.d/*.conf;
}

注意:如果你的nginx使用的是root用户安装和启动的,配置文件的第一行 user nobody 请去掉前面的 # 注释,这个在上文中已做说明。

然后创建目录 conf/conf.d,将如下文件 default.conf 放入其中

server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

配置文件如果有变动修改,修改后先使用 sbin/nginx -t 测试语法然后再 sbin/nginx -s reload 刷新配置即可。


(END)

版权声明
本文为[catoop]所创,转载请带上原文链接,感谢
https://shanhy.blog.csdn.net/article/details/107660513

  1. [front end -- JavaScript] knowledge point (IV) -- memory leakage in the project (I)
  2. This mechanism in JS
  3. Vue 3.0 source code learning 1 --- rendering process of components
  4. Learning the realization of canvas and simple drawing
  5. gin里获取http请求过来的参数
  6. vue3的新特性
  7. Get the parameters from HTTP request in gin
  8. New features of vue3
  9. vue-cli 引入腾讯地图(最新 api,rocketmq原理面试
  10. Vue 学习笔记(3,免费Java高级工程师学习资源
  11. Vue 学习笔记(2,Java编程视频教程
  12. Vue cli introduces Tencent maps (the latest API, rocketmq)
  13. Vue learning notes (3, free Java senior engineer learning resources)
  14. Vue learning notes (2, Java programming video tutorial)
  15. 【Vue】—props属性
  16. 【Vue】—创建组件
  17. [Vue] - props attribute
  18. [Vue] - create component
  19. 浅谈vue响应式原理及发布订阅模式和观察者模式
  20. On Vue responsive principle, publish subscribe mode and observer mode
  21. 浅谈vue响应式原理及发布订阅模式和观察者模式
  22. On Vue responsive principle, publish subscribe mode and observer mode
  23. Xiaobai can understand it. It only takes 4 steps to solve the problem of Vue keep alive cache component
  24. Publish, subscribe and observer of design patterns
  25. Summary of common content added in ES6 + (II)
  26. No.8 Vue element admin learning (III) vuex learning and login method analysis
  27. Write a mini webpack project construction tool
  28. Shopping cart (front-end static page preparation)
  29. Introduction to the fluent platform
  30. Webpack5 cache
  31. The difference between drop-down box select option and datalist
  32. CSS review (III)
  33. Node.js学习笔记【七】
  34. Node.js learning notes [VII]
  35. Vue Router根据后台数据加载不同的组件(思考->实现->不止于实现)
  36. Vue router loads different components according to background data (thinking - & gt; Implementation - & gt; (more than implementation)
  37. 【JQuery框架,Java编程教程视频下载
  38. [jQuery framework, Java programming tutorial video download
  39. Vue Router根据后台数据加载不同的组件(思考->实现->不止于实现)
  40. Vue router loads different components according to background data (thinking - & gt; Implementation - & gt; (more than implementation)
  41. 【Vue,阿里P8大佬亲自教你
  42. 【Vue基础知识总结 5,字节跳动算法工程师面试经验
  43. [Vue, Ali P8 teaches you personally
  44. [Vue basic knowledge summary 5. Interview experience of byte beating Algorithm Engineer
  45. 【问题记录】- 谷歌浏览器 Html生成PDF
  46. [problem record] - PDF generated by Google browser HTML
  47. 【问题记录】- 谷歌浏览器 Html生成PDF
  48. [problem record] - PDF generated by Google browser HTML
  49. 【JavaScript】查漏补缺 —数组中reduce()方法
  50. [JavaScript] leak checking and defect filling - reduce() method in array
  51. 【重识 HTML (3),350道Java面试真题分享
  52. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  53. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  54. [re recognize HTML (3) and share 350 real Java interview questions
  55. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  56. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  57. 【重识 HTML ,nginx面试题阿里
  58. 【重识 HTML (4),ELK原来这么简单
  59. [re recognize HTML, nginx interview questions]
  60. [re recognize HTML (4). Elk is so simple