(转)linux上nginx源码编译安装

亲测有效;

转:  https://segmentfault.com/a/1190000007116797https://segmentfault.com/a/1190000007116797

nginx服务器详细安装过程(使用yum 和 源码包两种安装方式,并说明其区别)

正在上传…重新上传取消​fuyi501发布于 2016-10-10

网上看别人写的 nginx 服务器配置 ,有的是源码包安装的,有的时 yum 安装的。如果是新手,可能会有疑问,这两种安装方式有什么区别?我应该使用哪种方式?系统里可以两个都安装可以吗?怎么卸载?等等问题,那么在这里,我做下总结,详细介绍下这两种方式。

yum 和 源码包 安装的 区别

这里先说明下 yum 和 源码包 安装的 区别:

yum 安装是在线安装,好处是:安装方式简单,不易出错;
源码包 安装是先将 nginx 的源码下载下来,在自己的系统里编译生成可执行文件,然后执行,好处是:因为是在自己的系统上编译的,更符合自己系统的性能,也就是说在自己的系统上执行 nginx 服务性能效率更好。

安装路径不同

他们之间最大的区别是 :安装位置不同

yum 在线安装会将 nginx 的安装文件放在系统的不同位置,可以通过命令 rpm -ql nginx 来查看安装路径,如下所示:

➜  ~ rpm -ql nginx
/etc/logrotate.d/nginx
/etc/nginx
/etc/nginx/conf.d
/etc/nginx/conf.d/default.conf
/etc/nginx/conf.d/ssl.conf
/etc/nginx/conf.d/virtual.conf
/etc/nginx/fastcgi.conf
/etc/nginx/fastcgi.conf.default
/etc/nginx/fastcgi_params
/etc/nginx/fastcgi_params.default
/etc/nginx/koi-utf
/etc/nginx/koi-win
/etc/nginx/mime.types
/etc/nginx/mime.types.default
/etc/nginx/nginx.conf
/etc/nginx/nginx.conf.default
/etc/nginx/scgi_params
/etc/nginx/scgi_params.default
/etc/nginx/uwsgi_params
/etc/nginx/uwsgi_params.default
/etc/nginx/win-utf
/etc/rc.d/init.d/nginx
/etc/sysconfig/nginx
/usr/lib/perl5/vendor_perl/auto/nginx
/usr/lib/perl5/vendor_perl/auto/nginx/nginx.so
/usr/lib/perl5/vendor_perl/nginx.pm
/usr/sbin/nginx
/usr/share/doc/nginx-1.0.15
/usr/share/doc/nginx-1.0.15/CHANGES
/usr/share/doc/nginx-1.0.15/LICENSE
/usr/share/doc/nginx-1.0.15/README
/usr/share/man/man3/nginx.3pm.gz
/usr/share/man/man8/nginx.8.gz
/usr/share/nginx/html/404.html
/usr/share/nginx/html/50x.html
/usr/share/nginx/html/index.html
/usr/share/nginx/html/nginx-logo.png
/usr/share/nginx/html/poweredby.png
/usr/share/vim/vimfiles/ftdetect/nginx.vim
/usr/share/vim/vimfiles/indent/nginx.vim
/usr/share/vim/vimfiles/syntax/nginx.vim
/var/lib/nginx
/var/lib/nginx/tmp
/var/log/nginx

卸载的时候,只能通过 命令来卸载,因为我们不可能 将这些文件自己手动删除,可以通过命令 rpm -e nginx 来卸载,这个命令一般不会报错,因为 nginx 不与其他的包有依赖关系,如果提示关于 依赖包的问题 ,可以尝试 rpm -e --nodeps nginx 来卸载,这个命令相当于强制卸载,不考虑依赖问题。

源码包 安装他的所有文件(包括配置文件,库文件,资源文件等)都在同一个目录下,我们想卸载的时候,直接将这个文件删除就可以,不会有任何垃圾文件存在。
通过源码包编译安装的软件,通常都放在 /usr/local/包名 路径下。

启动方式不同

yum 安装 nginx,我们可以通过 系统服务命令 service 来启动或停止

service nginx start #启动 nginx 服务service nginx stop #停止 nginx 服务service nginx restart #重启 nginx 服务

源码包 安装 nginx 启动的时候不能使用 service 来启动,需要执行 nginx 安装目录下的 sbin 目录下的 nginx 可执行程序才行,如下(我的 nginx 安装在 /usr/local/webserver/ 目录下)

➜  ~ /usr/local/webserver/nginx/sbin/nginx           #启动 nginx 服务
➜  ~ /usr/local/webserver/nginx/sbin/nginx -s stop   #停止 nginx 服务

