1.1 NG搭建服务器 与 动态数据处理介绍

                           fastCGI 动态请求数据处理

1. fastcgi安装步骤
(1) ./configure 生成makefile;
(2)在 make运行makefile;sudo make instll 安装即可。 出现错误如下:

image.png

解决方案如下:
找到这个文件,打开,添加头文件:#include<stdio.h>之后: 在make就不会有错了。
image.png

image.png

2. fastcgi 与 cgi区别

fastcgi通过线程来响应请求,而cgi对每个请求生成一个进程。

nginx数据传输过程:user->nginx->本地socket(请求传输)->fastcgi(即进程管理器)->cgi进程。

总结: CGI 就是所谓的短生存期应用程序,FastCGI 就是所谓的长生存期应用程序。FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,不会每次都要花费时间去fork一次。

                                    搭建服务器部分

一. 搭建一个HTTP服务器
目的1: 可获取请求(get)
目的2: 可接受请求的数据,并显示或存储起来(post)
前提: 软件安装完毕。

  1. http简介
http:
有两部分组成: 浏览器发送的“请求消息”; 服务器发送的“应答消息”。
每一部分又有四个组成部分:
    请求消息= 请求行 + 请求头 + 空行 + 请求数据。
    相应消息= 状态行 + 消息报头 + 空行 + 相应正文。

请求行: 请求方法, 请求URL, http, 版本号;
请求头: key/value形式组成,是请求时一些附加信息;
请求体:一般由post请求方法提交,可能时图片,文件,字符串。
响应行:http版本号,状态码, 状态描述;
相应头:为响应报文附加信息;
响应体:返回客户端的正文数据。


image.png

2. 搭建服务器准备

[oracle@localhost conf] which nginx ##查看nginx的目录
/usr/bin/nginx
[oracle@localhost conf] ps -aux|grep nginx ##查看nginx进程是否启动
[oracle@localhost conf] nginx -v ##查看nginx 的版本,不需要root权限
nginx version: nginx/1.10.1
[oracle@localhost conf] nginx -t ##查看nginx.conf配置文件是否正常
nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (13: Permission denied) ##错误:需要root权限。
[oracle@localhost conf] sudo nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

(1) 启动服务器:测试默认的静态访问

采用默认配置文件,启动nginx:
[oracle@localhost conf] sudo nginx ##启动
[oracle@localhost conf] ps -aux|grep nginx ##查看进程(daemon on )守护进程
root 17714 0.0 0.0 27040 1096 ? Ss 13:19 0:00 nginx: master process nginx
nobody 17715 0.0 0.0 27460 1696 ? S 13:19 0:00 nginx: worker process
oracle 17717 0.0 0.0 103248 852 pts/0 S+ 13:19 0:00 grep nginx
[oracle@localhost conf]sudo netstat -ntlp ##查看nginx监听的端口


图片.png

由上图可知,nginx的pid为17714,监视两个端口:http的80,https的443.

测试静态访问:


1.PNG

2.PNG

注: 由于http 与 https都使用的默认端口,所以访问时不需要加上端口。

(2) 访问nginx Web页面实现用户认证: 使用 httpd-tools

htpasswd -c /usr/local/nginx/pass tom
注: pass 为密码文件, oracle 为用户。


图片.png

修改nginx.conf文件,再http的server中添加认证:并测试conf文件
auth_basic "Input Password:"; ##认证提示符
auth_basic_user_file "/usr/local/nginx/pass"; ##认证密码文件


图片.png

使用: sudo nginx -t ##测试一下conf文件

最后:重新加载配置文件,并测试:
[oracle@localhost conf] sudo nginx -s reload
结果: 感觉没什么区别啊 ???

(3) 设置图片服务器

在nginx安装目录下的 html/image/下放置图片资源:
修改配置文件:如下


图片.png

访问结果如下:


3.PNG

4.PNG

(4) 实现负载均衡《需要多台服务器》 : 先略

3. 搭建可处理动态数据的HTTP服务器
先略。

二. 搭建一个https 服务器: 目的:同上
加密算法一般分为对称算法、非对称算法、信息摘要。
对称算法有:AES、DES,主要应用在单机数据加密。
非对称算法有:RSA、DSA,主要应用在网络数据加密。
信息摘要:MD5、sha256,主要应用在数据完整性校验、数据秒传等

  1. 密钥生成 : HTTPS =HTTP + SSL / TLS
    (1) 双向认证

