作为一个小白,花了很长时间百度服务器各种部署的问题,写一篇帖子来记录一下把本地写的springboot web服务部署到虚拟机上,并且在腾讯云花了1块大洋获得了1年域名有效期,并且申请了1个免费的ssl证书。
欢迎各位大佬批评指正。
Springboot项目打包
1.代码修改
首先更改打包方式,在pom文件里增加packaging。
<groupId>com.summer</groupId>
<artifactId>blog</artifactId>
<version>1.0</version>
<name>blog</name>
<packaging>war</packaging>
<description>Demo project for Spring Boot</description>
然后继承SpringBootServletInitializer 并且重写configure如下
@SpringBootApplication
@MapperScan("com.summer.blog.dao")
public class TestApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(TestApplication.class);
}
}
2.本地IDEA打包
本地IDEA打包的话,直接如下输入命令
mvn package -Dmaven.test.skip=true
渣渣楼主本地很慢很慢,然后最后提示有东西没拉下来,于是渣渣楼主只好去服务器打包。
3.服务器打包
渣渣楼主本地打包很慢很慢,于是百度去服务器打包。
服务器需要安装git和maven,因为楼主用的是centos7,所以直接yum安装了,这个可以百度。
然后进入项目目录,git把代码拉下来,然后mvn打包
[root@VM_0_4_centos blog]# git pull
[root@VM_0_4_centos blog]# mvn package -Dmaven.test.skip=true
服务器部署
服务器上首先要安装Tomcat,这个可以直接去问度娘或者谷歌。然后把本地打的war包或者服务器打的war包放到Tomcat目录下的webapps文件夹里,Tomcat会自动解压,这样的话访问 http://ip:8080+项目名+/ 可以访问到你的项目了,如果到这里的话,那么你的服务器部署已经成功了。
这边记录一些其他的:
1.把上面的url里面的项目名去掉,直接映射到项目,即 http://ip:8080+/ 这样的话可以,如下把原来的war包重命名为ROOT.war,并且覆盖掉原来的。
[root@VM_0_4_centos work]# cd tomcat/apache-tomcat-9.0.20/webapps/
[root@VM_0_4_centos webapps]# ll
total 69784
drwxr-x--- 14 root root 4096 Jun 2 15:27 docs
drwxr-x--- 6 root root 4096 Jun 2 15:27 examples
drwxr-x--- 5 root root 4096 Jun 2 19:37 host-manager
drwxr-x--- 5 root root 4096 Jun 2 15:27 manager
drwxr-x--- 4 root root 4096 Jun 3 11:47 ROOT
-rw-r--r-- 1 root root 71356681 Jun 3 11:46 ROOT.war
2.部署有的时候发现 ./shutdown 命令关掉Tomcat时候,有的时候进程并没有全部关掉,导致我的虚拟机内存飙升,最后kill -9 强制关关关。
腾讯云购买域名
我不是腾讯派来的!
我不是腾讯派来的!
我不是腾讯派来的!
登录腾讯云之后,步骤如下图所示
然后吧啦吧啦就是按操作申请下来。
申请下来之后,在腾讯云的平台配置解析,DNS,还有实名认证等,这个就直接在页面上操作。
免费申请ssl
还是这个平台,然后点ssl证书。
申请的时候按操作来就好了,值得注意的一点是,这个ssl不是全域名通用哦,意思是二级域名要单独申请,审核效率还蛮快的,晚上9点申请,9点半左右就通过了。
然后把证书下载下来备用。
nginx配置解析
1.nginx下载安装
这真的是一个很苦逼的活,要下载好多好多好多东西,参考博客 nginx步骤
步骤
首先,安装一大堆依赖
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
接着,解压
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar -zxvf nginx-1.14.2.tar.gz
接下来这一步很重要,因为要配置ssl
[root@VM_0_4_centos nginx]# cd nginx-1.14.2/
[root@VM_0_4_centos nginx-1.14.2]# ./configure --with-http_ssl_module
[root@VM_0_4_centos nginx-1.14.2]# make
[root@VM_0_4_centos nginx-1.14.2]# make install
安装完了应该有四个文件夹,因为我运行了,所以多出来几个。
[root@VM_0_4_centos nginx]# cd /usr/local/nginx/
[root@VM_0_4_centos nginx]#
[root@VM_0_4_centos nginx]# ll
total 36
drwx------ 2 nobody root 4096 Jun 3 12:05 client_body_temp
drwxr-xr-x 2 root root 4096 Jun 3 09:45 conf
drwx------ 2 nobody root 4096 Jun 3 09:45 fastcgi_temp
drwxr-xr-x 2 root root 4096 Jun 3 09:33 html
drwxr-xr-x 2 root root 4096 Jun 3 09:45 logs
drwx------ 8 nobody root 4096 Jun 3 11:49 proxy_temp
drwxr-xr-x 2 root root 4096 Jun 3 09:33 sbin
drwx------ 2 nobody root 4096 Jun 3 09:45 scgi_temp
drwx------ 2 nobody root 4096 Jun 3 09:45 uwsgi_temp
到这里,nginx的安装就结束了,接下来要配置nginx解析。
上传你下载的ssl证书,证书下载下来有一个nginx的文件夹,里面有 .crt 和.key文件,传到下面这个文件夹
[root@VM_0_4_centos nginx]# cd conf/
接下来打开文件nginx.conf
vim nginx.conf
增加以下内容,这就是你要配置的反向代理。腾讯云官方的配置文档
要改四个的地方已经标注出来了
server {
listen 443;
server_name xxx.xxx.xxx; #填写绑定证书的域名 要改的地方!
ssl on;
ssl_certificate 1.xxxxxxxx.crt; #填写绑定证书的域名 刚才你上传的 要改的地方!
ssl_certificate_key 2.xxxxxxxx.key; #刚才你上传的 要改的地方!
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
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_pass http://127.0.0.1:8080; #改成你要映射的端口 要改的地方!
}
}
接下来启动nginx,命令如下
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
如何排查问题,有问题先看日志,nginx下面有logs日志,access和error日志都有,然后接下来如果转发没问题是否打到了Tomcat日志里,如果springboot没有单独配置日志目录的话,可以在catalina.out日志看到是否有错误。
[root@VM_0_4_centos conf]# cd /home/work/tomcat/apache-tomcat-9.0.20/logs/
[root@VM_0_4_centos logs]# ll
total 2760
-rw-r----- 1 root root 29078 Jun 2 19:44 catalina.2019-06-02.log
-rw-r----- 1 root root 30517 Jun 3 11:49 catalina.2019-06-03.log
-rw-r----- 1 root root 2641549 Jun 3 12:10 catalina.out
-rw-r----- 1 root root 0 Jun 2 15:28 host-manager.2019-06-02.log
-rw-r----- 1 root root 0 Jun 3 10:00 host-manager.2019-06-03.log
-rw-r----- 1 root root 8693 Jun 2 19:44 localhost.2019-06-02.log
-rw-r----- 1 root root 4523 Jun 3 11:49 localhost.2019-06-03.log
-rw-r----- 1 root root 25444 Jun 2 21:20 localhost_access_log.2019-06-02.txt
-rw-r----- 1 root root 60521 Jun 3 12:10 localhost_access_log.2019-06-03.txt
-rw-r----- 1 root root 0 Jun 2 15:28 manager.2019-06-02.log
-rw-r----- 1 root root 0 Jun 3 10:00 manager.2019-06-03.log
最后
从写完到部署完,写一个博客记录一下。期间踩过不少坑,比如centos7防火墙改成iptables,mysql ip权限设置,redis设置等等,其实有问题是很正常的,关键是要养成一个良好的排查问题的习惯,该从哪里下手。
加油!!
参考博客
https://blog.youkuaiyun.com/qq_33512843/article/details/80951741
https://blog.youkuaiyun.com/long690276759/article/details/82790002