0%

Nginx小试

遇到将单台服务器变成集群的需求,之前一直是运维同学负责部署维护,自己只是使用者的角色,这次我来部署和维护,正好试一试。

介绍:Nginx首先是个服务器,且功能丰富。可以作为HTTP服务器、反向代理服务器和邮件服务器。
常用功能主要有:

  • HTTP代理和反向代理
  • 负载均衡
  • Web缓存

好,大致先有个了解,先让它跑起来再逐步尝试其功能、理解其工作原理。

一、安装

首先说明,下面安装步骤适用于Ubuntu和RedHat系统,笔者亲测。其他系统如要安装本文只做参考。

系统设置

真实的应用中,Linxu有打开文件描述符的限制。

通过命令

1
ulimit -n

可以查看linux系统里打开文件描述符的最大值,一般缺省值是1024,对一台繁忙的服务器来说,这个值偏小。

修改方式:

1
/etc/security/limits.conf

最后一行追加:

1
*                -       nofile           65535

然后重新远程登录,用ulimit -n命令校验,判断是否为65535。

安装依赖

1、GCC

GCC——GNU编译器集合(GCC可以使用默认包管理器的仓库(repositories)来安装,包管理器的选择依赖于你使用的Linux发布版本,包管理器有不同的实现:yum是基于Red Hat的发布版本;apt用于Debian和Ubuntu;yast用于SuSE Linux等等。)

RedHat中安装GCC:

1
yum install gcc

Ubuntu中安装GCC:

1
apt-get install gcc
2、PCRE库

PCRE库(Nginx编译需要PCRE(Perl Compatible Regular Expression),因为Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码,这正是我们需要的理由。)

RedHat中安装PCRE:

1
yum install pcre pcre-devel

Ubuntu中安装PCRE:

1
apt-get install libpcre3 libpcre3-dev
3、zlib库

zlib库(zlib库提供了开发人员的压缩算法,在Nginx的各种模块中需要使用gzip压缩。如同安装PCRE一样,同样需要安装库和它的源代码:zlib和zlib-devel。)

RedHat中安装zlib:

1
yum install zlib zlib-devel

Ubuntu中安装zlib:

1
apt-get install zlib1g zlib1g-dev
4、OpenSSL库

OpenSSL库(在Nginx中,如果服务器提供安全网页时则会用到OpenSSL库,我们需要安装库文件和它的开发安装包(openssl和openssl-devel)。)

RedHat中安装OpenSSL:

1
yum install openssl openssl-devel

Ubuntu中安装OpenSSL:(注:Ubuntu14.04的仓库中没有发现openssl-dev):

1
apt-get install openssl openssl-dev

Tip:上述安装过程中,如果已经安装过了,可以跳过。
如果安装失败,建议自行下载tar.gz然后解压、编译并安装。

安装Nginx

安装了一堆,终于步入正题了~

首先,在网上下载一个nginx.tar.gz的源码。然后操作如下:

1
2
3
4
5
tar -zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0/
./configure
make
make install

正常安装后,在该目录下的objs文件夹下,会产生nginx执行文件。将该文件复制到/usr/sbin/下。

然后可以输入如下命令:

1
2
3
4
5
nginx   //启动nginx

nginx -t //查看相关配置文件

nginx -v //查看版本号

启动成功后,访问

1
localhost:80

就会显示Nginx的欢迎的页面啦,意味着安装成功~

二、 初步使用Nginx

如果要用Nginx进行负载的话,我先给个Nginx配置的Demo,至于每个字段的含义,我会在另一篇Blog再进行阐述。这是在conf文件夹下,nginx.conf的文件的demo。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
user  www-data;  
worker_processes auto;

error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

#gzip on;
upstream defaultServer {
server ip:端口号;
server ip2:端口号2;
}

server {
listen 需要监听的端口号;
server_name 需要监听的域名;
charset utf-8;
location / {
proxy_pass http://defaultServer ;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 100m;
}
}
}

三、常用指令

开启:

1
nginx

关闭:

1
2
ps -ef | grep nginx  //查询nginx主进程的pid
kill -QUIT pid //上个命令获取的pid。此命令是平滑关闭

配置更新,修改nginx.conf后无需重启。

1
nginx -s reload

四、番外

如果你读到这里,终于安装好了!

那么,恭喜你,我其实还有更简单的安装方法~~

在ubuntu系统中,输入

1
sudo apt-get install nginx

完毕!自动安装上述依赖。

别的系统也可以类似在线安装。把apt-get换成yum。

那么我为什么要用如此大的篇幅来阐述如何编译安装而不采用在线安装呢?因为我发现,这种方式没有源代码,意味着无法引入第三方代码来进行重新编译,从而达到扩展的目的。故这种方式,只能用一些原生的功能。

参考&致谢

1、Nginx安装

2、Ubuntu/CentOS 系统上安装与配置Nginx

3、nginx依赖模块pcre、zlib、openssl 安装

觉得不错?