CentOS 6.x 编译安装 nginx

nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev. For a long time, it has been running on many heavily loaded Russian sites including Yandex, Mail.Ru, VK, and Rambler. According to Netcraft, nginx served or proxied 24.68% busiest sites in June 2018. Here are some of the success stories: Dropbox, Netflix,Wordpress.com, FastMail.FM.

摘自 nginx 官网http://nginx.org/en/的一段话,可以看到 nginx 是一个 HTTP 的代理服务器及反向代理服务器,邮件代理服务器,TCP/UDP 代理服务器,负载均衡器等,功能甚是强大。

一、系统环境


OS:CentOS 6.7 x64

Nginx:1.10.2

二、安装 Nginx


1 依赖安装

(1) 安装 gcc

由于是编译安装,因此,需要 gcc 的编译环境,执行如下命令,查看是否已经安装了 gcc

gcc -v

如果没有安装 gcc,执行如下命令安装:

[root@lab1 php]# yum -y install gcc

安装完成后,执行 gcc -v 可以看到版本信息

[root@lab1 php]# gcc -v

Using built-in specs.

Target: x86_64-redhat-linux

Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=[http://bugzilla.redhat.com/bugzilla](http://bugzilla.redhat.com/bugzilla) --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux

Thread model: posix

gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)

(2) 安装 pcre/zlib/openssl

root 用户执行如下命令安装 pcre/zlib/openssl

yum -y install pcre pcre-devel  

yum -y install zlib zlib-devel

yum -y install openssl openssl-devel

注:第(1) (2) 步也可以执行一条综合命令来一起安装

yum -y install gcc zlib zlib-devel pcre pcre-devel openssl openssl-devel

2 安装 Nginx

(1) 下载 nginx 源码

nginx 官方下载地址:

http://nginx.org/download/

此处选择1.10.2 版本, root 用户执行如下命令,下载 nginx 源码包

[root@lab1 nginx]# pwd

/opt/nginx

[root@lab1 nginx]# wget http://nginx.org/download/nginx-1.10.2.tar.gz

注:如果使用其他版本,将上方的 1.10.2 更改为其他版本即可,前提是官方有对应的版本...

(2) 解压

[root@lab1 nginx]# pwd

/opt/nginx

[root@lab1 nginx]# ls

nginx-1.10.2.tar.gz

[root@lab1 nginx]# tar zxf nginx-1.10.2.tar.gz

(3) 编译、安装

root 用户执行如下命令编译 nginx 源码:

[root@lab1 nginx]# cd nginx-1.10.2

[root@lab1 nginx-1.10.2]# pwd

/opt/nginx/nginx-1.10.2

[root@lab1 nginx-1.10.2]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

编译成功:

编译成功

注:

(1) 上面指定了编译目录, --prefix=/usr/local/nginx 表示编译到 /usr/local/nginx 环境,此时并不会生成 /usr/local/nginx 目录。

(2) 如果不指定路径,默认安装在 /usr/local/nginx 中

(3) 安装完成后(make install),可以使用 whereis nginx 来查询安装位置

(4) --with-http_stub_status_module --with-http_ssl_module 表示添加 http status 模块以及 http ssl 模块

root 继续执行如下命令安装:

[root@lab1 nginx-1.10.2]#

[root@lab1 nginx-1.10.2]# pwd

/opt/nginx/nginx-1.10.2

[root@lab1 nginx-1.10.2]# make && make install
安装结果

执行如下命令查看 nginx 安装位置:

[root@lab1 nginx-1.10.2]# whereis nginx

nginx: /usr/local/nginx

至此,nginx 已经成功安装

三、nginx 常用命令


1 测试配置文件

在 nginx 安装路径下的 sbin 中执行 ./nginx -t,进行配置文件测试,如下所示:

[root@lab1 sbin]# pwd

/usr/local/nginx/sbin

[root@lab1 sbin]# ./nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

2 启停命令

启动:安装路径下的 sbin 下执行 ./nginx

[root@lab1 sbin]# pwd

