这个教程将从搭建环境开始,讲述RuleApi从打包到发布的全过程,而且作为springboot开发的应用(现在这个框架已经特别流行),所以完全不像大部分人以为的那样,部署起来复杂麻烦。本质上,根本不需要懂JAVA,也不需要懂什么tomcat的配置,直接打包和运行命令就可以直接开始了。
RuleApi是一套功能完善的typecho接口程序。
提示
我已经在语雀补充了更加详细的文档,建议前往阅读:RuleProject社区应用帮助文档
下载地址(安装就下载这个包,切记!!!持续更新):
链接:https://pan.baidu.com/s/13OISo_-d5qh2hgH2vYmoig?pwd=bdgx
提取码:bdgx
Gitee(欢迎star):点击进入
Github(欢迎star):点击进入
接口文档:点击进入
所有安装问题都可以加入QQ交流群讨论,我会耐心解答:675025692
最新的一键安装脚本已经出炉,可以迅速完成基础配置
环境准备:
1.首先,RuleApi是可以不和网站安装在同一个服务器的,在安装之前,请将项目目录底下的apiResult.php上传到typecho网站的目录底下
。编辑apiResult.php就可以设置更新接口,具体可以自己摸索。
2.随后,我使用的部署环境是CentOS,安装了宝塔面板,所以首先要做的,是确认安装了nginx或者apache(一般只要装了网站都有),然后去宝塔的软件商店安装Redis(没用宝塔面板就自己指令安装吧,也都差不多)。安装完成后为了安全考虑可以设置密码。
3.安装java环境,可以用我准备好的jdk的linux版安装包,通过宝塔面板上传到服务器根目录的opt目录下,然后解压,重命名为jdk1.8
jdk下载地址:
链接:https://pan.baidu.com/s/1_ftWmCzbFyFsVv02Oluj7Q
提取码:l96k
4.然后用宝塔面板打开服务器根目录下的/etc里面的profile文件,将如下丢到文件的最后。
export JAVA_HOME=/opt/jdk1.8
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
5.最后打开终端,执行如下指令,环境安装完成
source /etc/profile
项目运行:
1.打开linux终端,安装screen,主要是用来保护进程。
yum install screen
2.确认一下java环境安装是否正常,如果不正常就再执行一次source /etc/profile,或者检查jdk的文件目录和profile文件的配置。
3.将下载的安装包解压到服务器目录,比如我解压在opt,然后直接编辑application.properties文件,设置从运行的端口,数据库,到redis,到网站基本信息,到缓存...最后到对象存储等。然后务必记得将发布包目录下的apiResult.php文件放在typecho网站的根目录,主要用于协助安装和更新
。
因为有很多人在数据库配置那里遇到问题,可以参考如下信息配置。另外,redis默认安装完是没有密码的,可以自己设置,也可以完全不动,毕竟大多数时候是内网环境
。
# mysql配置
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/数据库名?characterEncoding=UTF-8
spring.datasource.username=数据库用户名
spring.datasource.password=数据库密码
# mysql数据表前缀,如果没改过就别动
mybatis.configuration.variables.prefix=typecho
4.进入你存放安装包(里面带jar文件)文件夹,依次执行如下运行命令
screen -S 窗口名称(用英文)
cd /opt
java -jar 打包出来的名称.jar
5.运行成功的效果如下:
5.到上一步,就可以直接作为接口了,但是为了安全考虑,还需要配置域名。其实也很简单,宝塔面板额外创建网站,网站类型为静态就好,然后找到伪静态设置,加入如下代码保存。我的网站复制会自带版权信息,记得删除掉
。
location ^~ / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Data-Type,X-Requested-With,X-Data-Type,X-Auth-Token';
if ( $request_method = 'OPTIONS' ) {
return 200;
}
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
}
上述代码的用途是反向代理,并获取真实IP,且开始跨域。宝塔自带的反向代理功能比较复杂,所以省事的话,请采用上述的方法。在这个基础上,可以继续挂cdn之类的。其中127.0.0.1:8080就是你的内网接口地址,这里只需要改8080这个端口号(如果你定义了其它的话)
整个过程不要开启任何外网端口,切记!!!!
6.访问运行主页的时候,记得点击“初次安装执行”,这样就可以完成全部的安装步骤。(其实本来这里不需要用户执行的,但是自己来一下会更有参与感
),这里多次执行也没事,程序会自动识别是否创建数据表或者字段。新版本开始,会有可视化管理中心,默认的密码是123456,进入后请及时修改。
7.这里建议安装宝塔免费的nginx防火墙,可以有效防止爆破接口或者刷垃圾数据。已经有用户出现通过快捷登陆接口刷垃圾数据的情况,后续的接口更新我也会做处理。
本地图片访问配置(非一键脚本安装)
下面这些配置很重要,请严格按照我完全一模一样的填写和配置来,不要在不明白springboot机制的时候,就开始自我发挥!
1.部署在linux时,如果采用本地上传接口上传图片,那么图片将会存在临时文件夹中,如果项目重启或者更换,将可能导致数据丢失。所以需要手动创建以下文件,并新建一个网站,设置网站目录为如下:
/opt/files/static
2.接着,在API的可视化配置中心,设置图片访问的网址。
注意:对于老版本用户,也就是2022/03/03之前安装RuleApi的用户
,如果使用的是本地上传接口,请将/opt/file:/opt/RuleApi.jar!/BOOT-INF/classes!下的static文件,移动到/opt/file/static中,如果没有就自己创建。
邮箱发送和图片key配置
1.邮箱发送直接参考各个邮箱的配置方式,一般只需要配置三个东西。host是根据邮箱的不同设置不同,以不同邮箱官方为准,配置文件application.properties中代码如下。
spring.mail.host=smtp.qq.com
spring.mail.username=邮箱地址(XXX@qq.com)
spring.mail.password=各种不同邮箱的授权码或者密码
下图是QQ邮箱获取授权码的案例。
2.APP中有个图库的功能,这里是获取pexels的免费无版权图片,后期可能会基于此开发文章插图功能,所以建议获取。直接前往这个地址注册并验证邮箱即可,完全是免费的:点击进入
然后在可视化配置中心填入。
对象存储OSS和COS配置
打开可视化配置中心,找到“远程存储设置”,即可对三种存储方式进行设置。
更新和停止
具体的更新可以看这个教程:RuleApp和RuleApi更新教程,后端及APP的快捷更新
1.首先查询你的jar是否在运行。
ps aux | grep 打包出来的名称.jar
2.然后根据信息停止进程。
kill -9 进程号
3.更新就是完成上述操作后,将新的jar包再运行就好。
screen -S 窗口名称(用英文)
cd /opt
java -jar 打包出来的名称.jar
可以实现彩虹聚合登录功能吗
SQLException: Storage engine MyISAM is disabled (Table creation is disallowed).
数据库不支持MyISAM引擎,能否修改为InnoDB
@柯木
你可以参考github的代码,手动添加字段和表,暂时只能这样解决。
https://github.com/buxia97/RuleApi/blob/master/src/main/java/com/RuleApi/web/InstallController.java
这个注册能不能去掉邮箱验证码的方式改为直接注册?
@__灬诱惑
目前已经实现咯,最新版的有开关控制
好的
sql文件有吗?
@南岸
这个数据库依赖typecho的数据库,所以是没有sql的,你安装一个typecho就好了
运行完一键脚本后提示启动成功,但访问配置端口却拒绝连接(防火墙开放了对应端口),重启Ruleapi也是如此,何解。使用lnmp一键包安装的redis。
out.txt文件内容:
:: Spring Boot :: (v2.1.7.RELEASE) 2022-06-08 18:41:22 INFO 22423 --- [ main] com.RuleApi.Application 50 : Starting Application v1.2.1 on VM-4-5-centos with PID 22423 (/opt/RuleApi.jar started by root in /opt) 2022-06-08 18:41:22 INFO 22423 --- [ main] com.RuleApi.Application 647 : No active profile set, falling back to default profiles: default 2022-06-08 18:41:24 INFO 22423 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate 244 : Multiple Spring Data modules found, entering strict repository configuration mode! 2022-06-08 18:41:24 INFO 22423 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate 126 : Bootstrapping Spring Data repositories in DEFAULT mode. 2022-06-08 18:41:24 INFO 22423 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate 182 : Finished Spring Data repository scanning in 12ms. Found 0 repository interfaces. 2022-06-08 18:41:25 INFO 22423 --- [ main] trationDelegate$BeanPostProcessorChecker 330 : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$4d392b10] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2022-06-08 18:41:26 INFO 22423 --- [ main] o.s.b.w.embedded.tomcat.To2022-06-08 18:41:24 INFO 22423 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate 244 : Multiple Spring Data modules found, entering strict repository configuration mode! 2022-06-08 18:41:24 INFO 22423 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate 126 : Bootstrapping Spring Data repositories in DEFAULT mode. 2022-06-08 18:41:24 INFO 22423 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate 182 : Finished Spring Data repository scanning in 12ms. Found 0 repository interfaces. 2022-06-08 18:41:25 INFO 22423 --- [ main] trationDelegate$BeanPostProcessorChecker 330 : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$4d392b10] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2022-06-08 18:41:26 INFO 22423 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer 90 : Tomcat initialized with port(s): 8080 (http) 2022-06-08 18:41:26 INFO 22423 --- [ main] o.a.coyote.http11.Http11NioProtocol 173 : Initializing ProtocolHandler ["http-nio-8080"] 2022-06-08 18:41:26 INFO 22423 --- [ main] o.apache.catalina.core.StandardService 173 : Starting service [Tomcat] 2022-06-08 18:41:26 INFO 22423 --- [ main] org.apache.catalina.core.StandardEngine 173 : Starting Servlet engine: [Apache Tomcat/9.0.48] 2022-06-08 18:41:27 INFO 22423 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] 173 : Initializing Spring embedded WebApplicationContext 2022-06-08 18:41:27 INFO 22423 --- [ main] o.s.web.context.ContextLoader 284 : Root WebApplicationContext: initialization completed in 3970 ms 2022-06-08 18:41:30 INFO 22423 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor 171 : Initializing ExecutorService 'applicationTaskExecutor' 2022-06-08 18:41:30 INFO 22423 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping 54 : Adding welcome page: class path resource [static/index.html]2022-06-08 18:41:31 INFO 22423 --- [ main] o.a.coyote.http11.Http11NioProtocol 173 : Starting ProtocolHandler ["http-nio-8080"] 2022-06-08 18:41:31 INFO 22423 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer 202 : Tomcat started on port(s): 8080 (http) with context path ''2022-06-08 18:41:31 INFO 22423 --- [ main] com.RuleApi.Application 59 : Started Application in 10.083235142 seconds (JVM running for 11.065) 26,1 Bot
@默风
根据你的代码来看,运行是没有任何问题的,你也可以在控制台执行curl 127.0.0.1:8080查看有没有返回结果。
但是这里要注意的是,你提到了开端口是不正确的,整个过程不需要开启任何外部端口,你应该按照我的教程去新建网站和修改伪静态。
@不暇
为了排除nginx配置文件写错的原因,所以临时开了端口。
执行结果
curl 127.0.0.1:9500
curl: (7) Failed connect to 127.0.0.1:9500; Connection refused
@默风
你可以加交流群,然后来加我的微信,看起来不是什么大问题。
@默风
那就好
@不暇
刚看了一下你说的那个文件,端口项竟然是空的,(可能是填写信息的时候网络不稳定导致的)。
补上端口号之后就可以访问了。
非常感谢。
@默风
这里和nginx没有半点关系,只和opt目录下的application开头的文件里面的端口配置有关系,甚至你的nginx除了我提供的伪静态,你自己最好不要重新定义接口。
小白看的还是有点懵,只能慢慢学习了
感谢分享,学习了!
安装总结来说只需要运行jar,经过几天的测试已经确认不占用性能,所以Typecho用户都可以安装试试。