或者 直接进入安装目录 ,执行 ./nginx 也可以,这两种方式其实是一样的,. 表示当前目录

➜  ~ cd /usr/local/webserver/nginx/sbin 
➜  sbin ls
nginx
➜  sbin ./nginx           #启动 nginx 服务
➜  sbin ./nginx -s stop   #停止 nginx 服务

注意:在自己的系统中只用选择一种安装方式即可,yum 安装的 nginx 版本可能不是最新的,可以通过 源码包 安装最新的,但系统中只要一种就可以,如果你想安装两个安装也可以,但是他们监听的端口都是 80 端口,每次只能启动一个

好,先讲了区别,下面来看一下安装方式

yum 安装 nginx

安装

使用 yum 安装是在线安装,直接使用命令 yum -y install nginx 安装即可

➜  ~ yum -y install nginx
已加载插件:fastestmirror, security
设置安装进程
Loading mirror speeds from cached hostfile
解决依赖关系
--> 执行事务检查
---> Package nginx.i686 0:1.0.15-12.el6 will be 安装
--> 完成依赖关系计算依赖关系解决========================================================================================================================================软件包                        架构                         版本                                     仓库                          大小
========================================================================================================================================
正在安装:nginx                         i686                         1.0.15-12.el6                            epel                         410 k事务概要
========================================================================================================================================
Install       1 Package(s)总下载量:410 k
Installed size: 1.1 M
下载软件包:
nginx-1.0.15-12.el6.i686.rpm                                                                                     | 410 kB     00:00     
运行 rpm_check_debug 
执行事务测试
事务测试成功
执行事务
Warning: RPMDB altered outside of yum.正在安装   : nginx-1.0.15-12.el6.i686                                                                                             1/1 Verifying  : nginx-1.0.15-12.el6.i686                                                                                             1/1 已安装:nginx.i686 0:1.0.15-12.el6                                                                                                            完毕!

到这里就安装完成了,是不是很简单。

启动 nginx 服务

➜  ~ service nginx start
Starting nginx:                                            [  OK  ]

停止 nginx 服务

➜  ~ service nginx stop 
Stopping nginx:                                            [  OK  ]

重启 nginx 服务

➜  ~ service nginx restart
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]

启动后 ,在浏览器中 输入服务器的 ip 地址,就可以看到

到这里 yum 安装 nginx 就完成了


源码包 安装 nginx(亲测有效)

安装编译

我的系统 centos 6.7 32位,首先安装缺少的依赖包:

yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

从 http://nginx.org/en/download.... 下载稳定版 nginx-1.10.1.tar.gz ,下载的压缩文件 放在任意地方都可以,但是建议放在 /usr/local/src 或者 /root/ 下,/usr/local/src 就是系统专门给用户分配的放 源码的目录,/root/ 是我们默认操作的目录,所以也可以放在这里。我就是下载放在 /root/ 目录下的。

下载可以通过命令获取:

wget http://nginx.org/download/nginx-1.10.1.tar.gz

解压缩:

tar -zxvf nginx-1.10.1.tar.gz

解压缩后,可以看到 nginx-1.10.1 目录,然后进入这个目录

➜  ~ ls
anaconda-ks.cfg  install.log  install.log.syslog  nginx-1.10.1  nginx-1.10.1.tar.gz 
➜  ~ cd nginx-1.10.1 

在 nginx-1.10.1 目录下执行 配置 和 make 命令

➜  nginx-1.10.1 ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre➜  nginx-1.10.1 make && make install

常用编译选项说明

这段说明,参考自:https://segmentfault.com/a/11...

  • --prefix=PATH : 指定 nginx 的安装目录。默认 /usr/local/nginx,我的是 /usr/local/webserver/nginx

  • --conf-path=PATH : 设置nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为conf/nginx.conf

  • --user=name : 设置nginx工作进程的用户。安装完成后,可以随时在nginx.conf配置文件更改user指令。默认的用户名是nobody--group=name类似

  • --with-pcre : 设置PCRE库的源码路径,如果已通过yum方式安装,使用--with-pcre自动找到库文件。使用--with-pcre=PATH时,需要从PCRE网站下载pcre库的源码(8.39)并解压,指定 pcre 的源码路径 ,比如:--with-pcre=/root/pcre-8.39/。perl正则表达式使用在location指令和 ngx_http_rewrite_module模块中。

  • --with-zlib=PATH : 指定 zlib(版本1.1.3 - 1.2.5)的源码解压目录。在默认就启用的网络传输压缩模块ngx_http_gzip_module时需要使用zlib 。

  • --with-http_ssl_module : 使用https协议模块。默认情况下,该模块没有被构建。前提是opensslopenssl-devel已安装

  • --with-http_stub_status_module : 用来监控 Nginx 的当前状态

  • --with-http_realip_module : 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的IP地址

  • --add-module=PATH : 添加第三方外部模块,如nginx-sticky-module-ng或缓存模块。每次添加新的模块都要重新编译(Tengine可以在新加入module时无需重新编译)