/usr/local/nginx/sbin

[root@lab1 sbin]# ./nginx

停止:安装路径下的 sbin 下执行 ./nginx -s stop 或者 ./nginx -s quit

[root@lab1 sbin]# pwd

/usr/local/nginx/sbin

[root@lab1 sbin]# ./nginx -s stop

[root@lab1 sbin]# ./nginx -s quit

重启:安装路径下的 sbin 下执行 ./nginx -s reload

[root@lab1 sbin]# pwd

/usr/local/nginx/sbin

[root@lab1 sbin]# ./nginx -s reload

平滑重启: kill -HUP [nginx 主进程号]

[root@lab1 sbin]# ps -ef|grep nginx|grep master|awk '{print $2}'|xargs kill -HUP

3 配置防火墙

root 用户执行如下命令,编辑防火墙规则文件

[root@lab1 sbin]# vim /etc/sysconfig/iptables

在 22 端口配置的下方添加如下行:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
防火墙配置

root 用户执行如下命令重启防火墙:

[root@lab1 sbin]# vim /etc/sysconfig/iptables

[root@lab1 sbin]# service iptables restart

iptables: Setting chains to policy ACCEPT: filter          [  OK  ]

iptables: Flushing firewall rules:                         [  OK  ]

iptables: Unloading modules:                               [  OK  ]

iptables: Applying firewall rules:                         [  OK  ]

4 验证 nginx

查看进程:

[root@lab1 sbin]# ps -ef|grep nginx

root       8917      1  0 12:47 ?        00:00:00 nginx: master process ./nginx

nobody     8934   8917  0 12:48 ?        00:00:00 nginx: worker process

root       8990   1477  0 12:51 pts/1    00:00:00 grep nginx

浏览器中输入:

http://192.168.56.130/

如出现以下内容,表示 nginx 运行正常:

访问 nginx

附录一:配置 nginx 环境变量


root 用户编辑系统环境变量文件:

[root@lab1 sbin]# vim /etc/profile

在文件末尾添加如下信息,并保存退出:

##### nginx #####

export NGINX_HOME=/usr/local/nginx

export PATH=$NGINX_HOME/sbin:$PATH

注:

(1) /usr/local/nginx 与安装的 nginx 所在目录保存一致,可以使用 whereis nginx 查看 nginx 的安装目录

root 用户执行如下命令,使环境变量生效:

[root@lab1 sbin]# source /etc/profile

验证:

root 用户执行如下命令,查看 PATH 中是否有 nginx 的目录

[root@lab1 sbin]# echo $PATH

/usr/local/nginx/sbin:/opt/hbase/hbase-1.3.1/bin:/opt/hadoop/hadoop-2.7.4/bin:/opt/storm/apache-storm-1.0.4/bin:/opt/zookeeper/zookeeper-3.4.10/bin:/usr/java/jdk1.8.0_20/bin:/opt/hbase/hbase-1.3.1/bin:/opt/hadoop/hadoop-2.7.4/bin:/opt/storm/apache-storm-1.0.4/bin:/opt/zookeeper/zookeeper-3.4.10/bin:/usr/java/jdk1.8.0_20/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

配置环境变量以后,就可以在任何目录下直接执行 nginx 了

nginx #启动nginx

nginx -s stop    #停止 nginx

nginx -s quit    #停止 nginx

ngins -s reload    #重启 nginx

附录二、开机自启动


添加 rc.local 脚本

root 用户编辑 /etc/rc.local 脚本,并添加如下内容,保存退出:

vi /etc/rc.local

# nginx config

/usr/local/nginx/sbin/nginx

示例:

添加开机启动

注:

(1) /usr/local/nginx/sbin/nginx 该配置与你的 nginx 的安装目录相关,如果你的 nginx 安装在其他目录,那么你需要配置你自己的安装目录下的 sbin/nginx 命令。

(2) rc.local 脚本是在所有其他的初始化脚本执行完成之后才会执行。因此,配置在该脚本中的自启动服务可能有一部分延时。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容