菜鸟nginx源码剖析
菜鸟nginx源码剖析 配置与部署篇(一) 手把手配置nginx “I love you”
菜鸟nginx源码剖析系列文章解读
Author:Echo Chen(陈斌)
Email:chenb19870707@gmail.com
Date:Nov 7th, 2014
还记得在前几年的CSDN泄漏账号事件中,统计发现程序员的账号中含有love的最多,这里我也俗套下,在这篇文章中将讲解如何 一步一步实用Nginx在一台机器上搭建一个最简单的显示“I love you”的Web服务器,大家一起动手尝试吧。
1.Nginx 程序包
目前nginx最新的开发版本为1.7.7:
- Linux:nginx-1.7.7.tar.gz
- Windows:nginx-1.7.7.zip
稳定版本为1.6.2:
- Linux:nginx-1.6.2.tar.gz
- Windows:nginx-1.6.2.zip
大家可以根据自己的操作系统和喜好选择程序包来实现,这里以nginx-1.7.7.tar.gz 在CentOs 6.4操作系统下为例。
2.Nginx下载解压、安装
下载和解压,这里以nginx-1.7.7.tar.gz 在CentOs 6.4操作系统下为例:
1: wget http://nginx.org/download/nginx-1.7.7.tar.gz2: tar zxvf nginx-1.7.7.tar.gz
但是下载解压完不要急着安装,因为 Nginx 依赖很多软件(gcc、g++、make、
libz-dev、libbz2-dev、libreadline-dev),我们假设您的 Linux 环境是“纯净”的,所以下面我们就来安装这些依赖包。请按照如下步骤安装:1: yum install gcc -y2: yum install g++ -y3: yum install make -y4: yum install zlib-dev* -y5: yum install bzip2-dev* -y6: yum install readline-devel -y这是一些基本的软件,另外还有 PCRE 要安装。PCRE 是“Perl Compatible Regular Expressions”的缩写,是一个正则表达式库。下载、解压并安装 PCRE:
1: wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz2: tar -zxvf pcre-8.36.tar.gz3: cd pcre-8.36.tar.gz4: ./configure5: make6: make install
好了,这下可以安装我们的nginx了
1: tar -zxvf nginx-1.7.7.tar.gz2: cd nginx-1.7.73: ./configure4: sudo make5: sudo make install
3.Nginx 配置文件
按照上面的操作,Nginx 就已经安装完了。因为我们使用的是默认的 configure,所以会安装到
/usr/local/nginx目录。相应的配置文件是/usr/local/nginx/conf/nginx.conf。我们打开配置文件,看到结构形如:1: ...2: #工作模式与连接数上限3: events4: {5: #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。6: use epoll;7: #单个进程最大连接数(最大连接数=连接数*进程数)8: worker_connections 65535;9: }10:11: #设定http服务器,利用它的反向代理功能提供负载均衡支持12: http13: {14: ...15: #第一个虚拟服务器16: server {17: #侦听192.168.8.x的80端口18: listen 80;19: server_name 192.168.8.x;20: }21: }22:
其中
events模块表示工作模式与链接数上限,http模块的作用为设定http服务器,server模块表示虚拟服务器,这里只是简要列出最简单的配置,如果有需要对配置进行进一步了解,可以参考《Nginx配置文件nginx.conf中文详解》。
4.Nginx 一个简单配置的编写
建立一个/root/test_space目录,用来存储我们的测试页面。再直接在 Nginx 的默认配置文件/usr/loca/nginx/conf/nginx.conf中修改,在http中增加一个server模块,如下:
1: server {2: listen 8011;3: server_name localhost;4: charset utf-8;5: location / {6: alias /root/test_space/;7: }8: }
其中
listen表示监听的端口号,sever_name则是web服务器的名称(可以是域名、host 或 IP 地址),charset指定编码字符集,这里的location则通过alias指定了web服务的文件目录。
5.Nginx启动
1: /usr/local/nginx/sbin/nginx
2: s -ef | grep nginx
显示如下则启动成功:
6.测试
在/root/test_space下建立如下html文件:
1: <html>2: <head></head>3: <body>I love you!<body>4: </html>
-
Echo Chen:Blog.csdn.net/chen19870707
菜鸟nginx源码剖析的更多相关文章
- 菜鸟nginx源码剖析 框架篇(一) 从main函数看nginx启动流程(转)
俗话说的好,牵牛要牵牛鼻子 驾车顶牛,处理复杂的东西,只要抓住重点,才能理清脉络,不至于深陷其中,不能自拔.对复杂的nginx而言,main函数就是“牛之鼻”,只要能理清main函数,就一定能理解其中 ...
- 菜鸟nginx源码剖析数据结构篇(十一) 共享内存ngx_shm_t[转]
菜鸟nginx源码剖析数据结构篇(十一) 共享内存ngx_shm_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn ...
- 菜鸟nginx源码剖析数据结构篇(十) 自旋锁ngx_spinlock[转]
菜鸟nginx源码剖析数据结构篇(十) 自旋锁ngx_spinlock Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...
- 菜鸟nginx源码剖析数据结构篇(九) 内存池ngx_pool_t[转]
菜鸟nginx源码剖析数据结构篇(九) 内存池ngx_pool_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn. ...
- 菜鸟nginx源码剖析数据结构篇(八) 缓冲区链表ngx_chain_t[转]
菜鸟nginx源码剖析数据结构篇(八) 缓冲区链表 ngx_chain_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.c ...
- 菜鸟nginx源码剖析数据结构篇(七) 哈希表 ngx_hash_t(下)[转]
菜鸟nginx源码剖析数据结构篇(七) 哈希表 ngx_hash_t(下) Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.c ...
- 菜鸟nginx源码剖析数据结构篇(六) 哈希表 ngx_hash_t(上)[转]
菜鸟nginx源码剖析数据结构篇(六) 哈希表 ngx_hash_t(上) Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.c ...
- 菜鸟nginx源码剖析数据结构篇(五) 基数树 ngx_radix_tree_t[转]
菜鸟nginx源码剖析数据结构篇(五) 基数树 ngx_radix_tree_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blo ...
- 菜鸟nginx源码剖析数据结构篇(四)红黑树ngx_rbtree_t[转]
菜鸟nginx源码剖析数据结构篇(四)红黑树ngx_rbtree_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn ...
随机推荐
- angularJs实现级联操作
angular实现级联非常的方便比起传统的jq和js来说,一般我们肯定是从后台获取一个list,然后生成一个下拉框,然后选中一个下拉框,得到id,再得到下一个list. 这些angular都给我做好了 ...
- linux离线部署redis及redis.conf详解
一.离线部署redis 由于博主部署的虚拟机没有网络也没有gcc编译器,所以就寻找具备gcc编译器的编译环境把redis编译安装好,Copy Redis安装目录文件夹到目标虚拟机的目录下.copy时r ...
- iOS 在viewDidLayoutSubviews自动布局crash问题
1 viewDidLayoutSubviews改成viewWillLayoutSubviews在iOS7上就不会crash了2 viewDidLoad中还需要设置self.edgesForExtend ...
- HDU 1501 Zipper 字符串
题目大意:输入有一个T,表示有T组测试数据,然后输入三个字符串,问第三个字符串能否由第一个和第二个字符串拼接而来,拼接的规则是第一个和第二个字符串在新的字符串中的前后的相对的顺序不能改变,问第三个字符 ...
- expect学习笔记及实例详解【转】
1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示:1.1 首行加上/usr/bin/expect1.2 spawn: 后面加上需要执行的shell命令,比如说sp ...
- elasticsearch常见异常及解决办法
报错信息:Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 20602552 ...
- Centos 6.9 安装Rabbitmq
一.安装Rabbitmq 首先安装编译工具 yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel Er ...
- makefile 中 foreach
四.foreach 函数 foreach函数和别的函数非常的不一样.因为这个函数是用来做循环用的,Makefile中的foreach函数几乎是仿照于Unix标准Shell(/bin/sh)中的for语 ...
- LeetCode(24): 两两交换链表中的节点
Medium! 题目描述: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说 ...
- java 异常的限制
一. 1.) 在覆盖方法的时候,只能抛出在基类方法的异常说明里列出的那些异常 2.) 在基类构造器声明的异常,在子类必须抛出,子类的构造器可以抛出任何异常,但是必须抛出基类构造器的异常 3.) 在基类 ...