Web框架介绍与使用说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
框架介绍及使用说明
这是一个MVC模式的WEB框架,框架有CGI和FastCGI两种模式。
CGI(Common Gateway Interface)公共网关接口,是HTTP服务器与其他程序通信的工具。
FastCGI是一个long-live型的CGI,支持分布式计算,它将CGI解释器进程保持在内存中并因此获得较高的性能。
FastCGI工作方式是接受Web服务器的请求,以HTTP Request 的方式进行响应,实现了应用程序与Web服务器的分离。
它的使用需要在Web服务器中安装支持组件,目前支持Apache、Nginx、IIS、Lighttpd等。
框架的优点有:
•稳定性,框架是以独立的进程池运行来运行,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑•安全性,框架和宿主的server完全独立,框架怎么down也不会把server搞垮
•性能,框架把动态逻辑的处理从server中分离出来,大负荷的IO处理还是留给宿主server,这样宿主server可以一心一
意作IO,对于一个普通的动态网页来说,,逻辑处理可能只有一小部分,大量的图片等静态IO处理完全不需要逻辑程序的参与•扩展性,框架拥有良好的可扩展性,可根据需求对框架进行扩展。
•保密性,框架使用C++进行编译,编译产生的CGI文件无法看到源码,并且框架的CGI文件只能执行一个,执行中文件不能替换。
即便是恶意上传了CGI文件也无法执行。
•SEO优化,框架有着很方便的伪静态功能,可以非常方便的优化SEO。
•高效性,C++拥有非常高效的执行效率,响应速度远比其他脚本语言快得多。
•方便调试,框架有日志功能,自动记录错误信息。
调试很方便。
•数据库自动连接,框架可以通过配置文件自动连接MySQL,MariaDB,sqlite数据库。
•跨平台,框架可以在Windows和Linux系统编译和运行,使用起来很方便。
•开发周期短,可以在最短时间内开发出强大的Web后台。
框架部署
可使用Apache或其他web服务器来部署框架,下面以Apache做示范。
# STEP:1.开启基于主机的组授权(去掉下面这行的注释即可)(默认是开启的,可以跳过)
LoadModule access_compat_module modules/mod_access_compat.so
# STEP:2.开启apache的代理模块(直接去掉前面的注释即可)(默认是开启的,可以跳过)
LoadModule proxy_module modules/mod_proxy.so
# STEP:3.开启代理http和https请求(直接去掉前面的注释即可)(默认是开启的,可以跳过)
LoadModule proxy_http_module modules/mod_proxy_http.so
# STEP:4.开启rewrite模式(直接去掉前面的注释即可)LoadModule rewrite_module modules/mod_rewrite.so
# STEP:5.开启CGI和FCGI及SSL配置(直接去掉前面的#注释即可)(fcgi 可能没有需要下载)
LoadModule cgi_module modules/mod_cgi.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule fcgid_module modules/mod_fcgid.so
# STEP:6.开启CGI路径的访问权限可以选择默认目录也可以选择cgi-bin,有权限执行就行。
<Directory "G:/var/www/cgi-bin/">
AllowOverride All
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
# STEP:7.修改映射地址使用默认目录则无需此步骤
ScriptAlias /cgi-bin/ "G:/var/www/cgi-bin/"
# STEP:8.添加后缀(重点!)
AddHandler cgi-script .cgi .pl .py
AddHandler fcgid-script .fcgi
# STEP:9.添加默认首页和CGI执行权限(重点!)
Options FollowSymLinks ExecCGI
DirectoryIndex index.cgi index.fcgi
完成配置之后开启Apache就可以运行Web框架了。
解压群文件中的根目录.zip 即可得到项目目录。
将编译好的cgi或者fcgi文件放入跟目录即可运行。
开启apache服务后浏览器访问localhost或自定义域名即可访问。
框架目录与结构
Application目录是框架核心目录,用于存放配置文件和HTML文件。
View目录下放置各控制器的HTML文件,以控制器类名区分。
如CIndex控制器的文件放在index目录下,CLogin控制器的文件放在login目录下。
Config.txt文件是框架的配置文件,用于配置框架的各种属性,详细配置可打开查看。
Database.txt文件用于框架与数据库的连接,目前支持MySQL/MariaDB/Sqlite数据库,配置好之后,框架即可自动连接到目标数据库。
跳过CModel对象即可直接使用。
Route.txt文件是伪静态配置文件,用于伪静态的路由配置。
格式如下:伪静态:控制器/方法: 如index:index/index: 表示访问index.html 等
同于访问index/index
Database目录则是默认的sqlite数据库路径,并非必须存在。
也可以更换为其他目录。
Log目录是存放框架日志的目录,若此目录不存在,框架会自动创建该目录。
Public目录是存放项目公共部分文件的目录,如CSS/JS/Image等。
Session目录用于存放会话,若此目录不存在框架会自动创建。
.htaccess 文件是apache的配置文件,用于指定cgi或fcgi文件。
框架的编译与使用
框架可使用多个编译器,推荐使用vs2010或vs2019,下面使用这两个编译器作为示范。
Vs2010:
先创建一个空项目。
完成后修改项目版本为Release版本(重要)
修改目标文件名和扩展名为index和.cgi(或fcgi)
附加框架的目录
(重点)修改运行库为多线程(/MT)
接下来添加一个C++类,并且继承框架的控制器类。
(别忘了包含框架的头文件)
继承后,我们的CIndex就变成了一个控制器类,可以直接使用控制器方法了。
接下来,写一个静态方法index()
这样子,一个最简单的控制器就写好了。
接下来,就要注册这个控制器,并使用。
首先添加一个新建项
用于编写入口
绑定路由之后,就可以通过请求对应的路由或伪静态来访问了。
(重点)
接下来有两种选择,要么使用框架静态库,要么直接引用框架项目。
先来说说使用静态库的方式:先编译好框架,然后附加静态库依赖。
第二种方法是直接引用框架项目先添加框架项目
然后引用框架
好了,这样子就大功告成了。
按下F7进行编译,编译完成后就可以得到index.cgi或index.fcgi了。
然后把得到的index.cgi或index.fcgi放入根目录下,然后开启apacheWeb服务器。
浏览器中访问项目站点就可以访问到了。
是不是很简单呢。
然后来说下url访问吧,如果控制器和方法均为空,也就是直接访问localhost
那么就会默认访问到index控制器的index方法,也就是说,等价于访问index/index
要注意的是,必须是注册过的路由才能访问,若是没有注册过,那么就不能访问。
例如,访问index/admin 这个是没有注册过的路由,自然没办法访问到了。
然后说一下伪静态,首先打开application目录下的route.txt
添加一条伪静态格式在上一章说过了。
这样子就可以通过伪静态来访问了。
访问index.html 等价于访问index/index
如果在使用过程中出现了错误,那么可以查看日志文件
日志文件在根目录的log目录下
若要查看更为详细的Demo示例项目,可下载群文件中的Demo示例项目。
Linux下的安装与使用: 首先安装依赖的工具,包括:gcc g++ make
然后获取并安装CgiManager 库
git@:ShadowViolet/CgiManager.git
cd CgiManager
make
make install
在任意位置新建main.cpp,以基本的hello world 为例
#include <CgiManager/CgiManager.h>
int cgiMain()
{
CController::OutPut("Hello world!");
return true;
}
然后编译并生成可执行文件
g++ main.cpp -lpthread -lcgi_manager -ldl -o index.cgi
同样把得到的index.cgi放到根目录下,之后启动apache服务。
就可以看到了。