启动 停止 nginx

使用 源码包 安装 nginx ,启动时需要使用绝对路径来执行,如下:

➜  ~ /usr/local/webserver/nginx/sbin/nginx           #启动 nginx 服务
➜  ~ /usr/local/webserver/nginx/sbin/nginx -s stop   #停止 nginx 服务

启动 nginx 服务后,可以通过 ps -aux | grep nginx 查看进程

➜  ~ /usr/local/webserver/nginx/sbin/nginx           #启动 nginx 服务
➜  ~ ps -aux | grep nginx
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root      9628  0.0  0.1  15292  1500 ?        Ss   11:17   0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     9631  0.0  0.2  15448  2312 ?        S    11:17   0:00 nginx: worker process                   
root     13158  0.0  0.0   6048   788 pts/1    S+   12:12   0:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn nginx

启动后 ,在浏览器中 输入服务器的 ip 地址,就可以看到

到这里 源码包 安装 nginx 就完成了

可以看出 两个欢迎页面是不同的,这个主要是版本不同的原因。

结语

这里讲了 使用 yum 和 源码包 安装 nginx 的详细过程,如果想了解 yum 和 源码包 安装软件的其他详细知识,可以看我的另外一篇博文 《Linux 软件安装管理》。

本文中如有纰漏,或者你有什么问题,都可以提出来,谢谢~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329984.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客网JAVA专项联系共899题--个人记录学习经历

总览 共刷900题 其中也有许多知识点是未曾涉足的,但大部分还是java的基础。 基本数据 正确题数:正确率百分之67,即:对了603题; 时间:5天(每天4小时左右) 错题: 收藏数…

ffmpeg中文开发手册_快速调用复杂命令,支持中文注释,命令行备忘工具navi两天就火了...

晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI刚学的一句新命令,才用完就忘了用法?通常情况下,命令后加一句—help就行了。但是,命令的帮助文档往往内容太太太太多了,在里面找到自己关心的部分实在太难了。查找出来的…

用python绘制图形_使用Python的turtle画炫酷图形

例子一: import turtle t turtle.Pen() turtle.bgcolor("black") sides6 colors["red","yellow","green","blue","orange","purple"] for x in xrang(360): t.pencolor(colors[x%sides]) t…

leetcode初级算法1.删除排序数组中的重复项

leecode初级算法1.删除排序数组中的重复项 仅为个人刷题记录&#xff0c;不提供解题思路 题解与收获 class Solution {public int removeDuplicates(int[] nums) {int n nums.length;if (n 0) {return 0;}int fast 1, slow 1;while (fast < n) {if (nums[fast] ! num…

(转)mybatis热部署加载*Mapper.xml文件,手动刷新*Mapper.xml文件

转自&#xff1a; https://blog.csdn.net/LOVELONG8808/article/details/78738086 由于项目已经发布到线上&#xff0c;要是修改一个Mapper.xml文件的话&#xff0c;需要重启整个服务&#xff0c;这个是很耗时间的&#xff0c;而且在一段时间内导致服务不可用&#xff0c;严重…

图解HashMap和HashSet的内部工作机制

转载自 图解HashMap和HashSet的内部工作机制HashMap 和 HashSet 内部是如何工作的&#xff1f;散列函数&#xff08;hashing function&#xff09;是什么&#xff1f; HashMap 不仅是一个常用的数据结构&#xff0c;在面试中也是热门话题。 Q1. HashMap 如何存储数据&#xff1…

window location href 手机端无法跳转_Window对象在前端领域的角色

特殊的window提起window&#xff0c;在网页当中很常见&#xff0c;比如像这样&#xff1a;window.onloadfunction(){ //执行函数体 }这段代码的意思是当网页内容加载完成后要做什么。在js的领域&#xff0c;window对象有着双重角色&#xff0c;既是用来访问浏览器窗口的接口&am…

leetcode初级算法2.旋转数组

leecode初级算法2.旋转数组 仅为个人刷题记录&#xff0c;不提供解题思路 题解与收获 我自己的解法&#xff1a; public static void rotate(int[] nums, int k) {int move k % nums.length;Stack<Integer> stack new Stack<>();if(move 0){return;}else {f…

java运行环境变量及自定义变量

