自建博客(4)

309 阅读3分钟

经过对博客网站个性化的修改,现在开始对博客开始部署,前端采用nginx部署,并采用反向代理访问后端,后端采用jar包部署。


后端部署

因为redis和MySQL已经部署在服务器当中,现在直接进行后端的部署。

部署流程:

1.使用Maven打包,使用idea自带的进行打包(点击package),也可采用mvn package命令进行打包。

image-20240605182608401

2.将生成的jar包上传到服务器

image-20240605183047670

3.启动后端

nohup java -jar blog-api-0.0.1.jar >jarLog.txt &

nohup 使其在用户注销后继续运行的命令。nohup 命令的名称来源于 "no hang up",意为 "不挂起"。

java -jar blog-api-0.0.1.jar 是用来启动一个 Java 应用程序的命令。

> 是一个重定向操作符,它将命令的标准输出(stdout)重定向到后面指定的文件中。在这个例子中,它将 java -jar blog-api-0.0.1.jar 命令的输出重定向到 jarLog.txt 文件中。

& 是一个后台执行操作符,它允许命令在后台运行,即使终端关闭也不会影响程序的执行。

image-20240605183905319

查看日志,启动成功!

注意:要修改配置文件为服务器ip

下面总结一下遇到的问题

问题总结:

1.版本问题

image-20240605182401298

原因:lombok的版本和jdk的版本不一致,所以导致了lombok中访问不到想要访问的jdk中的类,可能这个类在新版的jdk中已经移除或者是更改了包名称等,导致lombok不能访问。

解决方法:

修改项目结构为java1.8

image-20240605184137415

修改设置->Maven->importing的JDK

image-20240605184335101

2.测试问题

image-20240605185006315

原因:未通过单元测试,因为修改了配置文件

解决方法:

将单元测试内文件删除即可

image-20240605185049738

前端打包

前端采用nginx部署,并使用docker安装nginx

docker安装nginx

1.准备

创建文件映射目录

#conf存放配置文件,html存放前端项目,logs打印日志
mkdir -p /usr/local/nginx/conf
mkdir -p /usr/local/nginx/html
mkdir -p /usr/local/nginx/logs

2.启动nginx容器

docker run -d \
-p 80:80 \
-p 443:443 \
--name nginx \
--restart=always \
--network-alias nginx \
-e TZ="Asia/Shanghai" \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/nginx/logs/nginx:/var/log/nginx \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-v /usr/local/nginx/cert:/etc/nginx/cert \
nginx

3.访问ip+端口成功

image-20240605190111559

部署前端

1.打包前端

首先修改前端的请求配置文件cmsrequest.js,viewaxios.js,修改为服务器的地址

image-20240605190859151

npm run build

本项目采用在一个server配置多个项目(共用一个端口)

因此需要调整cms项目的vue.config.js文件的publicPath属性值

publicPath: '/admin/'

2.上传服务器

上传到nginx的html文件夹下

image-20240605191815702

3.修改nginx.conf文件


user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
    
    server {
        listen       80;
        server_name  服务器ip或域名; # !!! 换成自己的ip

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / { ## 博客前端项目
            root   /usr/share/nginx/html/dist; # 重要!!! 配置docker容器中的路径
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
        }
        
        location /admin/ { ## 管理前端项目
            alias   /usr/share/nginx/html/dist_cms/; # 重要!!! 配置docker容器中的路径
            index  index.html index.htm;
            try_files $uri $uri/ /admin/index.html;
        }
        
        location /api/{
            proxy_pass http://服务器ip/; ## 重要!!!proxy_pass 需要设置为后端项目所在服务器的 IP
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }
        
        location /admin-api/{
            proxy_pass http://服务器ip/admin/; ## 重要!!!proxy_pass 需要设置为后端项目所在服务器的 IP
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

    }

}

访问网站:leetntdot.cn/为博客网站 leetntdot.cn/admin为管理网站

部署成功

image-20240605203429414

image-20240605203225482