昨天我将项目发布到了服务器,遇到了一些坑,在这里记录下来。。
首先说明我使用的方法:spring boot 打包成jar包,内置tomcat发布,使用ngnix转发到tomcat端口
方法一:使用外置tomcat发布项目
1、打包成war包,可以使用命令在项目根目录下打包,需要在环境变量中配置好maven变量
mvn clean package
或者在eclipse右键项目 - run as - maven install
使用eclipse生成的war在target目录下,使用命令在根目录执行,war包则在根目录下。
2、将war放到服务器tomcat的webapps目录下
这里推荐使用MobaXterm,这个远程工具上传文件比较简单
3、添加server.xml配置,在Engine节点中,新增如下代码
<Host name="www.daxinclub.com" autoDeploy="false" unpackWARs="true" appBase="webapps/daxinclub">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="daxinclub.com_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
</Host>
4、重启tomcat
重启tomcat后,webapps下的war包会自动被解压缩成文件夹
你也可以不放在webapps目录下,使用命令解压war包,但必须放到tomcat目录下,解压命令如下
jar -xvf daxinclub.war
此命令解压到当前文件夹,你server.xml的appBase配置记得跟着改哦
建议使用命令解压后,再重启tomcat一次。tomcat重启完毕,通过服务器ip地址+设置的端口号就可以直接访问了。
方法二:使用内置tomcat发布项目(推荐)
1、打包成jar包或war包,打包方式同方法一。
jar包还是war包,再pom.xml里面改一改就好了,jsp开发要使用war包哦
2、放在项目根目录或任意目录下,使用命令开启项目
java -jar daxinclub.jar
3、通过服务器ip地址+设置的端口号就可以直接访问了。
使用内置tomcat很简单的有没有!!
可能会遇到的问题:
问题1:打包失败
选择项目,project - clean ,项目会重新build,再试试就行了。
问题2:外置tomcat始终无法访问 或 命令启动时提示找不到mian方法,需要再pom.xml里加上如下代码,重新打包
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
添加之后,会自动引入maven关联和main方法入口。
问题3:使用阿里云服务器,端口设置的是8080,为什么无法访问(例如:域名:8080 或 端口号:8080)
在域名的安全组中,需要开启你的端口号,详见 阿里云服务器怎么开启或关闭8080端口?
问题4:使用ngnix如何指向tomcat的端口?
在ngnix.conf.defalut中新增server配置
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://127.0.0.1:8080 ;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Via "nginx";
port_in_redirect off;
}
}
监听80端口,指向tomcat的8080端口,此时,问题3你需要开启的端口是80端口哦。
重启ngnix后你可以直接通过域名访问了(例如:域名 或 端口号)
我花了2小时的时间才弄完,祝大家发布项目一次成功!
本文原创,转账请标明出处。