环境准备
先安装准备环境
yum -y install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel
注释:
gcc为GUN Compiler Collection的缩写,可以编译C和C++源代码等, 它是GUN开发的C和C++以及其它很多种语言的编译器(最早的时候只能编译C,后面很快进化成一个编译很多种语言的集合,如Fortran、Pascal、Objective-C、Java、Ada、Go等。)
gcc在编译C++源代码的阶段,只能编译C++源文件,而不能自动和C++程序使用的库链接(编译过程分为编译、链接两个阶段,注意不要和可执行文件这个概念搞混,相对可执行文件来说有三个重要的概念:编译(compile)、链接(link)、加载(load)。源程序文件被编译成目标文件,多个目标文件连同库被连接成一个最终的可执行文件,可执行文件被加载到内存中运行)。因此,通常使用g++命令来完成C++程序的编译和连接,改程序会自动调用gcc实现编译。
gcc-c++也能编译C源代码,只不过会把他当成C++源代码,后缀为.c的,gcc把他当做是C程序,而g++当做是c++程序;后缀为.cpp的,两者都会认为是C++程序,注意,虽然C++是C的超集,但是两者对语法的要求是有区别的。
automake是一个从Makefile.am文件自动生成Makefile.in的工具。为了生成Makefile.in,automake还需用到Perl,犹豫automake创建的发布完全遵循GUN标准,所以在创建中不需要Perl。libtool是一款方便生成各种程序库的工具。
pcre pcre-devel:在Nginx编译需要PCRE(Perl Compatible Regular Expression),因为Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。
zlip zlib-devel:nginx启用压缩功能的时候,需要此模块的支持。
openssl openssl-devel:开启SSL的时候需要此模块的支持。
安装Nginx
操作命令如下:
1 mkdir -p /home/vast/tools --> -p 递归创建目录 2 cd /home/vast/tools/ --> 跳转至/home/vast/tools目录 3 wget -q http://nginx.org/download/nginx-1.16.0.tar.gz -->下载Nginx软件包 4 ls -l nginx-1.16.0.tar.gz 5 useradd nginx -s /sbin/nologin -M -->创建Nginx用户 6 tar zxvf nginx-1.16.0.tar.gz -->解压Nginx软件包 7 cd nginx-1.16.0 8 ./configure --user=nginx --group=nginx -->进程用户或组权限 9 --prefix=/application/nginx-1.16.0/ -->设置安装路径 10 --with-http_ssl_module -->激活ssl功能 11 --with-http_stub_status_module -->激活状态信息 12 make && make install 13 ln -s /application/nginx-1.16.0/ /application/nginx 14 将Nginx安装路径通过软连接的方式更改为/application/nginx/,方便使用 15 安装时指定版本号路径为了便于查看区分当前使用的Nginx版本,方便升级 16 内部人员使用路径/application/nginx/。 17 当Nginx软件升级编译成带新版本号的版本后,删除原软链接,重新建立到/application/nginx/的软链接就好
安装完成后启动并检查安装结果:
1、启动前检查配置文件语法
[root@miaopa ~]# /application/nginx/sbin/nginx -t nginx: the configuration file /application/nginx-1.16.0//conf/nginx.conf syntax is ok nginx: configuration file /application/nginx-1.16.0//conf/nginx.conf test is successful
2、启动nginx服务
/application/nginx/sbin/nginx
1)查看Nginx服务对应的端口是否成功启动
1 [root@miaopa ~]# lsof -i :80 2 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 3 nginx 10915 root 6u IPv4 37219 0t0 TCP *:http (LISTEN) 4 nginx 10916 nginx 6u IPv4 37219 0t0 TCP *:http (LISTEN)
2)也可以使用通过netstat -lnt|grep 80 查看
[root@miaopa ~]# netstat -lnt|grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
3、检查Nginx启动的实际效果
1)在Linux下可使用如下wget命令检测
[root@miaopa ~]# wget 127.0.0.1 --2019-03-01 01:14:36-- http://127.0.0.1/ 正在连接 127.0.0.1:80... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:612 [text/html] 正在保存至: “index.html” 100%[==========================================================================>] 612 --.-K/s in 0s 2019-03-01 01:14:36 (53.4 MB/s) - 已保存 “index.html” [612/612])
2)也可以使用curl命令检测,如下:
[root@miaopa ~]# curl 127.0.0.1 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
将Nginx添加至service
创建文件:/etc/init.d/nginx
vim /etc/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="/application/nginx/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/application/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
执行授权命令:
1 [root@vast etc]# cd /etc/rc.d/init.d/ 2 [root@vast init.d]# chmod +x nginx 3 [root@vast init.d]# /sbin/chkconfig --level 345 nginx on
服务操作:
[root@vast ~]# service nginx stop 停止 nginx: [确定] [root@vast ~]# service nginx start 正在启动 nginx: [确定] [root@vast ~]# service nginx reload nginx: the configuration file /application/nginx/conf/nginx.conf syntax is ok nginx: configuration file /application/nginx/conf/nginx.conf test is successful 重新载入 nginx: [确定] [root@vast ~]# service nginx status nginx (pid 8659 8636) 正在运行...
至此,nginx编译安装完成。