nginx学习笔记 | 一次配置Nginx的踩坑填坑记录
前言
这些天发现自己在服务器上部署的nginx服务常常需要清除浏览器历史记录之后才会刷新信息,搜索一番发现有网友说要把配置文件中的nginx.conf
中的sendfile
参数改为off
,尝试之后发现还是不行,一番操作无果,我决定重装一遍nginx,本来以为会很顺利,没想到这次遇到了很多坑,这一篇就写来总结总结一下。
安装篇
yum安装
1、安装前准备
yum install yum-utils
2、添加源
cd /etc/yum.repos.d/ #到`/etc/yum.repos.d/` 目录下
sudo vim nginx.repo #新建`nginx.repo `文件
输入以下信息
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
通过yum search nginx
看看是否已经添加源成功。如果成功则执行下列命令安装nginx。
yum install nginx
源码安装
Nginx 源码包安装方式步骤比较繁琐,并且需要提前安装一些 Nginx 依赖库。
1、依赖库安装
sudo yum -y install gcc gcc-c++ # nginx 编译时依赖 gcc 环境
sudo yum -y install pcre pcre-devel # 让 nginx 支持重写功能
sudo yum -y install zlib zlib-devel # zlib 库提供了很多压缩和解压缩的方式,nginx 使用 zlib 对 http 包内容进行 gzip 压缩
sudo yum -y install openssl openssl-devel # 安全套接字层密码库,用于通信加密
以上安装完成后,进行 nginx 源码的安装。
2、nginx 源码包安装
切换至/usr/local目录下,通过wget安装,源码包下载地址:nginx.org/en/download…
sudo wget http://...
sudo tar -zxvf nginx-1.11.5.tar.gz # 解压缩
在完成解压缩后,进入 nginx-1.11.5
目录进行源码编译安装。
sudo mv nginx-1.11.5 nginx
cd nginx
sudo ./configure --prefix=/usr/local/nginx # 检查平台安装环境
# --prefix=/usr/local/nginx 是 nginx 编译安装的目录(推荐),安装完后会在此目录下生成相关文件
如果前面的依赖库都安装成功后,执行 ./configure --prefix=/usr/local/nginx
命令会显示一些环境信息。如果出现错误,一般是依赖库没有安装完成,可按照错误提示信息进行所缺的依赖库安装。
进行源码编译并安装 nginx
make # 编译
make install # 安装
⚠️ make install这一步出现错误:cp: conf/koi-win’ and /usr/local/nginx/conf/koi-win’ are the same file
则在上一步sudo ./configure
的命令换成
./configure –prefix=/usr/local/nginx –conf-path=/usr/local/nginx/nginx.conf
源码包安装与 yum 安装的 nginx 服务操作命令也不同。
/usr/local/nginx/sbin/nginx #启动服务
/usr/local/nginx/sbin/nginx -s reload #重新加载服务
/usr/local/nginx/sbin/nginx -s stop #停止服务
ps -ef | grep nginx # 查看服务进程
⚠️ nginx启动失败:Redirecting to /bin/systemctl start nginx.service Failed to start nginx.service: Unit not found.
如果你想使用service
工具控制nginx的启动关闭,出现这个错误,原因是nginx没有添加到系统服务,手动手动添加一个即可。可以参考下面的操作:
在 /etc/init.d/
下创建名为nginx
的启动脚本即可,内容如下:
#!/bin/bash
#
# chkconfig: - 85 15
# description: Nginx is a World Wide Web server.
# processname: nginx
nginx=/usr/local/nginx/sbin/nginx
conf=/usr/local/nginx/conf/nginx.conf
case $1 in
start)
echo -n "Starting Nginx"
$nginx -c $conf
echo " done"
;;
stop)
echo -n "Stopping Nginx"
killall -9 nginx
echo " done"
;;
test)
$nginx -t -c $conf
;;
reload)
echo -n "Reloading Nginx"
ps auxww | grep nginx | grep master | awk '{print $2}' | xargs kill -HUP
echo " done"
;;
restart)
$0 stop
$0 start
;;
show)
ps -aux|grep nginx
;;
*)
echo -n "Usage: $0 {start|restart|reload|stop|test|show}"
;;
esac
注意,保存一定要保存成UNIX格式(notepad++:编辑–文档格式转换–转为UNIX格式),否则会报错的(no such file or directory)
设置执行权限:chmod +x /etc/init.d/nginx
注册成服务:chkconfig -add nginx
设置开机启动:chkconfig nginx on
之后,就可以使用以下命令了
service nginx start/stop/restart/reload
后记
更多关于nginx使用的文章可以康康我在博客园的文章: