源码包放在/ usr / local / src /目录下,编译安装在/ usr / local /目录下
#更新百胜源,安装了wget的的的
yum -y update
yum -y install wget
LNMP和电灯的依赖,大抵都是这些
yum -y install autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib glib2 glibc glibc-glvel glib2-devel krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap -servers gd gd2 gd-devel gd2-devel perl-CPAN pcre-devel net-snmp net-snmp-devel
yum -y install gcc automake autoconf libtool make gcc-c ++ glibc libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses -devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel pcre pcre-devel libmcrypt libmcrypt-devel cmake
yum install -y gcc gcc-c ++ glibc glibc-devel gd gd-devel zlib zlib-devel libtool-ltdl-devel flex autoconf automake
#创建用户组LNMP,创建用户LNMP所属组LNMP设置不能登录
#/ bin / false是最严格的禁止登录选项,一切服务都不能用,而/ sbin / nologin只是不允许系统登录,可以使用其他ftp等服务
groupadd lnmp && useradd -g lnmp -M lnmp -s /bin/nologin
#创建安装目录
mkdir /usr/local/nginx
#下载nginx的源码,解压
cd /usr/local/src
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
#编译设置
./configure --user=lnmp --group=lnmp --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module
#编译&&安装
make && make install
#检查配置文件nginx.conf的正确性
/usr/local/nginx/sbin/nginx -t
#启动nginx的
/usr/local/nginx/sbin/nginx
#查看nginx的的版本
/usr/local/nginx/sbin/nginx -v
#查看nginx的的编译参数
/usr/local/nginx/sbin/nginx -V
#查看nginx的的进程及端口
ps -ef |grep nginx
# nginx常用命令
/usr/local/nginx/sbin/nginx -s reload // 重新载入配置文件
/usr/local/nginx/sbin/nginx -s reopen // 重启 Nginx
/usr/local/nginx/sbin/nginx -s stop // 停止 Nginx
# 设置nginx自启动,代码复制于阿里云
vi /etc/rc.d/init.d/nginx
#!/bin/bash
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: NGINX is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
[ -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 [ -n "$user" ]; then
if [ -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 [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
fi
}
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $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|reload|configtest}"
exit 2
esac
# 设置执行权限
chmod a+x /etc/rc.d/init.d/nginx
# 注册成服务
chkconfig --add nginx
# 设置开机启动
chkconfig nginx on
# 重启, 查看nginx服务是否自动启动
shutdown -h 0 -r
netstat -apn|grep nginx
# 对nginx服务执行停止/启动/重新读取配置文件操作
# 启动nginx服务
systemctl start nginx.service
# 停止nginx服务
systemctl stop nginx.service
# 重启nginx服务
systemctl restart nginx.service
# 重新读取nginx配置(这个最常用, 不用停止nginx服务就能使修改的配置生效)
systemctl reload nginx.service
=================================参考================================ ==
#### nginx依赖源:gcc,PCRE,pcre-devel,zlic,openSSL
#gcc:将下载的源码进行编译,需要依赖GCC环境
yum -y install gcc-c++
#PCRE(Perl的兼容正则表达式)是一个Perl的库,包括perl的兼容的正则表达式库.nginx的HTTP模块使用PCRE来解析正则表达式,所以需要在Linux的上安装PCRE库,PCRE-devel的是使用PCRE开发的一个二次开发库.nginx也需要此库。
yum -y install pcre pcre-devel
#zlib库提供了很多种压缩和解压缩的方式,Nginx的使用zlib的对HTTP包的内容进行gzip的,所以需要在Centos的上安装的zlib库。
yum -y install zlib zlib-devel
#OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法,常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用.nginx不仅支持HTTP协议,还支持HTTPS(即在SSL协议上传输HTTP),所以需要在Centos的的安装的OpenSSL的库。
yum install -y openssl openssl-devel
###编译设置参数
nginx编译的配置选项:
configure命令是用来检测你的安装平台的目标特征的。它定义了系统的各个方面,包括nginx的被允许使用的连接处理的方法,比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个外壳脚本,执行结束时,它会创建一个Makefile文件。
nginx的的配置的命令支持以下参数:
--prefix=path 定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录。默认使用 /usr/local/nginx。
--sbin-path=path 设置nginx的可执行文件的路径,默认为user/sbin/nginx.
--conf-path=path 设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
--pid-path=path 设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名,在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。
--user=name 设置nginx工作进程的用户。安装完成后,可以随时更改的名称在nginx.conf配置文件中 使用的user指令。默认的用户名是nobody。
--group=name 设置nginx工作进程的用户组。安装完成后,可以随时更改的名称在nginx.conf配置文件中使用的user指令。默认的为非特权用户。
--with-select_module --without-select_module 启用或禁用构建一个模块来允许服务器使用select()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
--with-poll_module --without-poll_module 启用或禁用构建一个模块来允许服务器使用poll()方法。该模块将自动建立,如果平台不支持的kqueue,epoll,rtsig或/dev/poll。
--without-http_gzip_module 不编译压缩的HTTP服务器的响应模块。编译并运行此模块需要zlib库。
--without-http_rewrite_module 不编译重写模块。编译并运行此模块需要PCRE库支持。
--without-http_proxy_module 不编译http_proxy模块。
--with-http_ssl_module 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
--with-pcre=path 设置PCRE库的源码路径。PCRE库的源码(版本4.4 - 8.30)需要从PCRE网站下载并解压。其余的工作是Nginx的./ configure和make来完成。正则表达式使用在location指令和ngx_http_rewrite_module 模块中。
--with-pcre-jit 编译PCRE包含“just-in-timecompilation”(1.1.12中, pcre_jit指令)。
--with-zlib=path 设置的zlib库的源码路径。要下载从zlib(版本1.1.3 - 1.2.5)的并解压。其余的工作是Nginx的./configure和make完成。ngx_http_gzip_module模块需要使用zlib 。
--with-cc-opt=parameters 设置额外的参数将被添加到CFLAGS变量。例如,当你在FreeBSD上使用PCRE库时需要使用:--with-cc-opt="-I/usr/local/include。.如需要需要增加 select()支持的文件数量:
--with-cc-opt="-DFD_SETSIZE=2048"。
--with-ld-opt=parameters 设置附加的参数,将用于在链接期间。例如,当在FreeBSD下使用该系统的PCRE库,应指定:--with-ld-opt="-L/usr/local/lib"。
参考了:https://www.cnblogs.com/KenChung/p/8079313.html
http://blog.51cto.com/oudonghang/1919172