准备工作
使用root用户安装。
到nginx官网下载Linux源码或者执行:wget http://nginx.org/download/nginx-1.12.2.tar.gz。
到pcre站点下载zlilb源码或者执行:wget https://ftp.pcre.org/pub/pcre/pcre-8.41.tar.gz。
到zlib官网下载zlilb源码或者执行:wget https://ncu.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gz。
到openssl官网下载openssl源码或者执行:wget https://www.openssl.org/source/openssl-1.1.0g.tar.gz。
一般编译nginx时,都要先安装pcre、zlib、openssl等,然后编译安装nginx时指定这些程序的安装目录,这样nginx在每次启动的时候,就会去动态加载这些程序了。但是也可以将这些程序静态编译到nginx里面,这样nginx启动时就不用动态加载了,这种方式效率更高,也更方面替换这些程序的版本,因为像zlib会被很多程序依赖,不好升级。因此下载完以上4个tar.gz后,全部解压缩到/home/test:
tar -zxvf nginx-1.12.2.tar.gz -C /home/test
tar -zxvf pcre-8.41.tar.gz -C /home/test
tar -zxvf zlib-1.2.11.tar.gz -C /home/test
ar -zxvf openssl-1.1.0g.tar.gz -C /home/test
构建和安装
构建时使用configure命令进行配置,它定义了系统的各个方面,包括nginx被允许用于连接处理的方法。最后,它创建了一个Makefile。configure支持的参数可以使用./configure --help查看:
--prefix:定义一个将保存服务器文件的目录。此目录也将用于configure命令配置的(除库源文件路径外)和nginx.conf配置文件中的所有相对路径。默认路径为/usr/local/nginx。
--sbin-path=path:设置nginx可执行文件的路径。此路径仅在安装期间使用。默认路径为prefix/ sbin/nginx。
--conf-path=path:设置nginx.conf的路径。如有必要,总是可以 在nginx启动时通过命令行参数-c file指定一个不同的配置文件路径。 默认路径为prefix/conf/nginx.conf。
--pid-path=path:设置nginx.pid文件的路径,这个文件将存储主进程的进程ID。安装完成后,此路径可以在nginx.conf文件中使用pid指令更改。默认路径为prefix/ logs/nginx. pid。
--error-log-path=path:设置记录主要错误、警告以及诊断文件的路径。安装完成后, 该路径总是可以在nginx.conf文件中用 error_log 指令更改。 默认路径为prefix/logs/error.log。
--http-log-path=path:设置记录HTTP服务器主要请求日志的完整路径。安装完成后, 该路径总是可以在nginx.conf文件用 access_log 指令来修改。 默认路径为prefix/logs/access.log。
--build=name:设置一个可选的nginx构建名称。
--user=name: 设置工作进程以某非特权用户的身份运行。安装完成后,该用户名总是可以在 nginx.conf文件用user指令来修改。 默认值为nobody。
--group=name:设置工作进程以某非特权用户组的身份运行。安装完成后,该用户名总是可以在 nginx.conf用user指令来修改。 默认名称与--user相同。
--with-select_module:启用或禁用构建一个允许服务器使用select()方法的模块。如果平台不支持更合适的方法比如 kqueue,epoll,/dev/poll,则该模块是自动构建的。
--with-poll_module:启用或禁用构建一个允许服务器使用poll()方法的模块。如果平台不支持更合适的方法比如 kqueue,epoll,/dev/poll,则该模块是自动构建的。
--without-http_gzip_module:不构建HTTP服务器的压缩响应模块ngx_http_gzip_module。该模块需要zlib库才能构建和运行。
--without-http_rewrite_module:不构建允许HTTP服务器重定向请求和更改请求的URI的模块ngx_http_rewrite_module。该模块需要PCRE库才能构建和运行。
--without-http_proxy_module:不构建HTTP服务器代理模块ngx_http_proxy_module。
--with-http_ssl_module:构建一个让HTTP服务器支持https协议的模块,这个模块默认不会构建。该模块需要OpenSSL库才能构建和运行。
--with-pcre=path:设置PCRE库源文件的路径。PCRE库的发行版(version 4.4 — 8.41)需要先从PCRE站点下载并解压缩。接下来的操作由nginx的./configure和make命令来完成。该库用于location指令的正则表达式支持以及ngx_http_rewrite_module模块。
--with-pcre-jit:构建PCRE库以支持即时编译。
--with-zlib=path:设置zlib库源文件的路径。zlib库的发行版(version 1.1.3 — 1.2.11)需要先从zlib站点下载并解压缩。接下来的操作由nginx的./configure和make命令来完成。该库用于ngx_http_gzip_module模块。
--with-openssl=path:设置openssl库源文件的路径。openssl库的发行版需要先从openssl站点下载并解压缩。接下来的操作由nginx的./configure和make命令来完成。该库用于ngx_http_gzip_module模块。
--with-cc-opt=parameters:设置将添加到CFLAGS变量中的额外参数。当在FreeBSD下使用系统PCRE库时,需要指定--with-cc-opt="-I /usr/local/include"。 如果需要增加select()方法所支持的文件数量,也可以参照如下方式指定:--with-cc-opt="-D FD_SETSIZE=2048"。
--with-ld-opt=parameters: 设置将会在链接过程中使用的额外参数。当在FreeBSD下使用系统PCRE库时,需要指定--with-ld-opt="-L /usr/local/lib"。
--with-http_stub_status_module:ngx_http_stub_status_module模块提供了对基本状态信息的访问。
步骤:
1.cd /home/test/nginx-1.12.2
2../configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/home/test/pcre-8.41 --with-zlib=/home/test/zlib-1.2.11 --with-openssl=/home/test/openssl-1.1.0g --with-http_stub_status_module
3.make
4.make install
配置服务
sysvinit
参考脚本地址:https://www.nginx.com/resources/wiki/start/topics/examples/redhatnginxinit/。
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: 35 85 15
# description: NGINX is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
test "$NETWORKING" = "no" && exit 0
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
test -f /etc/sysconfig/nginx && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if test -n "$user" ; then
if test -z "`grep $user /etc/passwd`" ; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if test `echo $opt | grep '.*-temp-path'` ; then
value=`echo $opt | cut -d "=" -f 2`
if test ! -d "$value" ; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
fi
}
start() {
test -x $nginx || exit 5
test -f $NGINX_CONF_FILE || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
test $retval -eq 0 && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
test $retval -eq 0 && rm -f $lockfile
return $retval
}
restart() {
configtest || return $?
stop
sleep 1
start
}
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status > /dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac
将以上脚本保存到/etc/rc.d/init.d/nginx文件。nginx="/usr/sbin/nginx"修改为正确的nginx文件路径。NGINX_CONF_FILE="/etc/nginx/nginx.conf"修改为正确的nginx.conf文件路径。
35代表在3和5运行级别下开机启动,85代表启动时脚本的执行顺序,15代表关闭时脚本的执行顺序。master进程由root用户启动,worker进程由配置文件的user指令指定,默认是nobody。
让所有用户可以执行这个服务:chmod a+x /etc/rc.d/init.d/nginx
添加nginx服务:chkconfig --add nginx
查看nginx服务:chkconfig --list nginx
开启nginx服务:service nginx start
关闭nginx服务:service nginx restart
如何卸载?
1.service nginx stop停止服务
2.chkconfig --del nginx删除服务
3.删除/etc/rc.d/init.d/nginx文件
4.删除/usr/local/nginx/目录
CentOS7
参考脚本地址:https://www.nginx.com/resources/wiki/start/topics/examples/systemd/。
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
将以上脚本保存到/usr/lib/systemd/system/nginx.service。ExecStartPre=/usr/sbin/nginx -t
和ExecStart=/usr/sbin/nginx 修改为正确的nginx文件路径。master进程由root用户启动,worker进程由配置文件的user指令指定,默认是nobody。
#启动,服务名为 nginx.service 文件名中的前半部分即“nginx”
systemctl start nginx
#检测状态
systemctl status nginx
#设置为开机启动
systemctl enable nginx
#检测是否开机启动
systemctl is-enabled nginx
如何卸载?
1.systemctl stop nginx 停止服务
2.systemctl disenable nginx 禁止开机启动
3.删除/usr/lib/systemd/system/nginx.service文件
4.删除/usr/local/nginx/目录
- WordPress 4.8 安装配置教程 (基于 centos 7.3, php 7.0, mysql 5.7.19, nginx 1.12.1)
最近想要整个 blog,记录自己工作.学习中的点滴.Wordpress 自然是首选,因为内容才是关键,所以也就不怕别人说太 low.网上大部份都是讲 wordpress 配合 apache 的安装教程 ...
- Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Openssl 1.1.0e + Mariadb 10.1.22 + Nginx 1.12.0 + PHP 7.1.4 + Laravel 5.4 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...
- Deepin 15.4 编译安装 LNMP(PHP 5.6.31 + Nginx 1.12.1 + MySQL 5.6.36)
先查看先前的文章:Ubuntu 14 编译安装 PHP 5.4.45 + Nginx 1.4.7 + MySQL 5.6.26 笔记 编译 Nginx #安装依赖库 sudo apt-get -y i ...
- CentOS7 安装 Nginx 1.12.1
安装准备: nginx 依赖的一些 lib 库: yum install gcc-c++ yum install pcre pcre-devel yum install zlib zlib-devel ...
- Nginx 介绍和安装
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev ...
- Nginx与Tomcat安装、配置与优化
Nginx与Tomcat安装.配置与优化 Nginx与Tomcat安装.配置与优化 Nginx的安装与使用 Nginx是一款优秀的反向代理服务器 安装: rpm(或者是pkg安装),是预编译好的程序包 ...
- Nginx简介与安装
| 简介 Nginx是一个高性能的HTTP和反向代理服务器,可以作为负载均衡服务器,也是一个IMAP/POP3/SMTP服务器.它的特点是占有内存少,并发能力强.目前有很多大型公司都在使用Nginx, ...
- nginx的yum安装,基本参数使用,编译参数说明和Nginx基本配置,模块安装
nginx的yum安装从nginx官网获取源 vim /etc/yum.repose.d/nginx.repo[nginx]name=nginx repobaseurl=http://nginx.or ...
- Nginx 服务器的安装部署(CentOS系统)
1.准备安装环境yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-develgcc编译器 ...
随机推荐
- 从零开始的SpringBoot项目 ( 一 ) Spring、SpringMVC和SpringBoot
要想开始一个SpringBoot项目 , 首先要知道SpringBoot是什么 , 可以做什么 , 再去研究怎么用 . 一.概念 1.Spring Spring是一个开源容器框架,可以接管web层,业 ...
- 借助FRP反向代理实现内网穿透
一.frp 是什么? frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便捷的方式通过具有公网 IP 节点的中转暴露到公 ...
- Orleans 知多少 | Orleans 中文文档上线
Orleans 简介 Orleans是一个跨平台框架,用于构建健壮,可扩展的分布式应用程序 Orleans建立在.NET开发人员生产力的基础上,并将其带入了分布式应用程序的世界,例如云服务. Orle ...
- Nginx Ingress on TKE 部署最佳实践
概述 开源的 Ingress Controller 的实现使用量最大的莫过于 Nginx Ingress 了,功能强大且性能极高.Nginx Ingress 有多种部署方式,本文将介绍 Nginx I ...
- 用rspec执行自动化测试用例
rspec是一款行为驱动开发(BDD)的工具,不过在这里用于测试,准确来说应该是测试驱动开发(TDD)吧.事实上我也没搞清楚.作为初学者不清楚就不清楚吧,以后会知道的.写博客无非就是写写学习笔记,不纠 ...
- OpenvSwitch系列之八 vxlan隧道
Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl命令使用 Open vSwit ...
- Java原生网络编程
一些常见术语 编程中的Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...
- bind,call,apply模拟实现
首先,三者第一个参数都为this指向 区别 bind返回的是一个函数体 call和apply会直接执行,但是call参数需要一个一个进行传递,apply的第二个参数是一个数组 实现 bind 简单实现 ...
- 我是如何使用freemarker生成Word文件的?
推荐:亲身体验,数次踩坑,遂撰写此文,以备各位不时之需. 背景 一天,产品经理递给我了一份word报告,我定睛一看 这个文档有大大小小的标题层级,还有排版好的段落.各种一目了然的饼图.走势图,当然还少 ...
- [LeetCode]67. 二进制求和(字符串)(数学)
题目 给你两个二进制字符串,返回它们的和(用二进制表示). 输入为 非空 字符串且只包含数字 1 和 0. 题解 两个字符串从低位开始加,前面位不够补0.维护进位,最后加上最后一个进位,最后反转结果字 ...