介绍一个开源博客项目并部署到Nginx服务器,kafka原理和面试笔试题目

在 localhost:8080 启动项目

npm run dev

项目的作者江南一点雨vueblog项目中已经配置了端口转发,将数据转发到SpringBoot上,因此项目启动之后,在浏览器中输入http://localhost:8080就可以访问我们的前端项目了,所有的请求通过端口转发将数据传到SpringBoot中(注意此时不要关闭SpringBoot项目)。

这时候在浏览器中输入http://localhost:8080就能进入项目的登录页面了

本地开发环境登录页面

5 部署到Linux服务器
5.1 后端blogserver项目打包部署

(1) 在blogserver项目所在文件夹 鼠标点击右键->Git Bash Here, 在控制台中执行mvn clean package命令把项目达成一个jar包,在控制台日志中看到如下信息表明打包成功

[INFO] — maven-jar-plugin:3.1.2:jar (default-jar) @ blogserver —

[INFO] Building jar: D:\SpringBootProject\VBlog\blogserver\target\blogserver-0.0.1-SNAPSHOT.jar

[INFO]

[INFO] — spring-boot-maven-plugin:2.2.7.RELEASE:repackage (repackage) @ blogserver —

[INFO] Replacing main artifact with repackaged archive

[INFO] ------------------------------------------------------------------------

[INFO] BUILD SUCCESS

[INFO] ------------------------------------------------------------------------

[INFO] Total time: 11.271 s

[INFO] Finished at: 2021-05-23T22:15:44+08:00

[INFO] ------------------------------------------------------------------------

此时进入blogserver项目的target目录下可以看到生成了一个jar包格式的文件:blogserver-0.0.1-SNAPSHOT.jar

(2)使用XShell6 ssh客户端连接软件登录自己的Linux云服务器,执行cd /usr/local命令进入/usr/local目录

(3)执行 mkdir vueblog 命令创建vueblog文件夹,使用XShell6自带的Xftp文件传输工具将blogserver-0.0.1-SNAPSHOT.jar文件上传到/usr/local/vueblog目录下

(4) 执行cd ./vueblog 命令进入/usr/local/vueblog目录后执行mkdir logs命令创建日志文件夹

(5) 在当前目录执行vim startup.sh命令创建项目的启动bash脚本文件

startup.sh文件内容如下:

#!/bin/bash

jar_name=blogserver-0.0.1-SNAPSHOT.jar

port=8081

log_path=./logs

ID=ps -ef | grep $port | grep -v "grep" | awk '{print $2}'

echo $ID

if [ {$ID} ]; then

echo ‘App is Running,Kill the Proccess!’

kill -9 $ID

echo ‘Stop Success!’

fi

rm -rf $log_path

mkdir $log_path

echo ‘Start to Running the Application!’

nohup java -jar -Dlogging.path=$log_path -Dspring.profiles.active=prod j a r n a m e > jar_name> jarname>log_path/catalina.out 2>&1 &

tail -f $log_path/catalina.out

编辑完成后按esc键的同时输入":"号,然后输入wq命令回车保存退出

(6) 在当前目录执行vim stop.sh命令创建项目的关闭bash脚本文件

stop.sh文件内容如下:

#!/bin/bash

port=8081

ID=ps -ef | grep $port | grep -v "grep" | awk '{print $2}'

if [ ${ID} ]; then

echo ‘the application process id is $ID’

echo ‘kill the prcocess!’

kill -9 $ID

echo ‘stopped the application success!’

else

echo ‘the application is already stopped!’

fi

编辑完成后以保存startup.sh相同的方式保存退出

(7) 给项目启动和关闭bash脚本文件授予读、写和执行权限

chmod 775 startup.sh stop.sh

(8) 执行启动脚本启动blogserver服务

./startup.sh

当控制台中出现如下日志信息时表明项目启动成功:

LOGBACK: No context given for c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1748225580

. ____ _ __ _ _

/\ / _ __ _ () __ __ _ \ \ \ \

