centos安装Nginx服务
使用yum安装nginx
- 配置nginx的Yum源:Nginx官网配置Yum源教程
我们使用稳定版本的repo配置文件即可,vim 创建打开/etc/yum.repos.d/nginx.repo进行编辑
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
- 配置好以后在终端窗口进行安装
yum install -y nginx
安装好以后查看yum安装的nginx版本核对
nginx -V
里面指定了nginx安装过程中安装文件的指定路径,使用-v可以只查看版本号
- 启动之前务必检查是否 关闭防火墙和selinux防火墙(也可以设置针对端口号关闭防火墙)
// 查看防火墙运行状态
firewall-cmd --state
// 查看文件防火墙运行状态
getenforce
// 关闭防火墙
systemctl stop firewalld
// 关闭文件防火墙
setenforce 0
// 开机关闭电脑防火墙
systemctl disable firewalld
// 开启nginx
systemctl start nginx
// 开机自动启动nginx
systemctl enable nginx
- 查看nginx服务是否启动
// linux终端输入
ps aux |grep nginx
也可以查看端口是否成功启动
// linux终端输入
netstat -tnlp
我这里是开启了两个端口服务,正常的话是80 可以在/etc/nginx/nginx.conf里面设置
使用编译安装Nginx
- nginx是基于C写的,所以编译的之前需要配置编译环境
// gcc c++标准编译环境--pcre软件包(使nginx支持http rewrite模块)--openssl-devel(使nginx支持ssl)--Zlib 可以让 Nginx 支持压缩和解压缩功能
yum -y install gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel
- 创建nginx使用用户,做好准备工作
// 创建user用户nginx
useradd nginx
- 访问Nginx官网网站,Nginx是开源的 Nginx官网
在右侧找到download进入下载的界面
在centos中安装使用nginx.tar.gz的,可以直接点击下载到本地,然后传输到我们的服务器上
当然最简单的方法是右键复制下载地址,然后到服务器上通过wget/curl等方式下载
// O大写,不用O只是打印内容不会下载
curl -O http://nginx.org/download/nginx-1.24.0.tar.gz
// wget不用加任何参数直接下载即可
wget http://nginx.org/download/nginx-1.24.0.tar.gz
// 解压到指定目录下
tar -xvzf nginx-1.24.0.tar.gz -C /usr/local/
// 解压到指定目录下
tar -xvzf nginx-1.24.0.tar.gz -C /usr/local/
//对目录下的文件进行预编译
/usr/local/nginx-1.24.0/configure --prefix=/usr/local/nginx --group=nginx --user=nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/client_body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-stream
//移动到目录下然后使用make编译
cd /usr/local/nginx-1.21.6/
//编译安装
make && make install
常用参数名称 | 表示含义 |
---|---|
prefix | 指向安装目录 |
conf-path | 指定配置文件目录 |
http-log-path | 指定访问日志目录 |
error-log-path | 指定错误日志目录 |
pid-path | 指定pid文件目录 |
with-ipv6 | 启用ipv6支持 |
不常见参数
# 模块参数具体功能
--with-cc-opt='-g -O2 -fPIE -fstack-protector //设置额外的参数将被添加到CFLAGS变量。(FreeBSD或者ubuntu使用)
--param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2'
--with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now'
--prefix=/usr/local/nginx //指向安装目录
--conf-path=/etc/nginx/nginx.conf //指定配置文件
--http-log-path=/var/log/nginx/access.log //指定访问日志
--error-log-path=/var/log/nginx/error.log //指定错误日志
--lock-path=/var/lock/nginx.lock //指定lock文件
--pid-path=/run/nginx.pid //指定pid文件
--http-client-body-temp-path=/var/lib/nginx/body //设定http客户端请求临时文件路径
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi //设定http fastcgi临时文件路径
--http-proxy-temp-path=/var/lib/nginx/proxy //设定http代理临时文件路径
--http-scgi-temp-path=/var/lib/nginx/scgi //设定http scgi临时文件路径
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi //设定http uwsgi临时文件路径
--with-debug //启用debug日志
--with-pcre-jit //编译PCRE包含“just-in-time compilation”
--with-ipv6 //启用ipv6支持
--with-http_ssl_module //启用ssl支持
--with-http_stub_status_module //获取nginx自上次启动以来的状态
--with-http_realip_module //允许从请求标头更改客户端的IP地址值,默认为关
--with-http_auth_request_module //实现基于一个子请求的结果的客户端授权。如果该子请求返回的2xx响应代码,所述接入是允许的。如果它返回401或403中,访问被拒绝与相应的错误代码。由子请求返回的任何其他响应代码被认为是一个错误。
--with-http_addition_module //作为一个输出过滤器,支持不完全缓冲,分部分响应请求
--with-http_dav_module //增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法 默认关闭,需编译开启
--with-http_geoip_module //使用预编译的MaxMind数据库解析客户端IP地址,得到变量值
--with-http_gunzip_module //它为不支持“gzip”编码方法的客户端解压具有“Content-Encoding: gzip”头的响应。
--with-http_gzip_static_module //在线实时压缩输出数据流
--with-http_image_filter_module //传输JPEG/GIF/PNG 图片的一个过滤器)(默认为不启用。gd库要用到)
--with-http_spdy_module //SPDY可以缩短网页的加载时间
--with-http_sub_module //允许用一些其他文本替换nginx响应中的一些文本
--with-http_xslt_module //过滤转换XML请求
--with-mail //启用POP3/IMAP4/SMTP代理模块支持
--with-mail_ssl_module //启用ngx_mail_ssl_module支持启用外部模块支持
- 配置文件修改
// 修改编译安装的nginx配置文件
vim /etc/nginx/nginx.conf
配置文件中一般有main块/event块/http块/server块/location块
配置参数 | 代表含义 |
---|---|
worker_processes | 设置nginx启动进程的数量,一般设置成与逻辑cpu数量相同 |
error_log | 指定错误日志目录 |
worker_rlimit_nofile | 设置一个nginx进程能打开的最大文件数-一般为1024倍数 |
在http块中是常用的server配置和location配置
编译安装的启动或者停止都需要写绝对路径去操作,对于编译安装的任何软件都可以通过两种方式去引用,详见----TODO #pass
// 检查nginx的配置文件书写
/usr/local/nginx/sbin/nginx -t
// 创建预编译时指定的nginx目录
[root@localhost ~]# mkdir -p /tmp/nginx
[root@localhost ~]# mkdir /usr/local/nginx/logs
// 启动nginx服务
/usr/local/nginx/sbin/nginx
nginx 的一些参数
参数值 | 代表含义 |
---|---|
nginx -t | 查看配置文件是否有误 |
nginx -s reload | 修改配置文件后重新加载使其生效 |
nginx -s stop | 停止nginx |
nginx -c 配置文件 | 以指定的配置文件启动nginx |
nginx -t -c 配置文件 | 测试指定的配置文件是否有误 |
nginx日志文件内容
使用脚本安装Nginx
#/usr/bin/bash
bianyi(){
echo " 即将为您进行编译安装nginx 中途不要操作"
yum -y install gcc gcc-c++
yum install -y pcre pcre-devel
yum install -y openssl openssl-devel
yum install -y zlib zlib-devel
useradd nginx
echo "编译环境准备工作完成,开始进行下载安装"
sleep 3
curl -O http://nginx.org/download/nginx-1.24.0.tar.gz
tar -xvzf nginx-1.24.0.tar.gz -C /usr/local/
cd /usr/local/nginx-1.24.0/
./configure --prefix=/usr/local/nginx --group=nginx --user=nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/tmp/nginx/client_body --http-proxy-temp-path=/tmp/nginx/proxy --http-fastcgi-temp-path=/tmp/nginx/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_realip_module --with-stream
make && make install
mkdir -p /tmp/nginx
mkdir /usr/local/nginx/logs
/usr/local/nginx/sbin/nginx
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
if [ $? -ne 0 ]
then
echo "安装失败,建议查看错误日志"
else
echo "恭喜您安装成功"
ps aux|grep nginx
fi
}
yumanzhuang(){
yum install yum-utils -y
cat >>/etc/yum.repos.d/nginx.repo<<EOF
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/
gpgcheck=0
enabled=1
EOF
yum install nginx -y
if [ $? -eq 0 ]
then
echo "安装成功~"
else
echo "不可预料的错误发生了~"
continue
fi
nginx -v
}
xznginx () {
rpm -qa |grep nginx &>/dev/null
if [ $? -ne 0 ]
then
ls /usr/local/nginx &>/dev/null
if [ $? -eq 0 ]
then
while :
do
echo "系统自动检测删除,若有与nginx同名文件,建议妥善保存,以免造成数据丢失"
read -p "检测到您为编译安装,此操作将会删除所有nginx数据及编译文件,您是否需要保存配置文件?保存y/删除n" peiz
case $peiz in
y)
mv /etc/nginx/nginx.conf /baocunbeifen001.back &>/dev/null
if [ $? -ne 0 ]
then
echo "未发现配置文件,无法为您保存"
sleep 5
else
echo "备份中,请稍等"
fi
find / -name "*nginx*" |xargs -i rm -rf {} &>/dev/null
mv /baocunbeifen001.back /etc/nginx.conf.back &>/dev/null
echo "若参与正常备份,备份文件位于:/etc/nginx.conf.back"
ls /etc | grep '*nginx*'
break
;;
n)
find / -name "*nginx*" |xargs -i rm -rf {} &>/dev/null
echo "已为您删除编译安装的nginx服务"
break
;;
*)
echo "输入有误,请重新输入"
continue
;;
esac
done
fi
else
echo "检测到您是yum安装nginx,即将为您卸载"
while :
do
read -p "卸载nginx的同时是否需要为您保留依赖包?保留y/删除n" ylnginx
case $ylnginx in
y)
yum remove nginx
echo "已为您单独卸载nginx"
break
;;
n)
yum autoremove nginx
echo "nginx以及其依赖已为您全部移除"
break
;;
*)
echo "您的输入有误,请重新输入"
continue
;;
esac
done
fi
}
while :
do
echo "------------------------"
echo "请输入您想执行的操作"
echo "1.使用编译安装nginx服务"
echo "2.使用yum安装nginx服务"
echo "3.卸载本机nginx服务"
echo "4.退出本程序"
echo "------------------------"
read -p "请在此输入您的操作" num
case $num in
1)
bianyi
;;
2)
yumanzhuang
;;
3)
xznginx
;;
4)
echo "感谢使用~see god bye"
break
;;
*)
echo "请输入正确的指令"
;;
esac
done