Nginx源码学习之编译、构建与安装(cygwin环境)
2014-03-24 22:51
666 查看
转自:http://hi.baidu.com/netpet/item/51aea37806488011d1dcb33f
Nginx介绍:
Nginx ("engine x") 是一个高性能的 HTTP 和
反向代理 服务器,也是一个 IMAP/POP3/SMTP
代理服务器。 Nginx 是由
Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
1.cygwin环境安装
到http://www.cygwin.com/下载setup.exe安装程序,具体安装过程请到google找吧。这里需要注意的是:一定要安装上openssl、pcre与zlib这三个包,因为nginx部分源码需要用到这三个库。
2.nginx编译与构建
到http://nginx.net/下载源代码包(最新稳定版:nginx-0.5.35,测试版:nginx-0.6.25),假设下载下来的源代码包存放在C盘根目录下(例如全路径名为c:\nginx-0.6.25.tar.gz)。
打开cygwin环境,cd到C盘根目录(命令:cd /cygdrive/c),解压源代码包(首先执行命令gzip -d nginx-0.6.25.tar.gz得到nginx-0.6.25.tar文件,然后再执行命令tar xvf nginx-0.6.25.tar),这时应该看到C盘下有一个新目录nginx-0.6.25。cd进去,然后执行configure(命令: /cygdrive/c/nginx-0.6.25/configure --prefix=/cygdrive/c/nginx),得到一Makefile文件与objs子目录下的多个文件;再执行make命令,这时cd进
去objs子目录,然后ls一下,看到有nginx.exe文件,这就是编译构建后生成的nginx程序,接下来就是安装了。
3.nginx安装
在cygwin环境下cd到/cygdrive/c/nginx-0.6.25目录,执行make install命令,这样就可以把nginx安装到c:\nginx目录,这个目录是刚才执行configure时指定的(--prefix= /cygdirve/c/nginx)。
4.nginx运行
在cygwin环境下cd到/cygdrive/c/nginx/sbin目录,运行nginx.exe(命令:/cygdrive/c/nginx/sbin/nginx.exe),不出意外的话,应该会出现一条错误信息:
2008/01/12 16:34:56 [emerg] 2496#0: the maximum number of files supported by select() is 64
,这表示FD_SETSIZE的值比nginx配置文件中worker_connections指令所指定的值小,那么有什么办法解决这个问题呢?
第一种解决方法:把ngx_select_module事件处理模块去掉,通过在执行configure时指定参数—without-select_module。
第二种解决方法:修改nginx的配置文件(c:\nginx\conf\nginx.conf),把这个文件第13行的1024改为64(worker_connections指令的值)。
第三种解决方法:在执行configure时指定额外的编译选项(--with-cc-opt=”-D FD_SETSIZE=2048”),这同样也可以解决上面的问题。
后记:
利用上面方法生成的nginx程序,需要依赖cygwin环境才能运行,那么有什么方法可以不用cygwin环境也能让nginx在Windows下独立运行呢?当前我想到的有两种方法:
第1种:
首先改变执行configure时指定的—prefix=/cygdrive/c/nginx参数为—prefix=.,同时还加上—sbin-path=nginx这个参数,也就是make install时把nginx安装到c:\nginx-\目录下,nginx运行时从当前目录的conf子目录读取配置、写日志到logs子目录。接下来执行configure、make与make install。
然后把nginx运行时所需要用到的DLL找出来,我发现有这几个:cygcrypt-0.dll、cygpcre-0.dll、cygwin1.dll和cygz.dll(这些文件都在cygwin安装目录的bin子目录下);如果启用ssl的话,应该还需要cygssl-.dll和cygcrypto-0.9.8.dll,这个我没有实践过,大家可以试试。接下来把cygcrypt-0.dll、cygpcre-0.dll、cygwin1.dll和cygz.dll拷贝到c:\nginx-0.6.25下,同时在该目录下创建logs子目录。
最后就可以直接双击nginx.exe来运行nginx了。这时打开浏览器,输入地址:http://127.0.0.1/,如果能看到有“Welcome to nginx!”显示出来就表示nginx已经在运行,如果没有的话就打开logs子目录下的error.log文件,看看到底发生了什么错误。
第2种:
编译时指定-mno-cygwin选项,这可以生成不需要其它DLL的nginx.exe文件,不过我还没试成功,具体原因也还没找到,如果你试成功了要告诉我一声哟!
这两种方法都有一个缺点:虽然nginx已经能独立运行了,但要关闭它,还需要打开cygwin环境,然后ps找到nginx主进程的进程ID,kill掉它;当然也可以用任务管理器强制关闭。
不过据我了解在cygwin环境下可以把一个程序编译成Windows服务的,具体怎么做的话要再找找咯!
Nginx介绍:
Nginx ("engine x") 是一个高性能的 HTTP 和
反向代理 服务器,也是一个 IMAP/POP3/SMTP
代理服务器。 Nginx 是由
Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版,但是,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
1.cygwin环境安装
到http://www.cygwin.com/下载setup.exe安装程序,具体安装过程请到google找吧。这里需要注意的是:一定要安装上openssl、pcre与zlib这三个包,因为nginx部分源码需要用到这三个库。
2.nginx编译与构建
到http://nginx.net/下载源代码包(最新稳定版:nginx-0.5.35,测试版:nginx-0.6.25),假设下载下来的源代码包存放在C盘根目录下(例如全路径名为c:\nginx-0.6.25.tar.gz)。
打开cygwin环境,cd到C盘根目录(命令:cd /cygdrive/c),解压源代码包(首先执行命令gzip -d nginx-0.6.25.tar.gz得到nginx-0.6.25.tar文件,然后再执行命令tar xvf nginx-0.6.25.tar),这时应该看到C盘下有一个新目录nginx-0.6.25。cd进去,然后执行configure(命令: /cygdrive/c/nginx-0.6.25/configure --prefix=/cygdrive/c/nginx),得到一Makefile文件与objs子目录下的多个文件;再执行make命令,这时cd进
去objs子目录,然后ls一下,看到有nginx.exe文件,这就是编译构建后生成的nginx程序,接下来就是安装了。
3.nginx安装
在cygwin环境下cd到/cygdrive/c/nginx-0.6.25目录,执行make install命令,这样就可以把nginx安装到c:\nginx目录,这个目录是刚才执行configure时指定的(--prefix= /cygdirve/c/nginx)。
4.nginx运行
在cygwin环境下cd到/cygdrive/c/nginx/sbin目录,运行nginx.exe(命令:/cygdrive/c/nginx/sbin/nginx.exe),不出意外的话,应该会出现一条错误信息:
2008/01/12 16:34:56 [emerg] 2496#0: the maximum number of files supported by select() is 64
,这表示FD_SETSIZE的值比nginx配置文件中worker_connections指令所指定的值小,那么有什么办法解决这个问题呢?
第一种解决方法:把ngx_select_module事件处理模块去掉,通过在执行configure时指定参数—without-select_module。
第二种解决方法:修改nginx的配置文件(c:\nginx\conf\nginx.conf),把这个文件第13行的1024改为64(worker_connections指令的值)。
第三种解决方法:在执行configure时指定额外的编译选项(--with-cc-opt=”-D FD_SETSIZE=2048”),这同样也可以解决上面的问题。
后记:
利用上面方法生成的nginx程序,需要依赖cygwin环境才能运行,那么有什么方法可以不用cygwin环境也能让nginx在Windows下独立运行呢?当前我想到的有两种方法:
第1种:
首先改变执行configure时指定的—prefix=/cygdrive/c/nginx参数为—prefix=.,同时还加上—sbin-path=nginx这个参数,也就是make install时把nginx安装到c:\nginx-\目录下,nginx运行时从当前目录的conf子目录读取配置、写日志到logs子目录。接下来执行configure、make与make install。
然后把nginx运行时所需要用到的DLL找出来,我发现有这几个:cygcrypt-0.dll、cygpcre-0.dll、cygwin1.dll和cygz.dll(这些文件都在cygwin安装目录的bin子目录下);如果启用ssl的话,应该还需要cygssl-.dll和cygcrypto-0.9.8.dll,这个我没有实践过,大家可以试试。接下来把cygcrypt-0.dll、cygpcre-0.dll、cygwin1.dll和cygz.dll拷贝到c:\nginx-0.6.25下,同时在该目录下创建logs子目录。
最后就可以直接双击nginx.exe来运行nginx了。这时打开浏览器,输入地址:http://127.0.0.1/,如果能看到有“Welcome to nginx!”显示出来就表示nginx已经在运行,如果没有的话就打开logs子目录下的error.log文件,看看到底发生了什么错误。
第2种:
编译时指定-mno-cygwin选项,这可以生成不需要其它DLL的nginx.exe文件,不过我还没试成功,具体原因也还没找到,如果你试成功了要告诉我一声哟!
这两种方法都有一个缺点:虽然nginx已经能独立运行了,但要关闭它,还需要打开cygwin环境,然后ps找到nginx主进程的进程ID,kill掉它;当然也可以用任务管理器强制关闭。
不过据我了解在cygwin环境下可以把一个程序编译成Windows服务的,具体怎么做的话要再找找咯!
相关文章推荐
- [转载]Nginx源码学习之编译、构建与安装(cygwin环境)
- Linux(6.4)+Nginx(1.4.1)+Mysql(5.6.12)+Php(5.5.0)源码编译安装 环境介绍
- CentOS 7源码编译安装PHP5.6和Nginx1.7.9及MySQL(搭建LNMP环境)
- 源码编译安装,搭建LNMP环境(Linux+Nginx+MySQL+PHP)
- nginx-linux环境安装-源码编译方式安装
- llinux 环境安装编译 nginx (源码安装包)
- 【服务器环境搭建-Centos】Nginx1.9.9 安装(编译源码)
- 源码安装nginx环境时编译出错
- 关于Nginx服务器搭建,编译源码安装Nginx的环境
- 源码编译安装LAMP环境部署Discuz
- Linux环境下源码编译安装MySQL5.5
- CentOS 6.5 LNMP环境搭建 编译安装Nginx
- centos 6 环境下用maven编译安装hadoop2.7.2源码包
- Linux系统 - 源码编译安装Nginx
- Nginx系统学习篇(3)--linux环境下载安装
- nginx 学习笔记(一)nginx 编译安装
- 使用源码编译安装Nginx服务器
- Android 源码编译环境搭建(64位Ubuntu)各种依赖包安装
- Android 源码的下载和编译环境的安装及编译
- 如何在源码包编译安装的 LEMP 环境下开启 OpenSSL 功能