centos7 配置nginx

安装是需要的环境

一. gcc 安装
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:

yum install gcc-c++

二. PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:

yum install -y pcre pcre-devel

三. zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。

yum install -y zlib zlib-devel

四. OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。
nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。

yum install -y openssl openssl-deve

下载niginx安装包

使用wget命令下载(推荐)。确保系统已经安装了wget,如果没有安装,执行 yum install wget 安装。

wget -c https://nginx.org/download/nginx-1.12.0.tar.gz

 

 我下的是1.12.0版本,这个版本是稳定版本

解压

tar -zxvf nginx-1.12.0.tar.gz

 

解压后的文件是一个安装程序

/********************************************************************************************************************************************************************************************************

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(makeinstall)Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure–help输出详细的选项列表

其中--prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share,比较凌乱

如果配置--prefix,如:

./configure --prefix=/usr/local/text

 

 

可以把所有资源文件放在/usr/local/test的路径中,不会杂乱

用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)

////*******************************************************************************************************************************************************************************************************

配置   

在nginx-1.12.0的目录下

./configure --prefix=/usr/local/nginx

编译

make

安装

make install

//****************************************************************************************************************************************************************************************************

make 命令像命令行参数一样接收目标。这些目标通常存放在以 “Makefile” 来命名的特殊文件中,同时文件也包含与目标相对应的操作

当 make 命令第一次执行时,它扫描 Makefile 找到目标以及其依赖。如果这些依赖自身也是目标,继续为这些依赖扫描 Makefile 建立其依赖关系,然后编译它们。一旦主依赖编译之后,然后就编译主目标(这是通过 make 命令传入的)

如果你对某个源文件进行了修改,你再次执行 make 命令,它将只编译与该源文件相关的目标文件,因此,编译完最终的可执行文件节省了大量的时间

make就是编译命令,对c源文件的编译

//*****************************************************************************************************************************************************************************************************

编译后,切换至/usr/local/nginx/sbin 目录下,执行./nginx -t 查看是否配置成功

 命令

./nginx -t  查看是否配置成功
./nginx -v 查看版本号
./nginx -s stop
./nginx 启动
./nginx -s reload 重加载,不重启
./nginx -s quit  此方式停止步骤是待nginx进程处理任务完毕进行停止。
./nginx -s stop  此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程
ps aux|grep nginx    查看nginx进程

 

////*****注意:如果之前开启了apache,要关闭httpd服务

/***** ps 命令用来列出系统中当前运行的那些进程,相当于列出进程的快照    -aux 显示所有包含其他使用者的行程

重启nginx

1.先停止再启动(推荐):
对 nginx 进行重启相当于先停止再启动,即先执行停止命令再执行启动命令。如下:

./nginx -s quit
./nginx

2.重新加载配置文件

当 ngin x的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,使用-s reload不用先停止 ngin x再启动 nginx 即可将配置信息在 nginx 中生效,如下:

./nginx -s reload

 

开机自启动

即在rc.local增加启动代码就可以了

vi /etc/rc.local

 

增加一行 /usr/local/nginx/sbin/nginx

配置文件

 

 知识点:

如果不指定nginx默认用户, 默认是nobody

主要是指定执行nginx的worker process的用户,linux里所有程序都是文件,都具有权限问题,这个指定的用户对特定的文件有没有权限访问或执行,就是这个用户的意义

关于linux下的nobody用户
nobody 是系统用户,是一个不能登陆的帐号,一个特殊用途的用户 ID ,一些服务进程如apache,aquid等都采用一些特殊的帐号来运行,比如nobody,news,games等等。一般来说 uid < 500 的都是系统 ID 。
Linux 系统为了安全,很多操作和服务的运行都不是运行在 root 用户下面的,而是一个专用的 ID ,这个 ID 一般就是 nobody ,这样就可以把每个服务运行的情况隔离出来。保证不会因为服务器程序的问题而让服务器程序成了黑客的直接操作源(黑客拿下了服务器程序,也仅仅是 nobody 用户而不是 root 用户)。同时也不会影响其他用户的数据。

 更改默认用户

查看了一下nginx进程ps aux|grep nginx,发现都是nobody的进程,但是nginx的目录都是root用户;
解决:权限问题。编辑nginx.conf 把nginx 运行时的用户 由nobody 改为www解决;查看编辑vim nginx.conf:
user nobody
改成:user root(或者www)

 但改了用户,会有系统响应慢的问题

前面提到在linux上有些应用程序的一些进程会默认使用nobody这个用户来启动,以保安全。nginx有两种进程,除主进程之外的工作进程都 是用nobody这个用户启动的(nginx工作进程的数量使用worker_processes这个参数来设定)。而工作进程要访问nginx下这两个 目录client_body_temp和proxy_temp(这两个目录按我的理解是缓存一些静态文件,比如图片或者css文件什么的,以提高 nginx访问速度),权限变更后,造成工作进程访问不了这两个目录下的内容,造成某些图片和连接打不开,就像响应很慢一样。将权限变更一下就OK了。

 添加nginx用户

useradd -s /sbin/nologin -M nginx

更改 nginx.conf 配置文件

worker_processes 1;

user nginx nginx; # 指定Nginx服务的用户和用户组

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server_tokens off;

server {

listen 80;

server_name www.abc.com;

location / {

root html/www;

index index.html index.htm;

}

}

}

 index 后面接的

当访问某个文件时,会自动寻找index.html, index.htm index.php

 

 

 

 

 

参考:

https://www.cnblogs.com/boonya/p/7907999.html

https://www.jianshu.com/p/e567644b486f

 更改nginx服务的默认用户&关于linux下的nobody用户:https://blog.csdn.net/m0_37477061/article/details/82979041

posted @ 2021-04-04 15:55  binbin_cloud  阅读(357)  评论(0编辑  收藏  举报