前戏
web 网络服务是一种被动访问的服务程序,既只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的 web 服务器会通过HTTP(超文本传输协议)或 HTTPS(安全超文本传输协议)把请求的内容传输给用户。
目前能够提供 web 网络服务的程序有 IIS(windows 底下的 web 服务器软件)、nginx(Linux 底下新一代高性能的web服务器)、Apache(Linux上个时代的,老企业会选择 apache )等。
Nginx 是俄罗斯人开发的 web 服务程序,Nginx 作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市场,但 Nginx 最终被认可的还是系统资源消耗低且并发能力强。
那 web 服务器和 web 框架的关系是什么呢?
web 服务器 (nginx):接收 HTTP 请求(例如https://www.baidu.com)并返回数据
web 框架 (django):开发 web 应用程序,处理接收到的数据
nginx 的优点
支持高并发,能支持几万并发连接
资源消耗少,在3万并发连接下开启 10 个线程消耗的内存不到 200M
可以做 http 反向代理和负载均衡
支持异步网络 i/o 事件模型 epoll
安装 nginx
nginx 既然有那么多的优点,赶紧让我们使用它吧。在使用之前先来看看如何安装。
最简单的方法当然是使用 yum install nginx了,在安装 redis 的时候,也说了 yum 安装的缺点,所以这里我们使用源码编译安装
1.在使用源码安装时先要解决依赖关系,执行下面的命令解决依赖关系
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
# gcc 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install gcc-c++ # PCRE pcre-devel PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令: yum install -y pcre pcre-devel # zlib zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。 yum install -y zlib zlib-devel
yum -y install openssl openssl-devel # OpenSSL OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。 nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
2.依赖解决了之后,去下载源码包
wget -c https://nginx.org/download/nginx-1.16.1.tar.gz
3.解压缩源码包
tar -zxvf nginx-1.16.1.tar.gz
4.生成 Makefile 文件
进入解压后的目录下面,会有一个 configure 文件,执行生成 Makefile 文件
./configure --prefix=/opt/nginx1-16/ --with-http_ssl_module --with-http_stub_status_module
--prefix指定安装nginx的路径,以及开启模块功能ssl与状态模块功能(这里就能体现出源码安装的好处了),在执行上面的命令时有些提示简单看一下
nginx path prefix: "/opt/nginx1-16/" # nginx的安装路径 nginx binary file: "/opt/nginx1-16//sbin/nginx" # nginx的启动脚本存放路径 nginx modules path: "/opt/nginx1-16//modules" nginx configuration prefix: "/opt/nginx1-16//conf" nginx configuration file: "/opt/nginx1-16//conf/nginx.conf" # nginx的配置文件路径 nginx pid file: "/opt/nginx1-16//logs/nginx.pid" nginx error log file: "/opt/nginx1-16//logs/error.log" nginx http access log file: "/opt/nginx1-16//logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp"
5.编译且编译安装
make && make install
至此我们的 nginx 已经安装成功了,去 /opt/nginx1-16 下面看看都有哪些文件
[root@HH nginx1-16]# ll 总用量 16 drwxr-xr-x 2 root root 4096 10月 4 16:25 conf # 配置文件存放的目录 drwxr-xr-x 2 root root 4096 10月 4 16:25 html # 存放网页根目录的文件夹,存放了index.html **.html **.gif **.jpg drwxr-xr-x 2 root root 4096 10月 4 16:25 logs # 日志目录 drwxr-xr-x 2 root root 4096 10月 4 16:25 sbin # nginx启动脚本目录
启动 nginx 服务
./nginx # 在sbin目录下执行
用浏览器访问服务器的 ip,如果可以看到下面的页面就表示 nginx 服务正常启动了
如果访问不了,查看是否启动,防火墙是否关闭,云服务器的安全组是否开放端口
nginx常用的命令
./sbin/nginx #直接启动nginx ./sbin/nginx -s stop # 停止nginx ./sbin/nginx -s reload #平滑重启(修改了nginx配置文件,不重启服务就加载配置且生效) ./sbin/nginx -t # 检测nginx.conf 配置文件的语法正确性