java+maven+springboot+vue+nginx项目linux云服务器网站部署过程

做了一个springboot+vue前后端分离的小项目,部署到服务器上用公网ip访问,,记录一下

一、购买云服务器

我是在华为云买的服务器,2核4G2M一年58,成本比较低。购买云服务器后登录网页进入控制台–安装系统镜像(我安装的是centos,可自选)—用服务商自带的网页远程登录或者使用软件(xshell,Mobax等)。腾讯云阿里云基本操作都差不多。

使用工具连接后,在linux服务器上新建一个目录用来放我们的项目:

mkdir -p /home/myjob/

二、后端java项目打包上传

后端是maven项目,所以使用mvn package打包,直接点击package,成功后会在项目根目录target下生成一个jar包,将jar包传到服务器的/home/myjob/目录下(我用的mobax工具连接的服务器)
在这里插入图片描述

在这里我将spring的配置文件application.properties也拷贝到了/home/myjob下,方便启动jar包修改配置环境和端口以及其他信息。根据自己的实际项目配置去编辑文件

server.port=8091 #端口号,防止和服务器内部端口冲突我将8080改成了8091
spring.profiles.active=prod #指定生产环境
spring.application.name=项目名
spring.main.sources=指定springboot启动类
spring.datasource.url=数据库连接url
spring.datasource.username=数据库用户名
spring.datasource.password=数据库密码
spring.datasource.driver-class-name=com.mysql.jdbc.Driver  #mysql服务器驱动
spring.main.allow-bean-definition-overriding= true

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
spring.aop.auto=false

三、前端vue项目打包上传

在开发工具中执行npm run build,会在项目根目录下生成一个dist文件(这就是前端的部署文件),打包后上传到服务器
在这里插入图片描述

四、安装配置中间件

安装nginx参考:centos安装nginx
安装mysql参考:centos安装mysql5.7
安装jdk1.8参考:centos安装jdk1.8

mysql安装好了以后,没有特殊的操作,根据自己设定的密码修改application.properties中的配置信息即可,确保mysql、nginx状态是正常的,jdk安装好后也需要验证:

systemctl status mysqld
systemctl status nginx
#如果是正常的会显示绿色: Active: active (running) ,如果错误主意排查问题至正常运行
java -version
#正常会出来版本信息

注:如果想用navicat等工具连接上mysql(默认端口3306)或者访问nginx(端口是80)或项目端口,必须在云服务器的控制台–网络/安全组–安全组规则配置–将要开放的端口打开,否则访问页面或者连接服务器端口都连接不上
在这里插入图片描述
顺利的话到这一步,我们的前端dist和后端jar包都放在服务器上,mysql和nginx和jdk状态也是正常的。下一步要开始配置nginx和启动jar包
1)使用后台运行采用application.properties中配置信息启动jar包

nohup java -jar test-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod --spring.config.location=file:/home/myjob/application.properties 2>&1 &

验证是否正常启动执行命令netstat -lnp |grep 8091–换成自己的后台端口,会出现以下信息:
在这里插入图片描述
2)配置nginx
主要在conf.d下面的default.conf里面配置,不在nginx.conf里面配置

cd /etc/nginx/conf.d
vi default.conf
server {
    listen      80;  #默认监听80端口
    server_name localhost; #服务名称,有域名填写域名
    
    location / {
        root   /myjob/dist;   #注意这里,访问ip:80(80也可以省略,默认会访问)网址时会自动定位到服务器上/myjob/dist下的前端目录,就可以展示我们的前端页面
        try_files $uri $uri/ @router;
        index  index.html index.htm;
    }
    
	#这一段是接口访问配置代理--因为我的项目换了端口8091,访问ip:80/message下的接口会自动代理到8091下的接口,如果你还有其他接口信息,复制location块在下面再配置
    location /message/ {
                proxy_pass http://localhost:8091/message/;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
        
    error_page   500 502 503 504  /50x.html;  #根据http状态返回错误页面
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location @router {
               rewrite ^.*$ /index.html last;
   }

以上是基础的nginx配置,如果有图片代理需要在defaut.conf同级加location块,没有图片代理的可忽略,这里我的图片目录是/home/myjob/images/:

# 处理 /images/ 路径下的所有请求(包括子目录)
    location ^~/images/ {
        alias /home/myjob/images/;  # 直接映射到物理目录 /home/myjob/images/
        autoindex off;          # 允许列出目录内容(可选)
        index nothing_here;  # 关键:指定一个不存在的默认文件
        try_files $uri $uri/ =404;
        access_log off;        # 禁用日志(可选)
        expires 365d;           # 设置缓存时间为30天
        add_header Cache-Control "public, no-transform";
        proxy_cache img_cache;  # 在需要缓存的 location 中添加
        proxy_cache_valid 200 304 12h;  # 缓存有效期
        proxy_cache_use_stale error timeout updating;
   }
     #加快上面配的图片的访问速度
     location ~* \.(jpg|jpeg|png|gif|webp)$ {
            access_log off;  # 关闭图片请求日志
            expires 365d;    # 浏览器缓存1年
            add_header Cache-Control "public, immutable";
            add_header X-Accel-Expires 7d;  # 代理缓存7天

            # 启用缓存
            proxy_cache img_cache;
            proxy_cache_valid 200 304 12h;
            proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;

            # 启用预压缩(需提前生成.br和.gz文件)
            gzip_static on;

            # 大文件传输优化
            output_buffers 16 256k;  # 提升输出缓冲区
            directio 4m;     # 超过4MB文件使用直接IO
            aio threads;     # 异步IO处理
        }

如果有ssl需求需要去下载证书并配置,可以优先把http配置好后效果正常再去配置ssl
按照自己的实际需求配置完以后重启nginx:

systemctl restart nginx
#正常情况下重启后不会报错,如果报错查看nginx日志,有可能文件配置有错--/var/log/nginx/error.log

五、访问网址

访问云服务器的公网ip:http://ip即可看到页面效果,有的主页面是index的话需要访问http://ip/index

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值