Skip to content

AllesUgo/EasyHttpServer

Repository files navigation

EasyHttpServer

这是什么

这是一个简单易用的HTTP网页服务器,使用C语言和极少量的C++语言编写而成,并支持使用动态链接库的形式为程序提供插件和动态网页。

快速开始

方法一:使用编译好的二进制程序

1.下载Release页面中的最新版本
2.使用以下命令来为其添加可执行权限

chmod +x webserver

3.输入./webserver以启动服务器,首次运行会提示是否生成默认的配置文件,输入y以同意生成,随后服务器将启动。若服务器未能成功启动,请修改默认配置文件。

常见问题:

(1) 提示端口绑定失败:请检查该端口是否被其他进程占用或是否有权限使用本端口,可以尝试使用sudo ./webserver

(2) 提示诸如缺少运行库、段错误等问题请尝试方法二:编译运行

方法二:编译运行

1.安装g++编译器和make,例如在debian系Linux环境下执行

sudo apt install g++ make -y

其他Linux发行版请自行查找安装

2.克隆本仓库源码到本地
3.进入源码中包含Makefile文件的目录中,输入make命令并执行
4.将生成的文件webserver放在合适的运行环境
5.使用方法一中的第三步及后续步骤来运行服务器

运行时的操作

在服务器运行后可以通过在终端输入help命令以获取终端命令帮助

程序默认行为

1.当用户的请求不包含资源名称时,会为其跳转至index.html页面
2.当用户请求的资源不存在时,将自动为其提供404.html中的文件,所以请务必创建一个404.html文件,否则将导致出错
3.对于一个连接超过1分钟未发生接收或发送操作,将会关闭此连接

配置文件及其说明

conf/config.json文件说明:

该文件是服务器的配置文件

项目 含义
MimePath Mime文件的路径,Mime文件的作用请参考后文
PORT 服务器将要使用的端口,HTTP协议默认端口为80端口
HomeDir 服务器默认索引的目录,服务器将从本目录及其子目录获取网页文件
LogPath 保存日志文件的目录
UserAgentIndexPage 设置为不同UA提供不同的主页

UserAgentIndexPage示例:
该项为

{
    "UserAgentIndexPage":	[
        {
            "key":"Android",
            "page":"mobile_index.html"
        },
        {
            "key":"iPhone",
            "page":"index_for_iphone"
        }
    ]
}

时,若用户的请求中没有指示请求的文件并且该请求的UA值包含Android字样,则会为其提供mobile_index.html页面,若包含iPhone字样则为其提供index_for_iphone页面,若都不包含则提供默认的index.html页面

mime.json文件说明

该文件将指示服务器告知客户端如何为用户展示当前页面,例如当用户请求html文件时若mime指示使用text/html方式为用户显示,则该文件将在客户端以网页的形式展示,若mime指示使用text/plain,则会将该文件以纯文本(即网页源码)形式为用户展示
该文件服务器会自动生成,对于其详细格式可以参考自动生成的文件。

使用动态网页和插件

对于如何编写动态网页和插件,请参考EasyHttpServerSDK

1.将动态网页或插件文件放在app目录下(该目录会在首次运行时创建),并确保其文件名以_app结尾
2.启动服务器将会自动加载app目录中的插件
3.用户通过访问http://地址:端口/app/插件名.方法来调用插件

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published