美国主机服务器租用公司告诉你Linux系统下源码编译方法
在设计的最初阶段,nginx的主要着眼点就是其高机能以及对物理计较资源的高密度操作,因此其回收了差异的架构模子。受开导于多种操纵系统设计中基于“事件”的高级处理惩罚机制,nginx回收了模块化、事件驱动、异步、单线程及非阻塞的架构,并大量回收了多路复用及事件通知机制。在nginx中,毗连请求由为数不多的几个仅包括一个线程的历程worker以高效的回环(run-loop)机制举办处理惩罚,而每个worker可以并行处理惩罚数千个的并发毗连及请求。
假如负载以CPU麋集型应用为主,如SSL或压缩应用,则worker数应与CPU数沟通;假如负载以IO麋集型为主,如响应大量内容给客户端,则worker数应该为CPU个数的1.5或2倍。
Nginx会按需同时运行多个历程:一个主历程(master)和几个事情历程(worker),设置了缓存时还会有缓存加载器历程(cache loader)缓和存打点器历程(cache manager)等。所有历程均是仅含有一个线程,并主要通过“共享内存”的机制实现历程间通信。主历程以root用户身份运行,而worker、cache loader和cache manager均应以非特权用户身份运行。
主历程主要完成如下事情:
1. 读取并验正设置信息;
2. 建设、绑定及封锁套接字;
3. 启动、终止及维护worker历程的个数;
4. 无须中止处事而从头设置事情特性;
5. 节制非间断式措施进级,启用新的二进制措施并在需要时回滚至老版本;
6. 从头打开日志文件,实现日志转动;
7. 编译嵌入式perl剧本;
worker历程主要完成的任务包罗:
1. 吸收、传入并处理惩罚来自客户端的毗连;
2. 提供反向署理及过滤成果;
3. nginx任何能完成的其它任务;
cache loader历程主要完成的任务包罗:
1. 查抄缓存存储中的缓存工具;
2. 利用缓存元数据成立内存数据库;
cache manager历程的主要任务:
1. 缓存的失效及逾期检讨;
Nginx的设置有着几个差异的上下文:main、http、server、upstream和location(尚有实现邮件处事反向署理的mail)。设置语法的名目和界说方法遵循所谓的C气势气魄,因此支持嵌套,尚有着逻辑清晰并易于建设、阅读和维护等优势。
Nginx的代码是由一个焦点和一系列的模块构成, 焦点主要用于提供Web Server的根基成果,以及Web和Mail反向署理的成果;还用于启用网络协议,建设须要的运行时情况以及确保差异的模块之间滑腻地举办交互。不外,大多跟协议相关的成果和某应用特有的成果都是由nginx的模块实现的。这些成果模块大抵可以分为事件模块、阶段性处理惩罚器、输出过滤器、变量处理惩罚器、协议、upstream和负载平衡几个种别,这些配合构成了nginx的http成果。事件模块主要用于提供OS独立的(差异操纵系统的事件机制有所差异)事件通知机制如kqueue或epoll等。协议模块则认真实现nginx通过http、tls/ssl、smtp、pop3以及imap与对应的客户端成立会话。
在nginx内部,历程间的通信是通过模块的pipeline或chain实现的;换句话说,每一个成果或操纵都由一个模块来实现。譬喻,压缩、通过FastCGI或uwsgi协议与upstream处事器通信,新加坡电信服务器 马来西亚服务器,以及与memcached成立会话等。
# yum groupinstall -y "Development Tools" "Server Platform Development"
# yum install -y openssl-devel pcre-devel
首先添加用户nginx,实现以之运行nginx处事历程:
# groupadd -r nginx
# useradd -r -g nginx nginx
# tar xf nginx-1.4.7.tar.gz
# cd nginx-1.4.7
接着开始编译和安装:
# ./configure
--prefix=/usr
--sbin-path=/usr/sbin/nginx
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-log-path=/var/log/nginx/access.log
--pid-path=/var/run/nginx/nginx.pid
--lock-path=/var/lock/nginx.lock
--user=nginx
--group=nginx
--with-http_ssl_module
--with-http_flv_module
--with-http_stub_status_module
--with-http_gzip_static_module
--http-client-body-temp-path=/var/tmp/nginx/client/
--http-proxy-temp-path=/var/tmp/nginx/proxy/
--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/
--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi
--http-scgi-temp-path=/var/tmp/nginx/scgi
--with-pcre
# make && make install