目录
简介
CrapApi是一款免费开源API接口管理系统,类似于Apizza,yapi。
项目8.1.5版本源码码云地址:https://gitee.com/CrapApi/CrapApi/tree/release_20191026_v8.1.5
其他版本地址:http://api.crap.cn/index.do#/web/article/detail/web/ARTICLE/a00534f1-7e50-45e2-9e72-fc9ede829dec
环境配置
- JDK1.7+
- MAVEN
- Tomcat7+
- nginx(非必要)
- xshell(非必要)
- xftp(非必要)
说明
- 因为是公司内部使用,并不一定需要配置域名,可直接使用ip地址
- 部署到window环境,页面会乱码(也有可能是我电脑其他配置导致的)
- 截图都是在window环境下截图,但实际部署是在linux环境,但配置过程都是通用的
部署
一、下载CrapApi
版本是8.1.5(http://api.crap.cn/index.do#/web/article/detail/web/ARTICLE/a00534f1-7e50-45e2-9e72-fc9ede829dec)
解压压缩包,得到以下文件,并将crapApi.v8.1.5修改为ROOT(注意是大写)
修改前:
修改后:
二、导入数据库
使用数据库工具,建立数据库名:apidev
打开ROOT文件夹,并导入2019-10-26.V8.1.5.sql文件
三、修改ROOT文件下的config.properties
文件路径:D:\javaSoftware\apache-tomcat-8.5.57\webapps\ROOT\WEB-INF\classes\config.properties
四、部署项目到Tomcat,修改server.xml
打开tomcat目录下的webapps,并删除里面所有文件,并复制ROOT到该文件夹下面
D:\javaSoftware\apache-tomcat-8.5.57\webapps,
五、运行Tomcat
window环境:运行startup.bat
linux环境:
sh startup.sh
linux 运行成功
浏览器打开:http://localhost:9191
打开效果会跟官网(http://api.crap.cn/home.do)一样,但我这里做了处理,关闭了注册和忘记密码功能
额外补充
一、该项目使用了md5+盐加密
相关代码是:
import java.security.MessageDigest;
import java.util.Random;
public class MD5 {
/**
* MD5 + 盐,防止数据库被盗,第三方使用碰撞法解密用户账号(彩虹碰撞)
* @param data
* @param passwordSalt
* @return
*/
public static String encrytMD5(String data, String passwordSalt){
if (data == null || data.trim() == null){
return "";
}
if (passwordSalt == null){
passwordSalt = "";
}
passwordSalt = passwordSalt.trim();
data = passwordSalt + data.trim();
try{
//指定加密算法
MessageDigest digest=MessageDigest.getInstance("MD5");
digest.update(data.getBytes());
return encryptMD5toString(digest.digest());
}catch (Exception e){
e.printStackTrace();
return null;
}
}
//将加密后的字节数组转化为固定长度的字符串
private static String encryptMD5toString(byte[] data){
if (data == null || data.length == 0){
return "";
}
try{
String str="";
String str16;
for(int i=0;i<data.length;i++){
//转换为16进制数据
//Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,由于int是32位,而byte只有8位这时会进行补位,
//例如补码11111111的十进制数为-1转换为int时变为11111111111111111111111111111111好多1啊,呵呵!即0xffffffff但是这个数是不对的,这种补位就会造成误差。
//和0xff相与后,高24比特就会被清0了,结果就对了。
str16=Integer.toHexString(0xFF & data[i]);
if(str16.length()==1){
str=str+"0"+str16;
}else{
str=str+str16;
}
}
return str;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
String s = MD5.encrytMD5("123456", "stnci97PqJeu4P18pqyn");
System.out.println(s);
}
public static String getChar(int num) {
String md = "123456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ789abcd";
Random random = new Random();
String temp = "";
for (int i = 0; i < num; i++) {
temp = temp + md.charAt(random.nextInt(50));
}
return temp;
}
}
二、nginx跳转
1. 修改host,打开
linux环境:sudo gedit /etc/hosts
刷新hosts:sudo /etc/init.d/networking restart
window环境:使用switchhosts软件,下载地址https://github.com/oldj/SwitchHosts
添加以下语句
127.0.0.1 api.com
添加完毕后,刷新该hosts文件,使用上面所说的
2.修改nginx配置
linux环境:
sudo gedit /usr/local/nginx/conf/nginx.conf
增加
server {
listen 80;
server_name api.com;
index index.html index.htm index.jsp;
root /data/wwwroot/xxxxx/;
#error_page 404 /404.html;
#error_page 502 /502.html;
location / {
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header x-forwarded-for $remote_addr;
proxy_pass http://127.0.0.1:9191;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
proxy_pass http://127.0.0.1:9191;
expires 30d;
}
location ~ .*\.(js|css)?$ {
proxy_pass http://127.0.0.1:9191;
expires 12h;
}
}
重启nginx
运行:
进入安装目录中,
命令: cd /usr/local/nginx/sbin
启动,关闭,重启,命令:
./nginx 启动
./nginx -s stop 关闭
./nginx -s reload 重启