( ( )___ | '_ | '| | ’ / _` | \ \ \ \

\/ _)| |)| | | | | || (| | ) ) ) )

’ || .__|| ||| |__, | / / / /

=|_|======|/=////

:: Spring Boot :: (v2.2.7.RELEASE)

2021-05-22 18:59:30.899 INFO 24260 — [ main] org.sang.BlogserverApplication : Starting BlogserverApplication v0.0.1-SNAPSHOT on VM_0_10_centos with PID 24260 (/usr/local/vueblog/blogserver-0.0.1-SNAPSHOT.jar started by root in /usr/local/vueblog)

2021-05-22 18:59:30.901 INFO 24260 — [ main] org.sang.BlogserverApplication : The following profiles are active: prod

2021-05-22 18:59:34.055 INFO 24260 — [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8081 (http)

2021-05-22 18:59:34.080 INFO 24260 — [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]

2021-05-22 18:59:34.080 INFO 24260 — [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.34]

2021-05-22 18:59:34.233 INFO 24260 — [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext

2021-05-22 18:59:34.233 INFO 24260 — [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3197 ms

5.3 前端vueblog项目部署

(1) 修改配置文件

修改vueblog/config目录下的index.js文件中build配置项中的assetsPublicPath属性的值为 '/vueBlog/'

assetPublicPath

(2) 修改路由配置

修改vueblog/src/router目录下的index.js文件,在Router对象中增加base和mode属性配置

routerBaseMode

base的值为'/vueBlog/',mode的属性值为'history'

(3) 打生产包

修改完成后,在vueblog项目的根目录下鼠标右键->Git Bash Here 在控制台中执行npm run build 命令完成打包。控制台出现如下日志表明打包成功:

Build complete.

Tip: built files are meant to be served over an HTTP server.

Opening index.html over file:// won’t work.

(4) 修改Nginx服务配置文件

Xshell6连接的Linux云服务客户端中执行cd /usr/local/nginx/html 切换到nginx服务的安装目录下的html文件夹

执行 mkdir vueBlog 创建新的文件夹vueBlog

执行 cd ../命令回退到/usr/local/nginx目录,先执行./sbin/nginx -s stop 命令关停nginx,然后执行vim ./conf/nginx.conf 命令修改nginx.conf配置文件

修改后的配置文件 如下:

#user nobody;

worker_processes 1;

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#pid logs/nginx.pid;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

gzip on;

server {

listen 80;

server_name www.javahsf.club;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {

root html;

index index.html index.htm;

proxy_pass http://127.0.0.1:7200;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header Host $http_host;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_set_header X-Real-IP $remote_addr;

proxy_buffering off;

sendfile off;

proxy_max_temp_file_size 0;

client_max_body_size 10m;

client_body_buffer_size 128k;

proxy_connect_timeout 90;

proxy_send_timeout 90;

proxy_read_timeout 90;

proxy_temp_file_write_size 64k;

proxy_http_version 1.1;

proxy_request_buffering off;

}

error_page 404 /404.html;

redirect server error pages to the static page /50x.html

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

server {

listen 3000;

server_name www.javahsf.club;

location / {

root html;

index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

server {

listen 8886;

server_name javahsf.club www.javahsf.club;

location /vueBlog {

alias html/vueBlog;

index index.html index.htm;

try_files $uri $uri/ /vueBlog/index.html;

}

location / {

proxy_redirect off;

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://localhost:8081;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

}

nginx.conf文件的修改参考了笔者在微信公众号中发布的上一篇文章我想在同一个域名下部署多个项目怎么办?一文搞懂Nginx同域名下部署多个vue项目Nginx的配置内容,给vueblog服务分配了8886的访问端口号,同时给 vueBlog 项目下的'/'路径配置了反向代理服务,代理服务指向后端服务http://localhost:8081, 这样就不需要配置跨域了。注意每一个配置项中都必须以分好结尾,不然检查配置文件时会报语法错误

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

最后,强调几点:

  • 1. 一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你的简历来问的; 能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试之前好好回顾一下自己所做的项目;
  • 2. 和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是如何使用的;
  • 3. 注意自己开源的Github项目,面试官可能会挖你的Github项目提问;

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目。

面试答案

三面头条+四面阿里+五面腾讯拿offer分享面经总结,最终入职阿里

三面头条+四面阿里+五面腾讯拿offer分享面经总结,最终入职阿里

三面头条+四面阿里+五面腾讯拿offer分享面经总结,最终入职阿里

2002498900)]

最后

最后,强调几点:

  • 1. 一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你的简历来问的; 能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试之前好好回顾一下自己所做的项目;
  • 2. 和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是如何使用的;
  • 3. 注意自己开源的Github项目,面试官可能会挖你的Github项目提问;

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目。

面试答案

[外链图片转存中…(img-4hDVERCn-1712002498900)]

[外链图片转存中…(img-0YmW16MP-1712002498901)]

[外链图片转存中…(img-qgectGXu-1712002498901)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值