客户端与服务器建立连接,都生成私钥和公钥(四个秘钥)。
首先:服务器返给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东 西加密,称之为密文,并连并自己的公钥一起返回给服务器;
其次:服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,客户端拿着自己的私钥解密密文,把数据呈现出来。

(2)生成秘钥 (单向认证,两个密钥)
说明:自己创建的秘钥不受浏览器验证。如需要搭建https服务器,需买秘钥。

首先: 决定密钥存目录,一般为/usr/local/nginx/conf/ssl/目录,进入。
其次: 创建服务器证书密钥文件 server.key:
openssl genrsa -des3 -out server.key 1024


image.png

再次: 创建服务器证书的申请文件 server.csr,具体操作见下图
openssl req -new -key server.key -out server.csr


image.png

最后: 生成证书文件server.crt:
openssl x509 -req -days 365 -in server.csr -signkey server.key
-out server.crt

image.png

总结:上面server.key 是服务器证书密钥(私钥)。
上面server.crt 为证书文件(包含公钥,与其他相关信息)

  1. 配置NGINX

修改配置文件,并重启


图片.png

扩展

假如:将密钥放到/usr/local/nginx/conf文件下,使用rsa非对称:
cd /usr/local/nginx/conf
openssl genrsa > cert.key ###生成私钥
openssl req -new -x509 -key cert.key > cert.pem ##生成证书

    server {
        listen       443 ssl;
        server_name  localhost;
        ssl_certificate           cert.pem ; ##证书文件,与配置文件同目录的相对路径
        ssl_certificate_key   cert.key;  ##私钥
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        location / {
             root   html;
             index  index.html index.htm;
         }
}

3. 搭建可处理动态数据的HTTPS服务器

/-----------------------------------------------附录部分------------------------------------------------/

                                          附录1:

yum常用命令
1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅安装指定的软件命令:yum install <package_name>
4.仅更新指定的软件命令:yum update <package_name>
5.列出所有可安裝的软件清单命令:yum list
6.删除软件包命令:yum remove <package_name>
7.查找软件包 命令:yum search <keyword>
8.清除缓存命令:

yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 
清除缓存目录下的软件包及旧的headers。

APT-GET
apt-get,是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。最常用的命令是update(更新) 和install(安装)。
命令:

update - 重新获取软件包列表 
upgrade - 进行更新 
install - 安装新的软件包 
remove - 移除软件包 
autoremove - 自动移除全部不使用的软件包 
purge - 移除软件包和配置文件 
source - 下载源码档案 
build-dep - 为源码包配置编译依赖 
dist-upgrade - 发行版升级
dselect-upgrade - 依照 dselect 的选择更新 
clean - 清除下载的归档文件 
autoclean - 清除旧的的已下载的归档文件 
check - 检验是否有损坏的依赖 

apt-get 常用实例:

apt-cache search packagename 搜索包
apt-cache show packagename 获取包的相关信息大小、版本等
apt-get install packagename 安装包
apt-get install packagename --reinstall 重新安装包
apt-get remove packagename 删除包
apt-get remove packagename --purge 删除包,包括删除配置文件.
apt-get update 更新源
apt-get upgrade 更新已安装的包
apt-get dist-upgrade 升级系统
apt-get dselect-upgrade 使用 dselect 升级
apt-cache depends packagename 了解使用依赖
apt-cache rdepends packagename 是查看该包被哪些包依赖
apt-get build-dep packagename 安装相关的编译环境
apt-get source packagename 下载该包的源代码
apt-get clean 清理无用的包
apt-get autoclean 清理无用的包
apt-get check 检查是否有损坏的依赖

区别: yum 与 apt-get:

rpm包和deb包是两种Linux系统下最常见的安装包格式;rpm包主要应用在RedHat系列包括 Fedora等发行版的Linux系统上,deb包主要应用于Debian系列包括现在比较流行的Ubuntu等发行版上。
如果要安装现成的这两种包的话,安装rpm包的命令是“rpm -参数”,安装deb包的命令是“dpkg -参数”。LINUX人性化的一点不用我们去下载,直接使用相应的命令就可以管理。

yum可以用于运作rpm包,例如在Fedora系统上对某个软件的管理:
安装:yum install <package_name>
卸载:yum remove <package_name>
更新:yum update <package_name>

apt-get可以用于运作deb包,例如在Ubuntu系统上对某个软件的管理:
安装:apt-get install <package_name>
卸载:apt-get remove <package_name>
更新:apt-get update <package_name>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352