Nginx-1.9.1安装教程:从源码编译到服务启动的完整指南
大家好,我是你们的后端技术老司机。今天我们来聊聊一个后端开发绕不开的话题——Nginx安装。别看这玩意儿简单,但新手朋友经常在这上面摔跟头。
今天我就手把手教你,从零开始安装Nginx 1.9.1版本,让你一次成功,从此告别”装个Nginx搞了一天”的尴尬!
为什么选择源码安装?
可能有朋友问了:”为啥不直接yum install或者apt-get install?”
好问题!源码安装虽然步骤多一点,但有这几个好处:
-
版本可控:想装哪个版本就装哪个版本,不像包管理器可能只有老版本 -
模块定制:可以根据需要选择功能模块,要啥装啥,不要的不装 -
性能优化:针对你的服务器环境进行编译优化 -
学习价值:了解软件安装的本质过程,排查问题更方便
安装前的准备工作
环境检查
首先确认你的服务器环境:
# 查看系统版本cat /etc/redhat-release # CentOS/RedHat# 或者cat /etc/issue # Ubuntu/Debian# 查看内核版本uname -r
安装依赖包
Nginx编译需要一些基础库,咱们一次性装齐:
# CentOS/RedHat系统yum -y install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel# Ubuntu/Debian系统apt-get updateapt-get install -y build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev
这些依赖的作用:
-
**gcc gcc-c++**:编译器,不装这个没法编译C/C++代码 -
pcre pcre-devel:正则表达式库,Nginx的rewrite功能需要 -
zlib zlib-devel:压缩库,gzip压缩功能需要 -
openssl openssl-devel:SSL/TLS加密库,HTTPS功能需要
下载并解压源码
下载Nginx 1.9.1
# 进入源码目录(习惯放这里)cd /usr/local/src# 下载源码包wget http://nginx.org/download/nginx-1.9.1.tar.gz# 解压tar -zxvf nginx-1.9.1.tar.gz# 进入源码目录cd nginx-1.9.1
配置编译参数
这是最关键的一步!Nginx的强大之处就在于模块化设计,你可以按需选择功能。
./configure \--prefix=/usr/local/nginx \--user=www \--group=www \--with-http_ssl_module \--with-http_v2_module \--with-http_realip_module \--with-http_stub_status_module \--with-http_gzip_static_module \--with-http_flv_module \--with-http_mp4_module \--with-http_auth_request_module \--with-http_sub_module \--with-http_dav_module \--with-stream \--with-stream_ssl_module
参数解释:
-
–prefix:安装目录,建议统一放/usr/local/nginx -
–user/–group:运行用户和用户组,安全考虑不能用root -
–with-http_ssl_module:HTTPS支持模块,现在是标配 -
–with-http_v2_module:HTTP/2支持,提升性能 -
–with-http_stub_status_module:状态监控模块,运维必备 -
–with-stream:TCP/UDP代理模块,四层负载均衡需要
如果提示缺少某些库,比如GeoIP,可以先安装对应依赖或者去掉相关模块。
编译和安装
# 编译(这步时间稍长,喝杯茶)make# 安装(这步很快)make install
安装完成后,Nginx会被安装到[/usr/local/nginx](file:///usr/local/nginx)目录下:
# 查看安装结果ls /usr/local/nginx/# 输出应该是:# conf html logs sbin
目录结构说明:
-
conf:配置文件目录 -
html:默认网页文件目录 -
logs:日志文件目录 -
sbin:可执行文件目录
创建运行用户
为了安全,我们创建专门的nginx运行用户:
# 创建用户组groupadd www# 创建用户并加入组useradd -g www www
启动Nginx
直接启动
# 启动Nginx/usr/local/nginx/sbin/nginx# 检查是否启动成功ps -ef | grep nginx
正常情况下会看到master和worker进程:
root 12345 1 0 10:00 ? 00:00:00 nginx: master processwww 12346 12345 0 10:00 ? 00:00:00 nginx: worker process
验证安装
打开浏览器访问你的服务器IP地址,应该能看到Nginx的欢迎页面。
或者用命令行验证:
curl http://localhost
Nginx常用操作命令
# 启动(如果已启动会报错)/usr/local/nginx/sbin/nginx# 优雅停止(处理完当前请求再停止)/usr/local/nginx/sbin/nginx -s quit# 强制停止/usr/local/nginx/sbin/nginx -s stop# 重新加载配置文件(不中断服务)/usr/local/nginx/sbin/nginx -s reload# 检查配置文件语法/usr/local/nginx/sbin/nginx -t# 查看版本和编译参数/usr/local/nginx/sbin/nginx -V
配置系统服务(推荐)
为了方便管理,我们把Nginx配置成系统服务:
# 创建服务文件cat > /etc/systemd/system/nginx.service << 'EOF'[Unit]Description=The NGINX HTTP and reverse proxy serverAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStartPre=/usr/local/nginx/sbin/nginx -tExecStart=/usr/local/nginx/sbin/nginxExecReload=/bin/kill -s HUP $MAINPIDKillSignal=SIGQUITTimeoutStopSec=5KillMode=processPrivateTmp=true[Install]WantedBy=multi-user.targetEOF# 重新加载系统服务systemctl daemon-reload# 设置开机自启systemctl enable nginx# 启动服务systemctl start nginx# 查看服务状态systemctl status nginx
现在就可以用systemctl管理Nginx了:
systemctl start nginx # 启动systemctl stop nginx # 停止systemctl restart nginx # 重启systemctl reload nginx # 重载配置systemctl status nginx # 查看状态
常见问题排查
1. 端口被占用
# 查看80端口占用情况netstat -tlnp | grep :80# 杀掉占用进程(替换PID)kill -9 PID
2. 权限问题
# 检查nginx目录权限ls -la /usr/local/nginx# 修改权限chown -R www:www /usr/local/nginx
3. 配置文件错误
# 检查配置文件语法/usr/local/nginx/sbin/nginx -t# 查看错误日志tail -f /usr/local/nginx/logs/error.log
性能优化建议
安装完成后,建议做以下优化:
-
调整worker进程数:
# 在nginx.conf中worker_processes auto; # 自动检测CPU核心数 -
调整连接数:
events { worker_connections 1024; # 单个worker最大连接数} -
开启gzip压缩:
http { gzip on; gzip_types text/plain text/css application/json application/javascript;}
结语
到这里,Nginx 1.9.1的安装就全部完成了!从下载源码、编译安装到配置服务,每一步都详细讲解了。
记住几个关键点:
-
依赖要装全,不然编译会报错 -
configure参数按需选择,不要贪多 -
运行用户要设置,安全第一 -
配置成系统服务,管理更方便
安装只是第一步,后续我们还会分享Nginx的配置优化、负载均衡、安全加固等实战技巧,记得关注我们的公众号”服务端技术精选”!
觉得这篇文章对你有帮助吗?欢迎点赞、在看、转发三连,你的支持是我们持续创作的最大动力!
服务端技术精选 | 专注分享实用的后端技术干货
夜雨聆风
