五、安装 MySQL
mysql下载地址:https://dev.mysql.com/downloads/repo/yum/
接下来使用weget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm重新下载linux7版本的mysql yum包
使用yum install -y mysql80-community-release-el7-3.noarch.rpm 把这个包加入到版本库
进入到根目录后查看版本,
cd /
yum list mysql*
复制mysql-community-server.x86_64后使用yum执行安装
执行yum install -y mysql-community-server.x86_64即可正常安装成功
启动数据库并查看数据库的状态
systemctl start mysqld
systemctl status mysqld
数据库启动的时候会生成一个默认密码,保存在/var/log/mysqld.log这个日志文件中,所以使用grep 'password' /var/log/mysqld.log命令来搜索;如果搜索结果有多个,取一个时间最新的密码;
使用root账户和刚才查找到的密码登录mysql;
alert user username@localhost identified by 'new password'修改密码;新密码必须有大小字符,数字,特殊字符;
退出后重新登录;登录成功,所以说刚才修改密码成功。
cd 到sql.zip目录;
unzip -d dest_path zip_name解压缩;可以看到得到了三个.sql文件
登录mysql; 建一个名为community的数据库;
create database community;
use community;
导入sql数据;source path; souce 所有的表;
必须先导入init_schema.sql; 因为这里面是所有的基础表,init_data.sql里面的都是数据。
六、安装 Redis
进入到根目录下搜yum list redis*;
复制版本后使用yum 安装;
systemctl start redis启动redis; systemctl status redis;查看启动状态
七、安装kafka
进入/root目录,使用wegt 下载包
然后tar -zvxf path -C /opt;解压;
进入/opt下的kafka中,
进入kafka的config目录,查看是否需要修改zookeeper.properties和server.properties;
zookeeper.properties如果是tmp目录则不需要改;
查看server.properties的log-dir是否符合linux路径规范,符合则不需要改动;
修改consumer.properties中的group-id为 community-consumer-group(这个修改是因为我的项目的配置文件中用的是“community-consumer-group"所以需要改,如果你没这个需要,可以不用改动这个)
退到kafka根目录:
后台启动zookeeper后启动kafka;
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
启动kafka:
nohup bin/kafka-sever-start.sh config/server.properties 1>/dev/null 2>&1 &
测试是否安装成功;查看kafka的所有主题;bin/kafka-topics.sh --list --bootstrap-server localhost:9092;
一直启动不成功,连不上broker
网上百度了阿里云部署kafka, 发现需要在安全组中设置开放9092这个端口
在配置列表中加上开发9092端口的配置
重启zookeeper 和 kafka, 因为我不知道怎么重启,我就直接杀进程了,因为刚才重试了好多次,所以使用ps命令查看有好几个java进程,把这三个java进程都杀掉
再次输入刚才启动zookeeer 和 kafka的命令
查看 topc 列表判断是否启动成功,输入命令后控制台停顿几秒后没有输出任何东西后打印出了终端提示符,说明应该是启动成功了的,因为现在的kafka本来就是空的,不存在任何topic
八、安装elasticSearch
先wegt下载好elasticSearch.tar.gz和一个分词插件;
下载elasticsearch
在官网找到下载地址后复制链接
点击自己想要的版本
页面跳转到下面的页面,鼠标右键 linux 版本后复制链接
进入到/root 目录后使用下面的命令开始下载安装包,下面的url是你刚才复制的url
wget -i -c https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-linux-x86_64.tar.gz
查看/root当前目录是否有elasticsearch的安装包,通过查看,发现已经有了
查看当前目录是否有ik安装包
使用tar -zxvf path -C /opt解压elasticsearch 到/opt目录下;
unzip -d /opt/ES目录/plugins/ik 包名;来解压分词插件;
unzip -d /opt/elasticsearch-7.6.2/plugins/ik elasticsearch-analysis-ik-7.6.2.zip
进入到es目录;查看后进入到plugin目录,查看后进入到ik目录;查看分词插件的文件
退回到es/config中,修改es.yml; 配置cluster.name:nowcoder
配置path.data: /tmp/elastic/data; 配置path:logs: /tmp/elastic/logs;
cluster.name: nowcoder
path.data: /tmp/elastic/data
path.logs: /tmp/elastic/logs
修改jvm.opstions; 修改所占内存大小;
ElasticSearch 不允许root用户启动,所以必须创建一个用户;新建用户并赋予权限,
groupadd nowcoder
useradd nowcoder1 -p 123456 -g nowcoder
cd /opt
chown -R nowcoder1:nowcoder *
cd /tmp
chown -R nowcoder1:nowcoder *
切换到新用户,启动ElasticSearch
su - nowcoder1
cd /opt/elasticsearch-7.6.2/
elasticsearch-7.6.2]$ bin/elasticsearch -d
切换回root用户,查看 ElasticSearch是否健康,成功打印出来了状态信息,所以Elasticsearch应该是安装且启动成功了
su -
curl -X GET "localhost:9200/_cat/health?v"
九、安装wkhtmltopdf
进入根目录下使用yum搜索wkhtmlpdf;
yum list wkhtmltopdf*
复制版本后使用yum命令安装;
yum install -y wkhtmltopdf.x86_64
-- 安装一个gui工具,yum list *vfb*;
yum list *xvfb*
复制版本后使用yum命令安装;
yum install -y xorg-x11-server-Xvfb.x86_64
测试生成长图
xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltoimage https://www.baidu.com 1.png
上面这个命令太长了,所以我们尝试使用脚本封装上面这个长命令,把命令中url 前面的部分都封装到一个脚本中
cd /opt/
vim wkhtmltoImage.sh
xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltoimage "$@"
给这个脚本加上可执行权限:chomod +x wkhtmltoimage.sh
回到test目录,测试生成图片
cd /root/test
/opt/wkhtmltoimage.sh https://www.baidu.com 2.png
十、安装tomcat
回到上一级/root目录,我们把所有安装包都统一安装在/root 目录下,使用wegt下载tomcat包,
wget -i -c https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-9/v9.0.40/bin/apache-tomcat-9.0.40.tar.gz
查看当前目录的文件,可以看到tomcat确实已经下载完成了
解压缩到/opt目录下;
进入到/opt目录,确实已经解压成功
配置环境变量;配置好tomcat的bin路径加到/etc/profile中;
修改完后保存退出,使用 source /etc/profile 来使刚才配置的环境变量生效
因为服务器上的8080端口容易遭到较多攻击,也为了不和其他项目的端口冲突,所以这里把tomcat的默认端口修改成8090,进入tomcat目录的conf目录中,
修改server.xml文件,把8080修改成8090
在tomcat的 bin目录下输入 startup.sh 启动tomcat
测试是否能通过浏览器访问tomcat;
在浏览器中使用ip:port访问,x.x.x.x:8090, (x.x.x.x替换为你的服务器公网ip); 在浏览器中输入ip:port后发现页面找不到,
一开始以为是tomcat还启动,所以等了一会,再次访问,还是页面没找到,找到原因是阿里云的8090端口没有开放,需要在安全组中配置8090端口开
开放端口后再次使用 ip:8090就能成功获取到tomcat的默认页面了,所以tomcat是安装成功了的。
十一、安装nginx
进入到根目录,yum 命令搜索nginx,复制找到的版本
cd /
yum list nginx*
使用yum命令安装的软件都会默认安装到 /etc/目录下,所以我们修改 nginx目录下的nginx.conf配置文件时,路径必须带上/etc/前缀
vim /etc/nginx/nginx.conf
配置分发请求;注释掉server{};
增加upsteam myserver{}和server{}语句块;
upstream myserver{
server 127.0.0.1:8090 max_fails=3 fail_timeout=30s;
}
server{
listen 80;
server_name 服务器外网ip;
location / {
proxy_pass http://myserver;
}
}
安全组中增加 80 端口
启动nginx;
systemctl start nginx;
systemctl status nginx;
启动完nginx后,我们就可以通过nginx来代理tomcat了,所以可以直接使用ip来访问项目;而不需要端口号
关闭nginx;
在当前路径下输入shutdown.sh;
因为我们将来想直接通过ip访问到我们自己的项目,而且tomcat的默认项目,所以我们必须删除掉 tomcat路径中的
webapp中的ROOT项目,这个项目就是tomcat的默认项目,将来我们把我们自己的项目war包也取名为ROOT.war,
这样tomcat启动的时候就会自动加载我们的项目
所以进入到tomcat/webapp; 删掉 ROOT 项目, 因为webapp下的项目都是我不需要的,所以我就把webapp下的所有项目都删了
十二、修改项目本身
1. 修改项目路径为""; global.js中项目名也要改为"";
2. 在HomeController中转发"/"到"/index";
3. 在pom.xml中申明打包为war包,
build中申明;pakage打包为root.war
4. 拷贝配置文件两份;我的项目resources有两个配置文件,分别是 application.properties 和 logback-spring.xml ,所以我把这两个文件都分别拷贝了2份,
分别以develop 和 produce 为后缀
在默认配置文件中申明使用的文件;
在后缀为produce的文件中修改相应的参数(mysql密码;domain改成ip; upload路径;wk命令改成我们的脚本),
logback文件的路径改一下
5. 改变项目的启动的方式,启动tomcat即启动项目,而不用启动Applicaiton.class; 创建CommunityServlet.class;
5. clean掉target目录;对项目进行压缩
6. 传到root目录下;使用 unzip 命令解压到当前目录;
在项目根目录下Maven构建,使用mvn clean package -Dmaven.test.skip=true,跳过测试;
进入到target目录下;移动root.war到tomcat/webapp目录下;
mv ROOT.war /opt/apache-tomcat-9.0.40/webapps/
systemctl start tomcat启动tomcat;
startup.sh启动nginx
进入到tomcat 的 webapp目录,观察发现ROOT.war已经自动解压成了一个ROOT可运行项目
进入到tomcat的logs目录,查看catalina.xxx.log;通过启动日志,没有看到异常
进入到/tmp目录下看我们项目的日志
浏览器访问项目,测试所有功能,可以正常通过ip地址访问到项目,其他功能也是正常可以使用的
至此,项目部署成功
ElasticSearch数据的导入
我本来想把本地的Elasticsearch的配置文件ip改为服务器ip, 然后在本地运行测试方法,把把数据插入到服务器的Elasticsearch中,但是发现连不上服务器的这个9200端口,所以放弃了这种方法。
所以改用下面这种方式:
先复制原来的community项目,但是把测试方法放在HomeController下,即
所以如果把这个项目部署到服务器上,那只需访问“/"路径即可完成Elasticesarch的数据初始化。
但是注意把这个项目部署到服务器上之前要先把当前服务器中tomcat/webapps目录下的ROOT.war保存在其他文件夹中,然后把这个项目的war包放到webapps目录下,因为两个项目如果路径冲突的话会优先考虑名为ROOT的项目。