MINI_httpd移植,构建小型WEB服务器
一、简介
目的:构建小型WEB站,具备SSL。
mini_httpd is a small HTTP server. Its performance is not great, but for low or medium traffic sites it's quite adequate. It implements all the basic features of an HTTP server, including:
GET, HEAD, and POST methods.
CGI.
Basic authentication.
Security against ".." filename snooping.
The common MIME types.
Trailing-slash redirection.
index.html, index.htm, index.cgi
Directory listings.
Multihoming / virtual hosting.
Standard logging.
Custom error pages.
It can also be configured to do SSL/HTTPS and IPv6.
官网:http://acme.com/software/mini_httpd/
二、步骤说明
一、安装 mini_httpd-1.19
解压 mini_httpd-1.19bhoc.tar.gz
[python] view plaincopy
#cd mini_httpd-1.19bhoc
1 修改Makfile文件
修改如下:
1) 编译支持SSL,采用fedroa20, 自带SSL /usr/share/ssl。下面几行注释取消
SSL_TREE = /usr/share/ssl
SSL_DEFS = -DUSE_SSL
SSL_INC = -I${SSL_TREE}/include
SSL_LIBS = -L${SSL_TREE}/lib -lssl -lcrypto
SSL_LIBS Make sure the SSL_TREE definition points to the tree with your OpenSSL installation - depending on how you installed it,这个也被我改了一点
2 )修改ssl证书有效期为10年, -days 3650。网上这么说。 但是fedroa20不用修改,已经是了。
2 执行#make,不报错误error: openssl/ssl.h: No such file or directory。解决办法
安装openssl
# sudo apt-get install openssl(ubunto)
yum install openssl(fedora ,redhat)
再安装以下:
# sudo apt-get install libssl-dev build-essential zlibc zlib-bin libidn11-dev libidn11(ubunto)
yum install pcre-devel openssl-devel libidn-devel libidn2-devel(fedora,redhat)
3 #make install
感谢http://blog.wp08.com/article/computer/linux/756.html
http://blog.csdn.net/lwx2615/article/details/8542143
每次重新编译前需要运行(make clean)
我在编译前拷贝了openssl-libs-1.0.1e-4.fc19.i686和openssl-devel-1.0.1e-4.fc19.i686到本机,不知对结果有没有影响,反正是没报错。
--------------------------------------------------------------
4 生成SSL证书:
#make cert
生成证书请求(CSR)文件
openssl req -new -key server.key -out certreq.csr
Country Name: //您所在国家的ISO标准代号,中国为CN
State or Province Name: //您单位所在地省/自治区/直辖市
Locality Name: //您单位所在地的市/县/区
Organization Name: //您单位/机构/企业合法的名称
Organizational Unit Name: //部门名称
Common Name: //通用名,例如:www.itrus.com.cn。此项必须与您访问提供SSL服务的服务器时所应用的域名完全匹配。
Email Address: //您的邮件地址,不必输入,直接回车跳过
"extra"attributes //以下信息不必输入,回车跳过直到命令执行完毕。
安提示输入证书信息,即在当前目录下生成证书文件mini_httpd.pem 拷贝该文件到 /etc
5 #cp ./mini_httpd.pem /etc
修改建立mini_httpd.conf 配置文件
[python] view plaincopy
# mini_httpd configuration file
data_dir=/usr/local/www/ #最后必须加斜杠
#user=httpd
port=443
host=0.0.0.0
cgipat=**.php
logfile=/var/log/mini_httpd
pidfile=/var/run/mini_httpd.pid
charset=GB2312
ssl
certfile=/etc/mini_httpd.pem
6 注意防火墙和selinux对网页的过滤,可现在本机localhost:8080查看一下,再在局域网中查看一下。
Fedora 17及以前的版本关闭防火墙用systemctl stop iptables.service即可,其他linux版本用service stop iptables
Fedora 18以上用一个名叫firewalld的玩意,所以需要:
systemctl stop firewalld.service有必要的话就
systemctl disable firewalld.service
7 mini_http的密码修改可通过htpasswd修改,源码在htpasswd.c中
MINI_httpd移植,构建小型WEB服务器的更多相关文章
- C语言构建小型Web服务器
#include <stdio.h> #include <sys/socket.h> #include <stdlib.h> #include <string ...
- HttpListener 实现小型web服务器
HttpListener 实现web服务器 用于小型服务器,简单.方便.不需要部署. 总共代码量不超过50行. static void Main(string[] args) { //创建HTTP监听 ...
- 构建Apache Web服务器
Apache 是世界使用排名第一的 Web 服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一.Apache工作模式有多种,其 ...
- Tiny server:小型Web服务器
一.背景 csapp的网络编程粗略的介绍了关于网络编程的一些知识,在最后的一节主要就实现了一个小型的Webserver.这个server名叫Tiny,它是一个小型的可是功能齐全的Webserver.在 ...
- 小型web服务器thttpd的学习总结(上)
1.软件的主要架构 软件的文件布局比较清晰,主要分为6个模块,主模块是thttpd.c文件,这个文件中包含了web server的主要逻辑,并调用了其他模块的函数.其他的5个模块都是单一的功能模块,之 ...
- 构建apache web 服务器
一.Apache服务器工作模式 1.Prefork模式:Prefork MPM使用多个子进程,每个子进程只有一个线程,每个进程在某个确定的时间只能维护一个连接 2.Worker模式: Worker M ...
- 小型web服务器thttpd的学习总结(下)
1.主函数模块分析 对于主函数而言,概括来说主要做了三点内容,也就是初始化系统,进行系统大循环,退出系统.下面主要简单阐述下在这三个部分,又做了哪些工作呢. 初始化系统 拿出程序的名字(argv[0] ...
- Shell 简单构建 Node web服务器
.git bash 执行代码生成: ./makeJs.sh 生成文件如下: 访问:http://127.0.0.1:3030/index.html makeJs.sh 代码如下: #create m ...
- 第五章、web服务器
一.web服务器 Web服务器就是整个万维网的骨干,广义上来说Web服务器既可以用来表示Web服务器的软件,也可以用来表示提供Web页面的特定设备和计算机.我们在网络上获取的所以资源,都需要有服务器来 ...
随机推荐
- [Violet]蒲公英 分块
发现写算法专题老是写不动,,,, 所以就先把我在luogu上的题解搬过来吧! 题目大意:查询区间众数,无修改,强制在线 乍一看是一道恐怖的题,仔细一看发现并没有那么难: 大致思路是这样的,首先我们要充 ...
- bzoj3709: [PA2014]Bohater(贪心)
贪心... 可以回血的按d[i]升序防止死掉 不能回血的按a[i]降序,因为只考虑d我们要扣除的血量是一定的,为了不死显然回血多的放前面更好 #include<iostream> #inc ...
- [ZJOI2011]细胞——斐波那契数列+矩阵加速+dp
Description bzoj2323 Solution 题目看起来非常复杂. 本质不同的细胞这个条件显然太啰嗦, 是否有些可以挖掘的性质? 1.发现,只要第一次分裂不同,那么互相之间一定是不同的( ...
- oracle的sign()函数
sign函数 比较大小函数 sign 函数语法:sign(n) 函数说明:取数字n的符号,大于0返回1, 小于0返回-1, 等于0返回0 示例1: ),),) from dual; ) ) ) ——— ...
- 服务器上的 Git - 生成 SSH 公钥
http://git-scm.com/book/zh/ch4-3.html 生成 SSH 公钥 如前所述,许多 Git 服务器都使用 SSH 公钥进行认证. 为了向 Git 服务器提供 SSH 公钥, ...
- hihocoder 1509异或排序
描述 给定一个长度为 n 的非负整数序列 a[1..n] 你需要求有多少个非负整数 S 满足以下两个条件: (1).0 ≤ S < 2^60 (2).对于所有 1 ≤ i < n ,有 ( ...
- 微信小程序,页面分享
onShareAppMessage: function () { return { title: '微信小程序联盟', desc: '最具人气的小程序开发联盟!', path: '/page/user ...
- echarts 分组绘制柱状图
示意图: 代码如下: <!DOCTYPE html> <html style="height: 100%"> <head> <meta c ...
- 前端PHP入门-011-可变函数
可变函数,我们也会称呼为变量函数.简单回顾一下之前的知识点: <?php $hello = 'world'; $world = '你好'; //输出的结果为:你好 echo $$hello; ? ...
- JSTL获取当日时间与数据时间比较
<jsp:useBean id="now" class="java.util.Date" /> <fmt:formatDate value=& ...