学校校园网站建设必要性商城网站怎么建
- 作者: 五速梦信息网
- 时间: 2026年03月21日 07:04
当前位置: 首页 > news >正文
学校校园网站建设必要性,商城网站怎么建,定制化网站开发的好处,定制app开发软件目录
- Nginx作为web服务器处理请求
- http协议复习 Get方式提交数据 Post方式提交数据
- fastCGI
3.1 CGI 3.2 fastCGI 3.3 fastCGI和spawn-fcgi安装 1. 安装fastCGI 2. 安装spawn-fcgi 3.4 nginx fastcgi
4其他知识点 - fastCGI环境变量 - fas…目录
- Nginx作为web服务器处理请求
- http协议复习 Get方式提交数据 Post方式提交数据
- fastCGI 3.1 CGI 3.2 fastCGI 3.3 fastCGI和spawn-fcgi安装 1. 安装fastCGI 2. 安装spawn-fcgi 3.4 nginx fastcgi 4其他知识点
- fastCGI环境变量 - fastcgi.conf 2. 客户端使用Post提交数据常用方式
- strtol 函数使用 4linux 搜狗输入法不能使用的的问题 问题 解决方法 5 共享库找不到的问题 1. Nginx作为web服务器处理请求
- 静态请求 客户端访问服务器的静态网页, 不涉及任何数据的处理, 如下面的URL: http://localhsot/login.html 2. 动态请求 客户端会将数据提交给服务器 # 使用 get 方式提交数据得到的 url http: //localhost/login?userzhang3passwd123456age12sexman - http: 协议 - localhost: 域名 - /login: 服务器端要处理的指令 - ? : 连接符 , 后边的内容是客户端给服务器提交的数据 - : 分隔符 动态的 url 如何找服务器端处理的指令 ? - 去掉协议 - 去掉域名 /IP - 去掉端口 - 去掉 ? 和它后边的内容 # 如果看到的是请求行 , 如何找处理指令 ? POST /upload/UploadAction HTTP/1.1 GET /?usernametomphone123emailhello%40qq.comdate2018-01- 01sexmaleclass3ruleon HTTP/1.1 1. 找请求行的第二部分 - 如果是 post, 处理指令就是请求行的第二部分 - 如果是 get, 处理指令就是请求行的第二部分 , ? 以前的内容 2. http协议复习 1. 请求消息 (Request) - 客户端 ( 浏览器 ) 发送给服务器的数据格式。 四部分 : 请求行 , 请求头 , 空行 , 请求数据 请求行 : 说明请求类型 , 要访问的资源 , 以及使用的 http 版本 请求头 : 说明服务器要使用的附加信息 空行 : 空行是必须要有的 , 即使没有请求数据 请求数据 : 也叫主体 , 可以添加任意的其他数据 Get方式提交数据 第一行 : 请求行 第 2-9 行 : 请求头 ( 键值对 ) 第 10 行 : 空行 get 方式提交数据 , 没有第四部分 , 提交的数据在请求行的第二部分 , 提交的数据会全部显示在地址栏中 GET /?usernametomphone123emailhello%40qq.comdate2018-01- 01sexmaleclass3ruleon HTTP/1.1 Host: 192.168.26.52:6789 Connection: keep-alive Cache-Control: max-age0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36 Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,image/apng,/ ;q0.8 Accept-Encoding: gzip, deflate Accept-Language: zh,zh-CN;q0.9,en;q0.8 Post方式提交数据 第一行 : 请求行 第 2 -12 行 : 请求头 ( 键值对 ) 第 13 行 : 空行 第 14 行 : 提交的数据 POST / HTTP/1.1 Host: 192.168.26.52:6789 Connection: keep-alive Content-Length: 84 Cache-Control: max-age0 Upgrade-Insecure-Requests: 1 Origin: null Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36 Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,image/apng,/ ;q0.8 Accept-Encoding: gzip, deflate Accept-Language: zh,zh-CN;q0.9,en;q0.8 usernametomphone123emailhello%40qq.comdate2018-01- 01sexmaleclass3ruleon 2. 响应消息 (Response) - 服务器给客户端发送的数据 四部分 : 状态行 , 消息报头 , 空行 , 响应正文 状态行 : 包括 http 协议版本号 , 状态码 , 状态信息 消息报头 : 说明客户端要使用的一些附加信息 空行 : 空行是必须要有的 响应正文 : 服务器返回给客户端的文本信息 第一行 : 状态行 第 2 -11 行 : 响应头 ( 消息报头 ) 第 12 行 : 空行 第 13-18 行 : 服务器给客户端回复的数据 HTTP/1.1 200 Ok Server: micro_httpd Date: Fri, 18 Jul 2014 14:34:26 GMT /* 告诉浏览器发送的数据是什么类型 / Content-Type: text/plain; charsetiso-8859-1 ( 必选项 ) / 发送的数据的长度 */ Content-Length: 32 Location: url Content-Language: zh-CN Last-Modified: Fri, 18 Jul 2014 08:36:36 GMT Connection: close #include stdio.h int main(void) { printf(hello world!\n); return 0; } 3. http状态码 状态代码有三位数字组成第一个数字定义了响应的类别共分五种类别 : 1xx 指示信息 – 表示请求已接收继续处理 2xx 成功 – 表示请求已被成功接收、理解、接受 3xx 重定向 – 要完成请求必须进行更进一步的操作 4xx 客户端错误 – 请求有语法错误或请求无法实现 5xx 服务器端错误 – 服务器未能实现合法的请求 3. fastCGI
3.1 CGI 通用网关接口 C ommon G ateway I nterface/ CGI 描述了客户端和服务器程序之间传输数据的一种标准 可以 让一个客户端从网页浏览器向执行在网络服务器上的程序请求数据。CGI 独立于任何语言的 CGI 程序可以用 任何 脚本语言 或者是完全独立 编程语言 实现只要这个语言可以在这个系统上运行。 服务器可以解析出来数据但是不能处理里面的数据的内容。 http://localhost/login?userzhang3passwd123456age12sexman 1. 用户通过浏览器访问服务器 , 发送了一个请求 , 请求的 url 如上 2. 服务器接收数据 , 对接收的数据进行解析 3. nginx 对于一些登录数据不知道如何处理 , nginx 将数据发送给了 cgi 程序。 服务器端会创建一个cgi进程 4. CGI 进程执行 加载配置, 如果有需求加载配置文件获取数据 连接其他服务器: 比如数据库验证数据 逻辑处理: 得到结果, 将结果发送给服务器 退出 5. 服务器将 cgi 处理结果发送给客户端 在服务器端 CGI 进程会被频繁的创建销毁 服务器开销大, 效率低 CGI 链接其他服务器的过程。 3.2 fastCGI 快速通用网关接口Fast Common Gateway Interface FastCGI 是 通用网关接口 CGI的改进描述了客户端和服务器程序之间传输数据的一种标准。 FastCGI 致力于减少 Web 服务器 与 CGI 程式 之间互动的开销从而使 服务器 可以同时处理更多的 Web 请求 。与为每个请求创建一个新的进程不同 FastCGI 使用持续的进程来处理一连串的请求。这些进程由FastCGI 进程管理器管理而不是 web 服务器。 fastCGI与CGI的区别: CGI 就是所谓的短生存期应用程序 FastCGI 就是所谓的长生存期应用程序。 FastCGI 像是一个常驻 (long-live) 型的CGI它可以一直执行着不会每次都要花费时间去 fork 一次 http://localhost/login?userzhang3passwd123456age12sexman 1. 用户通过浏览器访问服务器 , 发送了一个请求 , 请求的 url 如上 2. 服务器接收数据 , 对接收的数据进行解析 3. nginx 对于一些登录数据不知道如何处理 , nginx 将数据发送给了 fastcgi 程序 通过本地套接字 网络通信的方式 4. fastCGI 程序如何启动 不是有web 服务器直接启动 通过一个fastCGI 进程管理器启动 5. fastcgi 启动 加载配置 - 可选 连接服务器 - 数据库 循环 服务器有请求 - 处理 将处理结果发送给服务器 本地套接字 网络通信 没有请求 - 阻塞 6. 服务器将 fastCGI 的处理结果发送给客户端 3.3 fastCGI和spawn-fcgi安装 1. 安装fastCGI ./configure make - fcgio.cpp:50:14: error: EOF was not declared in this scope - 没有包含对应的头文件 : - stdio.h - c - cstdio - c 找到 最开始地方包含头文件就可以完成了。 make 之后已经生成了动态库了但是在本地的隐藏文件下面所以需要执行makefile 将这些文件库拷贝对应的库文件下面就可以了。 sudo make install ##将对应的动态库拷贝到对应的系统目录下面去。 2. 安装spawn-fcgi
fastcgi的进程管理器 同上。 下载地址 : http://redmine.lighttpd.net/projects/spawn-fcgi/wiki 安装 ./configure make sudo make install 3.4 nginx fastcgi nginx 不能像 apache 那样直接执行外部可执行程序但 nginx 可以作为代理服务器将请求转发给后端服务器这也是nginx 的主要作用之一。其中 nginx 就支持 FastCGI 代理接收客户端的请求然后将请求转发给后端 fastcgi进程。下面介绍如何使用C/C 编写 cgi/fastcgi 并部署到 nginx 中。通过前面的介绍知道fastcgi 进程由 FastCGI 进程管理器管理而不是 nginx 。这样就需要一个 FastCGI 管理管理我们编写fastcgi 程序。我们使用 spawn-fcgi 作为 FastCGI 进程管理器。 spawn-fcgi是一个通用的 FastCGI 进程管理器简单小巧原先是属于 lighttpd 的一部分后来由于使用比较广泛所以就迁移出来作为独立项目了。spawn-fcgi 使用 pre-fork 模型 功能主要是打开监听端口绑定地址然 后fork-and-exec 创建我们编写的 fastcgi 应用程序进程退出完成工作 。 fastcgi 应用程序初始化然后进入死循环侦听socket 的连接请求。 http://localhost/login?userzhang3passwd123456age12sexman 1. 客户端访问 , 发送请求 2. nginx web 服务器 , 无法处理用户提交的数据 3. spawn-fcgi - 通信过程中的服务器角色 被动接收数据 在spawn-fcgi 启动的时候给其绑定 IP 和端口 4. fastCGI 程序 程序猿写的 - login.c - 可执行程序 ( login ) 使用 spawn-fcgi 进程管理器启动 login 程序 , 得到一进程 1. nginx的数据转发 - 需要修改nginx的配置文件 nginx.conf 通过请求的 url http ://localhost/ login?user zhang3passwd 123456age 12sex man 转换为一个 指令 : - 去掉协议 - 去掉域名 / IP 端口 - 如果尾部有文件名 去掉 - 去掉 ? 后边的字符串 - 剩下的就是服务器要处理的指令 : / login location / login { # 转发这个数据 , fastCGI 进程 fastcgi_pass 地址信息 : 端口 ; #fastcgi_pass localhost:8888 # fastcgi.conf 和 nginx.conf 在同一级目录 : /usr/local/nginx/conf # 这个文件中定义了一些 http 通信的时候用到环境变量 , nginx 赋值的 include fastcgi.conf; } 地址信息 : - localhost - 127.0.0. 1 - 192.168.1. 100 端口 : 找一个空闲的没有被占用的端口即可 2. spawn-fcgi如何启动 # 前提条件 : 程序猿的 fastCGI 程序已经编写完毕 - 可执行文件 login spawn-fcgi -a IP 地址 -p 端口 -f fastcgi 可执行程序 - IP 地址 : 应该和 nginx 的 fastcgi_pass 配置项对应 - nginx: localhost - IP: 127 .0.0.1 - nginx: 127 .0.0.1 - IP: 127 .0.0.1 - nginx: 192 .168.91.130 - IP: 192 .168.91.130 - 端口 :8888 应该和 nginx 的 fastcgi_pass 中的端口一致 将标准输入和输出使用dup2()重定向到fastcgi 的读缓冲区和写缓冲区里面。 3. fastCGI程序怎么写 // http://localhost/login?userzhang3passwd123456age12sexman // 要包含的头文件 #include fcgi_config.h // 可选 #include fcgi_stdio.h // 必须的 , 编译的时候找不到这个头文件 , find-path , gcc -I 指定头文件的路径即可 // 编写代码的流程 int main () { // FCGI_Accept()是一个阻塞函数 , nginx 给 fastcgi 程序发送数据的时候解除阻塞 while ( FCGI_Accept () 0 ) { // 1. 接收数据 // 1.1 get方式提交数据 - 数据在请求行的第二部分 //得到的结果是 userzhang3passwd123456age12sexman char * text getenv ( QUERY_STRING ); // 1.2 post方式提交数据 – char * contentLength getenv ( CONTENT_LENGTH );//获取数据的长度。 // 根据长度大小判断是否需要循环 // 2. 按照业务流程进行处理注册登录上传文件进行处理等等 // 3. 将处理结果发送给 nginx // 数据回发的时候 , 需要告诉 nginx 处理结果的格式 - 假设是 html 格式 //Content_type 需要指定。 printf ( Content-type: text/html\r\n );//必须要加的。 printf ( html 处理结果 /html ); } } 复习 Nginx 1. 是什么 ? 开源的框架 库: 一套 API 框架: (可以 ) 有一套 API, 有一套事件处理机制 2. 能干什么 ? web服务器 http协议 反向代理 实现web 服务器的负载均衡 邮件服务器 pop3 3. 怎么干事儿 ? web服务器 # 部署静态网页 1. 制作出来 , 并且部署到对应的资源目录中 2. 根据客户端的请求 , 在服务器端添加对应的 location 处理指令 - nginx. conf 3. 重新加载 nginx . conf 配置文件 客户端请求的 url : http ://xxxx.com/hello/login. html - 去掉协议 : http - 去掉域名 /IP: - 去掉端口 - 去掉尾部的文件名 反向代理服务器 1. 找到反向代理服务器 的配置文件 : nginx. conf 2. 找模块 http - server server { listen : 80; # 客户端访问反向代理服务器的时候使用的端口 server_name : localhost; # 域名 , 客户端访问反向代理服务器时候 , 使用的地址 # 配置如何转发 , 根据客户端的请求的 url 找到对应的转发指令 location / { # 设置转发地址 proxy_pass http ://test.com; } location / login { # 设置转发地址 proxy_pass http ://test.com; } } # 设置代理 upstream test. com { # web 服务器的地址信息 server 192.168.1.100:80; server 192.168.1.101:80; } # 192.168.1.100 web 服务器 http - server server { location / { # 设置转发地址 root xxx; } location / login { # 设置转发地址 xxxx; } } # 192.168.1.101 web 服务器 http - server server { location / { # 设置转发地址 root xxx; } location / login { # 设置转发地址 xxxx; } } 4其他知识点 - fastCGI环境变量 - fastcgi.conf 2. 客户端使用Post提交数据常用方式 Http 协议规定 POST 提交的数据必须放在消息主体entity-body中但协议并没有规定数据必须使用什么编码方式。 开发者完全可以自己决定消息主体的格式数据发送出去还要服务端解析成功才有意义, 服务端通常是根据请求头headers中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码再对主体进行解析。 常用的四种方式 application/x-www-form-urlencoded # 请求行 POST http: //www.example.com HTTP/1.1 # 请求头 Content-Type: application/x-www-form-urlencoded;charsetutf-8 # 空行 # 请求数据 ( 向服务器提交的数据 ) titletestuserkevinpasswd32222 application/json POST / HTTP/1.1 Content-Type: application/json;charsetutf-8 {title: test,sub:[1,2,3]} text/xml POST / HTTP/1.1 Content-Type: text/xml ?xml version1.0 encodingutf8? methodcall methodname colorredexamples.getStateName/methodname params valuei441/i4/value /params /methodcall font colorrednihao, shijie/font multipart/form-data POST / HTTP/1.1 Content-Type: multipart/form-data # 发送的数据 ——WebKitFormBoundaryPpL3BfPQ4cHShsBz \r\n Content-Disposition: form-data; namefile; filenameqw.png Content-Type: image/png\r\n; md5xxxxxxxxxx \r\n …………. 文件内容 ……………. …………. 文件内容 ……………. ——WebKitFormBoundaryPpL3BfPQ4cHShsBz– Content-Disposition: form-data; namefile; filenameqw.png Content-Type: image/png\r\n; md5xxxxxxxxxx \r\n …………. 文件内容 ……………. …………. 文件内容 ……………. ——WebKitFormBoundaryPpL3BfPQ4cHShsBz– 3. strtol 函数使用 // 将数字类型的字符串 - 整形数 long int strtol ( const char * nptr , char ** endptr , int base ); - 参数 nptr : 要转换的字符串 - 数字类型的字符串 : 123 , 0x12 , 0776//0 开头是8进制其余是16进制。 - 参数 endptr : 测试时候使用 , 一般指定为 NULL - 参数 base : 进制的指定 - 10 , nptr 123456 , 如果是 0x12 就会出错 - 8 , nptr 0345 - 16 , nptr 0x1ff char* p 123abc ; char* pt NULL ; strtol ( p , pt , 10 ); - 打印 pt 的值 : abc //fread(buf,1,stdin); http://tool.oschina.net/ 4linux 搜狗输入法不能使用的的问题 问题 1Ubuntu下搜狗拼音输入法能启动系统托盘处有图标但是打不出汉字打字时选框不正常。 或者 2Deepin下搜狗输入法无法启动托盘处不显示图标fcitx运行正常这个可以通过命令行启动fcitx来验证。 解决方法 删除搜狗拼音输入法的配置文件并重启输入法。 执行如下指令 cd ~/.config find . -name sogou* find . -name Sogou* 将两次搜索到的配置文件删除即可。 如果是单独文件使用rm [文件名]指令如果是目录使用rm -R [目录名]指令。 备注 重启fcitx几次有可能恢复只能说有可能。如果不愿意删除配置文件可以重启fcitx几次试试。 fcitx restart 或者在系统托盘的fcitx菜单中点击“重新启动(restart)”。 5 共享库找不到的问题 一般我们在Linux下执行某些外部程序的时候可能会提示找不到共享库的错误, 比如: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory 原因一般有两个, 一个是操作系统里确实没有包含该共享库(lib*.so.*文件)或者共享库版本不对, 遇到这种情况那就去网上下载并安装上即可. 另外一个原因就是已经安装了该共享库, 但执行需要调用该共享库的程序的时候, 程序按照默认共享库路径找不到该共享库文件. 所以安装共享库后要注意共享库路径设置问题, 如下:
- 如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令 ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib.so), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表.
- 如果共享库文件安装到了/usr/local/lib(很多开源的共享库都会安装到该目录下)或其它非/lib或/usr/lib目录下, 那么在执行ldconfig命令前, 还要把新共享库目录加入到共享库配置文件/etc/ld.so.conf中, 如下: # cat /etc/ld.so.conf include ld.so.conf.d/*.conf # echo /usr/local/lib /etc/ld.so.conf # ldconfig 3) 如果共享库文件安装到了其它非/lib或/usr/lib 目录下, 但是又不想在/etc/ld.so.conf中加路径(或者是没有权限加路径). 那可以export一个全局变量LD_LIBRARY_PATH, 然后运行程序的时候就会去这个目录中找共享库. LD_LIBRARY_PATH的意思是告诉loader在哪些目录中可以找到共享库. 可以设置多个搜索目录, 这些目录之间用冒号分隔开. 比如安装了一个mysql到/usr/local/mysql目录下, 其中有一大堆库文件在/usr/local/mysql/lib下面, 则可以在.bashrc或.bash_profile或shell里加入以下语句即可: export LD_LIBRARY_PATH/usr/local/mysql/lib:$LD_LIBRARY_PATH 一般来讲这只是一种临时的解决方案, 在没有权限或临时需要的时候使用. ldd命令可查看执行文件所引用到的动态库情况
- 上一篇: 学校网站制作公司企业网页建设公司怎样收费
- 下一篇: 学校资源网站建设有啥作用合肥网站模板建站
相关文章
-
学校网站制作公司企业网页建设公司怎样收费
学校网站制作公司企业网页建设公司怎样收费
- 技术栈
- 2026年03月21日
-
学校网站怎么做的好处wordpress 微博 主题
学校网站怎么做的好处wordpress 微博 主题
- 技术栈
- 2026年03月21日
-
学校网站怎么查询录取sem包括网站建设吗
学校网站怎么查询录取sem包括网站建设吗
- 技术栈
- 2026年03月21日
-
学校资源网站建设有啥作用合肥网站模板建站
学校资源网站建设有啥作用合肥网站模板建站
- 技术栈
- 2026年03月21日
-
学院的网站怎么做免费推广渠道有哪些
学院的网站怎么做免费推广渠道有哪些
- 技术栈
- 2026年03月21日
-
学院评估+++网站建设整改个人简历网页模板下载
学院评估+++网站建设整改个人简历网页模板下载
- 技术栈
- 2026年03月21日