【README】 本文主要介绍java运行环境变量的获取&#xff0c;如何读取 env.properties 文件并将自定义变量写入到系统变量&#xff1b; 【1】System.getenv() 获取环境变量 public static void main1() {Map<String, String> envMap System.getenv();envMap.entrySet(…

Java HashSet和HashMap源码剖析

转载自 Java HashSet和HashMap源码剖析总体介绍 之所以把HashSet和HashMap放在一起讲解&#xff0c;是因为二者在Java里有着相同的实现&#xff0c;前者仅仅是对后者做了一层包装&#xff0c;也就是说HashSet里面有一个HashMap&#xff08;适配器模式&#xff09;。因此本文将重…

怎么把页面按比例缩小_meta viewport 是做什么用的,怎么写?

前置知识&#xff08;有助于viewport的理解&#xff09;李明&#xff1a;设备像素、设备独立像素、CSS像素、分辨率、PPI、devicePixelRatio​zhuanlan.zhihu.com移动端的问题屏幕窄&#xff0c;一般来说设备独立像素不超过400px。比如把网站侧边栏宽度设置为10%&#xff0c;这…

(转)java动态代理与aop

转自&#xff1a; Java 动态代理与AOP - 如果的事 - 博客园动态代理与AOP 代理模式 代理模式给某一个目标对象(target)提供代理对象(proxy)&#xff0c;并由代理对象控制对target对象的引用。 模式图&#xff1a; 代理模式中的角色有&#xff1a; 抽象对象角色(Abstrachttps://…

ConcurrentHashMap的红黑树实现分析

转载自 ConcurrentHashMap的红黑树实现分析红黑树 红黑树是一种特殊的二叉树&#xff0c;主要用它存储有序的数据&#xff0c;提供高效的数据检索&#xff0c;时间复杂度为O(lgn)&#xff0c;每个节点都有一个标识位表示颜色&#xff0c;红色或黑色&#xff0c;有如下5种特性&a…

leetcode初级算法3.存在重复元素

leetcode初级算法3.存在重复元素 仅为个人刷题记录&#xff0c;不提供解题思路 题解与收获 我的解法&#xff1a; Arrays.sort(nums);for(int i 0; i < nums.length-1; i){if(nums[i] nums[i1]){return true;}}return false;官方题解&#xff1a; public boolean con…

sql server累计求和函数_SQL基础--SQL高级功能

一.窗口函数有什么用&#xff1f;在日常工作中&#xff0c;经常会遇到需要在每组内排名&#xff0c;比如下面的业务需求&#xff1a;排名问题&#xff1a;每个部门按业绩来排名topN问题&#xff1a;找出每个部门排名前N的员工进行奖励面对这类需求&#xff0c;就需要使用sql的高…

(转)【SpringMvc】如何使用form发送PUT和DELETE请求

转自&#xff1a; https://blog.csdn.net/cockroach02/article/details/82194126https://blog.csdn.net/cockroach02/article/details/82194126 一、当前现状 浏览器使用form提交信息的时候只支持GET和POST&#xff0c;如果需要在浏览器上使用PUT和DELETE请求方式的话&#…

leetcode初级算法4.只出现一次的数字

leetcode初级算法4.只出现一次的数字 仅为个人刷题记录&#xff0c;不提供解题思路 题解与收获 我的解法&#xff1a; public static int singleNumber(int[] nums) {if(nums.length 1){return nums[0];}Arrays.sort(nums);int slow 0;int fast 1;while(fast < nums.…

集合总结(Collection)

转载自 集合总结(Collection) 最近项目上线完&#xff0c;闲来无事&#xff0c;整理了关于集合相关对比&#xff0c;具体详见以下几点&#xff1a;1.ArrayList和Vector区别&#xff1a;这两个类都实现了List接口(List接口继承了Collection接口)&#xff0c;他们都是有序集合&am…

springboot接收浏览器发送delete请求( method not allowed 405解决方法)

【README】 浏览器使用form提交信息的时候只支持GET和POST&#xff0c;如果需要在浏览器上使用PUT和DELETE请求方式的话&#xff0c;只能使用欺骗的方式了&#xff0c;SpringMvc提供了HiddenHttpMethodFilter类来提供支持&#xff1b; 【1】前端 1&#xff09;list.html <…

tensorflow图形检测_社交距离检测器——Tensorflow检测模型设计

在隔离期间&#xff0c;我花时间在github上探索Tensorflow的大量预训练模型。这样做时&#xff0c;我偶然发现了一个包含25 个带有性能和速度指标的预训练对象检测模型的存储库。拥有一些计算机视觉知识并给出了实际的背景知识&#xff0c;我认为使用其中之一来构建社交隔离应用…