仿牛客社区项目部署步骤,事无巨细

项目部署须知

前提:需要购买阿里云服务器,新用户可免费体验,centos版本要求为7.6,但在选择的时候没看到7.6版本,就选了7.9的。同2核4G。
购买云服务器后,一定记得要重置密码,后续需要使用putty客户端连接云服务器,要输入密码验证root身份。使用FinalShell或者XShell都可以。

下载

下载putty(windows),在官网下载即可

putty客户端连接云服务器
在这里插入图片描述
设置连接后多长时间无响应就关闭

下载所需安装包

注意:如果直接在putty中使用wget命令下载,文件小还好说,文件大起来,下载的速度巨慢,可以先将文件下载到本地,然后通过命令pscp将文件上传到服务器上。(后面会介绍

连接进入putty客户端(省略输入用户名密码的步骤)
在这里插入图片描述
以下下载链接都可以在官网上找到

  • Maven
wget -i -c 
https://dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.tar.gz
  • MySQL
wget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-10.noarch.rpm
  • Kakfa
wget -i -c https://downloads.apache.org/kafka/3.5.1/kafka_2.12-3.5.1.tgz
  • Elasticsearch
wget -i -c https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.6-linux-x86_64.tar.gz
  • ik分词器
wget -i -c https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.6/elasticsearch-analysis-ik-7.17.6.zip
  • Tomcat
wget -i -c https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz

从本地上传压缩文件到服务器上
进入到你需要上传文件的文件目录
在这里插入图片描述
在当前目录下进入cmd输入(以上传到root目录为例)

pscp community-init-sql-1.5.zip root@自己的公网ip:/root

输完命令后回车会提示你需要验证密码,可以将密码添加到缓存(y/n),输入密码后回车,就能在服务器上看到当前上传的文件啦。

  • 安装解压缩工具unzip
yum install -y unzip.x86_64
  • 安装jdk
# 可以先看下yum中关于java开头的安装包
yum list java*
# 找到合适的安装包(这里安装jdk1.8)
yum install -y java-1.8.0-openjdk.x86_64
# 安装完成后,查看jdk版本
java -version

添加相关配置

接下来对安装包进行解压缩,并做相关配置

配置Maven(将Maven解压缩到opt目录下)

tar -zvxf apache-maven-3.9.4-bin.tar.gz -C /opt

将Maven的目录配置到环境变量
Maven所在目录

配置环境变量需要使用vi编辑,以下是vi编辑器的常用命令(扫盲,我自己也不熟)

# insert,表示需要在当前位置进行编辑
i
# 编辑完成后要保存。退出编辑模式(esc),保存写入的内容(w),退出(q)
esc
:wq

进入修改环境变量path的文件:profile

vim /etc/profile

在这里插入图片描述
在这里插入图片描述

# 修改环境变量path后,让环境变量生效
source /etc/profile
# 测试环境变量是否已经生效
# 查看maven版本
mvn -v

在这里插入图片描述
还需要修改Maven的配置文件,将镜像仓库设置为阿里云仓库
同样使用vi命令,编辑maven目录下,conf目录下的settings.xml文件

# 假设当前目录为:/opt/apche-maven-3.9.4
vim conf/settings.xml

在这里插入图片描述

安装MySQL

# 我们可以先看下yum中关于mysql的安装包,切换到"/"目录,输入以下命令
yum list mysql*
# 可以看到很多都是低版本的,我们需要使用高版本的mysql
# 切换到root目录下安装,安装mysql的yum仓库
yum install -y mysql80-community-release-el7-10.noarch.rpm
# 切换回"/"目录下,会发现多了很多新版本的安装包
# 安装一个mysql的服务端
yum install -y mysql-community-server.x86_64

安装好以后,我们可以启动mysql,查看mysql的启动状态

 # 启动mysql
systemctl start mysqld
# 查看mysql状态
systemctl status mysqld

mysql在安装完成之后,会自动生成一个登录密码,这个登录密码在mysql的日志文件中,我们可以通过以下命令来查找以下mysql日志中的密码。

grep 'password' /var/log/mysqld.log

在这里插入图片描述
访问mysql,修改密码

输入mysql -uroot -p回车,会提示你输入密码,把刚刚复制的密码粘贴
进入后输入新密码(注意:新密码需要:大小写字母、特殊符号、数字)
alter user root@localhost identified by '新密码';
回车
然后退出mysql,输入exit,重新登录
msql -uroot -p回车,输入新密码
登录成功后,说明mysql配置好啦

接下来需要向MySQL中添加数据,切换到root目录下,解压缩sql文件

unzip -d /root community-init-sql-1.5.zip

在这里插入图片描述

解压sql文件后,登录mysql,准备导入数据

# 创建数据库
create database community
# 使用这个数据库
use commmuntiy
# 导入数据,注意导入顺序
source /root/init_schema.sql;
source /root/tables_mysql_innodb.sql;
source /root/init_data.sql;
# 查看当前数据库中的表	
show tables;
# 处理user表中header_url字段带有localhost的头像路径,模糊匹配
# 如果导入的是老师资料中的sql脚本就不用修改header_url
update user set header_url = 'http://images.nowcoder.com/head/333t.png' where header_url like '%localhost%';

安装Redis

# 切换到“/”目录,查看redis相关的库
yum list redis*
# 安装redis
yum install -y redis.x86_64
# 启动redis
systemctl start redis
# 查看redis的启动状态
systemctl status redis

安装Kafka

切换到root目录下,解压缩kafka到opt目录
注意:亲测使用kafka_2.13-3.5.1的版本在测试kafka是否正常启动那一步的时候会报错,报错信息:Error: Could not find or load main class kafka.admin.TopicCommand,最后没找到解决方法,就换了kafka的版本,换了2.12-3.5.1的就好了。

cd root
# 解压缩kafka到opt目录下
tar -zvxf kafka_2.12-3.5.1.tgz -C /opt
# 进入到opt/kafka_2.12-3.5.1目录,查看kafka有没有需要修改的地方
# 主要看zookeeper.properties和server.properties这两个配置文件
vim zookeeper.properties
vim server.properties
# 都没啥需要改的,数据和日志存放的目录都是符合规范的

zookeeper.properties
server.properties
启动zookeeper和kafka,设置为后台启动

# 进入到kafka目录下
cd /opt/kafka_2.12-3.5.1
# 后台启动zookeeper
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
# 后台启动kafka
nohup bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
# 测试kafka是否正常启动(查看当前kafka下的所有主题)
bin/kafka-topics.sh --list --bootstrap-server localhost:9092

安装Elasticsearch

切换到root目录下

# 解压缩es到opt目录下
tar -zvxf elasticsearch-7.17.6-linux-x86_64.tar.gz -C /opt
# 解压缩ik分词器到es的plugins目录下,放到ik目录下,ik目录不存在,这样写会自动创建
unzip -d /opt/elasticsearch-7.17.6/plugins/ik elasticsearch-analysis-ik-7.17.6.zip
# 对es做配置,进入到conifg目录下对elasticsearch.yml文件做修改
vim elasticsearch.yml

对es的配置文件做修改

# 修改es服务器对于整个服务的内存占用,默认占用4G
# 不同版本的es,默认占用也不一样。视频中使用的6.4.3默认占用1g,我使用的7.17.6默认占用4g
vim jvm.options

在这里插入图片描述
es的启动不能通过root用户,因此这里要创建普通用户

# 建立用户组,一个组可以包含多个用户
groupadd nowcoder
# 创建用户nowcoder1,设置密码为123,并将用户添加到用户组
useradd nowcoder1 -p 123 -g nowcoder
# 不知道为啥我这里直接创建用户然后添加到组没成功,只创建了用户
# 手动将用户添加到组
usermod -G nowcoder nowcoder1
# 修改opt目录和tmp目录的访问权限,允许nowcoder1访问
cd /opt
chown -R nowcoder1:nowcoder *
cd /tmp
chown -R nowcoder1:nowcoder *
# 切换nowcoder1用户登录
su - nowcoder1
cd /opt/elasticsearch-7.17.6
# 后台启动es
bin/elasticsearch -d
# 启动后,切换回root用户登录,需要输入密码
su -
# 测试访问es
curl -X GET "localhost:9200/_cat/health?v"

安装wkhtmltopdf

# yum安装,切换到"/"目录
cd /
yum list wkhtmltopdf*
yum install -y wkhtmltopdf.x86_64

wk工具在linux中需要GUI程序的支持,因此在这里安装一个虚拟的GUI

yum list *xvfb*
yum install -y xorg-x11-server-Xvfb.x86_64
# 测试wk工具的使用,进入到测试文件夹test
cd /root
mkdir test
cd test
# 设置生成图片的分辨率等信息,生成百度网页为图片1.png
xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltoimage https://www.baidu.com 1.png
# 将上面的一长串命令封装为一个脚本,方便执行
cd /opt
vim wkhtmltoimage.sh
# 把复制的命令粘贴上去,然后esc :wq保存

在这里插入图片描述

# 保存后给这个脚本添加可执行的权限
chmod +x wkhtmltoimage.sh
# 切换回test目录测试,完成
/opt/wkhtmltoimage.sh https://www.zhihu.com 2.png

在这里插入图片描述

安装Tomcat

# 解压缩tomcat到opt目录
cd /root
tar -zvxf apache-tomcat-9.0.80.tar.gz -C /opt
# 配置tomcat的环境变量
vim /etc/profile
source /etc/profile

在这里插入图片描述

# 启动tomcat
startup.sh
# 关闭tomcat
shutdown.sh

在这里插入图片描述
流泪,这里弄了好久都没找到问题,一直访问不了,原来是这个规则

安装Nginx

# 切换到“/”
yum list nginx*
yum install -y nginx.x86_64
# 配置nginx分发请求给tomcat服务器,在nginx的配置文件中
vim /etc/nginx/nginx.conf

在这里插入图片描述
添加以下配置
在这里插入图片描述

# 启动nginx(使用yum安装的都可以用systemctl启动)
systemctl start nginx
systemctl status nginx

注意:这里即使把nginx开启了,在浏览器直接输入ip可能还是不能访问(不加端口号)

# 设置这行参数
setsebool -P httpd_can_network_connect 1
# 如果提示seLInux未开启,参考这篇文章:https://help.aliyun.com/zh/ecs/use-cases/enable-or-disable-selinux
# 另一个考虑的原因可能是云服务器的安全组规则:没有把80端口的访问打开

具体原因不知道(应该就是说要开启80端口的访问权限意思)

项目部署

在这里插入图片描述

# 删除tomcat下webapps目录下的所有项目
cd /opt/apache-tomcat-9.0.80/webapps
rm -rf *

对原有代码修改的部分略…
修改完成后将本地项目压缩为zip,传到服务器的root目录下

# windows中,切换到项目zip所在路径,打开cmd
pscp community.zip root@8.134.100.218:/root
# linux中,切换到root目录,解压community.zip
unzip -d /root community.zip
cd community
# 编译,打包,不执行测试类
mvn clean package -Dmaven.test.skip=true
# target就打包好了
cd target
# 将ROOT.war移动到tomcat的webapps目录下
mv ROOT.war /opt/apache-tomcat-9.0.80/webapps/
# 这时就可以启动tomcat,访问我们的项目了
startup.sh

在进行mvn打包的时候报错:好像是说,没有提供可运行的环境,不能只有jre,还需要有jdk【不明白安装jdk的时候,变成只安装了jre了】

[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.584 s
[INFO] Finished at: 2023-10-06T11:42:59+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project community: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[ERROR] 
[ERROR] -> [Help 1]

解决办法:通过yum再安装一个java-devel就可以了

yum install -y java-devel

牛客评论区中也有小伙伴遇到了这样的报错
在这里插入图片描述
这个问题我一开始本来不想通过安装java-devel的方式解决,我看了我的jdk安装目录【/usr/lib/jvm/java-1.8.0…】,发现里面只有一个jre文件夹【很奇怪,本来应该包含其他诸如bin,lib之类的文件夹的】,我猜想是不是少了这些文件夹的原因,导致我mvn打包的时候报错失败,是不是我安装jdk的时候安错了安少了等等。如果有小伙伴知道什么原因可以在评论区留言,不吝感谢!

【需要启动的应用:redis zookeeper kafka es tomcat】
一切都启动完成之后,就可以通过公网ip直接访问到我们自己的项目啦~

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Kafka是一个高性能的分布式消息队列系统,可以实现高吞吐量、低延迟的消息传递。它支持点对点和发布-订阅两种消息传递模式。在仿牛客项目中使用Kafka可以实现消息的异步处理和分布式架构。 使用Kafka的第一步是创建一个主题(topic),主题既是消息的类别,也是消息在Kafka中的存储位置。可以使用命令行工具kafka-topics.bat来创建主题。例如,可以使用以下命令来创建一个名为test的主题: bin\windows\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test 上述命令中,--bootstrap-server参数指定了Kafka服务器的地址和端口,--replication-factor参数指定了主题的副本数,--partitions参数指定了主题的分区数。创建主题后,可以向主题中发送消息,并由消费者进行消费。 要列出已经存在的主题,可以使用以下命令: kafka-topics.bat --list --bootstrap-server localhost:9092 需要注意的是,以上命令中的localhost:9092是Kafka服务器的地址和端口,根据实际情况进行修改。 总结起来,在仿牛客项目中使用Kafka,首先需要创建一个主题,然后可以使用相关命令行工具进行消息的发送和消费。这样可以实现消息的异步处理和分布式架构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [仿牛客论坛项目学习记录——5 Kafka 构建TB级异步消息系统](https://blog.csdn.net/dadayangpei/article/details/127173098)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值