Echo 在 Linux 服务器上的部署

@[toc] --- ## 环境配置 我购买的服务器是腾讯云的 CentOS 7.6 / 2 核 4 G,注意你的服务器内存不能小于 4G,否则无法支撑我们这个项目。需要在服务器上安装部署的组件如下图: ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210217153800.png) ### JRE ① 通过 yum 命令快速下载并安装 JRE: ```bash yum install -y java-1.8.0-openjdk.x86_64 ``` ② 再下个东西:(不知道有啥用,但是不下后续 maven 打包的时候可能会出 bug) ```bash yum install -y java-devel ``` ### Maven ① 下载 Maven 3.6.3: ```bash wget -i -c https://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz ``` ② 解压 Maven 到 opt 目录(一般安装程序都放在 opt 目录) ```bash tar -zvxf apache-maven-3.6.3-bin.tar.gz -C /opt ``` ③ 配置环境变量 ```bash vim /etc/profile ``` ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210210122212.png) 使其生效 ```bash source /etc/profile ``` ④ 查看是否完成: ```bash echo $PATH mvn -version ``` ⑤ 将 Maven 的镜像修改为阿里的: ```bash cd /opt cd apache-maven-3.6.1/ cd conf vim settings.xml ``` ```xml <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <!--<mirrorOf>central</mirrorOf> --> <mirrorOf>*</mirrorOf> </mirror> ``` ### MySQL #### 安装 ① 下载并安装 MySQL 5.7 官方的 Yum Repository ```bash [root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm ``` ② 使用上面的命令就直接下载了安装用的 Yum Repository,大概 25KB 的样子,然后就可以直接 yum 安装了: ```bash [root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm ``` ③ 还需要安装 MySQL 的服务器: ```bash [root@localhost ~]# yum -y install mysql-community-server ``` 至此 MySQL 就安装完成了,然后是对 MySQL 的一些设置。 #### 配置 ① 首先启动 MySQL ```bash [root@localhost ~]# systemctl start mysqld.service ``` ② 查看 MySQL 运行状态: ```bash [root@localhost ~]# systemctl status mysqld.service ``` ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210210124449.png) ③ 此时 MySQL 已经开始正常运行,不过要想进入 MySQL 还得先找出此时 root 用户的密码,通过如下命令可以在日志文件中找出密码: ```bash [root@localhost ~]# grep "password" /var/log/mysqld.log ``` ![img](https://images2017.cnblogs.com/blog/1079354/201707/1079354-20170726202722796-1932560887.png) 如下命令进入数据库: ```bash [root@localhost ~]# mysql -uroot -p ``` 输入初始密码,此时不能做任何事情,因为 MySQL 默认必须修改密码之后才能操作数据库。这里有个问题,新密码设置的时候如果设置的过于简单会报错: ![img](https://images2017.cnblogs.com/blog/1079354/201707/1079354-20170726203136000-1398594667.png) 原因是因为 MySQL 有密码设置的规范,具体是与 validate_password_policy 的值有关: ![img](https://images2017.cnblogs.com/blog/1079354/201707/1079354-20170726203904812-1008115240.png) 我们可以通过如下命令做相应的修改: ```bash mysql> set global validate_password_policy=0; mysql> set global validate_password_length=1; ``` 此时密码就可以设置的很简单,例如 1234 之类的。修改密码: ```bash mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; ``` 到此数据库的密码设置就完成了。 ④ 但此时还有一个问题,就是因为安装了 Yum Repository,以后每次 yum 操作都会自动更新,需要把这个卸载掉: ```bash [root@localhost ~]# yum -y remove mysql57-community-release-el7-10.noarch ``` 这样才算真的完成了。 #### 上传本地数据库文件 ① 将本地的数据库文件(本项目的 sql 文件夹)压缩再上传到服务器: ```bash cd E:\GreateCommunity pscp -P 22 community-init-sql.zip root@1.15.127.74:/root ``` ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210210134348.png) ② 解压上传的数据库文件 ```bash cd /root unzip -d /root community-init-sql.zip ``` > 删除文件夹:rm rf -文件夹名字 ③ 登录 MySQL 执行数据库文件 ```sql mysql -u root -p create database greatecommunity; use greatecommunity; source /root/inti_sql/文件名.sql/ ``` ### Redis ① 通过 yum 命令下载并安装 Redis: ```bash yum install -y redis.x86_64 ``` ② 启动 Redis ```bash systemctl start redis ``` ③ 查看状态: ```bash systemctl status redis ``` ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210210142405.png) ### Kafka ① 下载 Kafka 2.13-2.7.0 ```bash wget -i -c https://mirrors.bfsu.edu.cn/apache/kafka/2.7.0/kafka_2.13-2.7.0.tgz ``` ② 解压到 opt 目录: ```bash tar -zvxf kafka_2.13-2.7.0.tgz -C /opt ``` ③ 启动 Zookeeper ```bash cd /opt cd kafka_2.13-2.7.0/ bin/zookeeper-server-start.sh -daemon config/zookeeper.properties ``` ④ 启动 Kafka ```bash bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 & ``` ### Elasticsearch ① 下载 Elasticsearch 6.4.3 ```bash wget -i -c https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.tar.gz ``` ② 解压到 opt 目录 ```bash tar -zvxf elasticsearch-6.4.3.tar.gz -C /opt ``` ③ 下载中文分词插件 elasticsearch-analysis-ik -6.4.3: ```bash wget -i -c https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.3/elasticsearch-analysis-ik-6.4.3.zip ``` ④ 解压中文分词插件到 elasticsearch 文件夹下的 plugins/ik/ 文件夹 ```bash unzip -d /opt/elasticsearch-6.4.3/plugins/ik elasticsearch-analysis-ik-6.4.3.zip ``` ⑤ 修改下 Elasticsearch 的配置文件 ```bash cd /opt cd elasticsearch-6.4.3/ cd config/ vim elasticsearch.yml ``` ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210210145908.png) ⑥ 再修改 jvm,默认占内存 1G,太大了,我的小服务器一共才 4G: ```bash vim jvm.options ``` ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210210152140.png) ⑦ 另外,Elasticsearch 不支持 root 用户启动,我们必须为其创建一个普通用户,并赋予相关权限: ```bash cd /opt/elasticsearch-6.4.3/ cd config/ groupadd normal useradd normal1 -p 123456 -g normal cd /opt chown -R normal1:normal * cd /tmp chown -R normal1:echoer * ``` ⑧ 使用普通用户 echoer1 启动 Elasticsearch: ```bash su - normal1 cd /opt/elasticsearch-6.4.3/ bin/elasticsearch -d ``` > `-d` 表示在后端运行 ⑨ 测试一下是否启动成功了: ```bash su - // 切回root用户 curl -X GET "localhost:9200/_cat/health?v" ``` ### Tomcat ① 下载 Tomcat ```bash wget -i -c https://downloads.apache.org/tomcat/tomcat-9/v9.0.41/bin/apache-tomcat-9.0.41.tar.gz ``` ② 解压 Tomcat 到 opt 目录(一般安装程序都放在 opt 目录) ```bash tar -zvxf apache-tomcat-9.0.41.tar.gz -C /opt ``` ③ 配置环境变量: ```bash vim /etc/profile ``` ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210210163813.png) 使其生效 ```bash source /etc/profile ``` ④ 启动 tomact ```bash startup.sh ``` ### Nginx ① 通过 yum 命令快速下载并安装 Nginx: ```bash yum install -y nginx.x86_64 ``` ② 配置代理: ```bash vim /etc/nginx/nginx.conf ``` ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210210170907.png) ③ 启动 Nginx ```bash systemctl start nginx ``` ## 2. 代码部署 服务器上项目必备的环境都部署完了,接下来就只需要把项目放上来就行了。 ### 准备工作 ① 首先,把 Tomcat 自带的项目删了: ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210210172035.png) ② Tomcat 默认访问它自带的 ROOT 项目,如果要想访问它的其他项目,比如 echo,需要这样访问 `1.15.127.74:8080/echo`,有点别扭,我想直接通过 `1.15.127.74:8080` 访问。我们可以直接把项目打包命名为 ROOT 的 war 包(注意,项目默认是打成 jar 包的),修改下项目 pom.xml: ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210217152018.png) ③ 上面也说了,TOMCAT 访问 ROOT 项目是不带项目名的,所以你可以看见我们项目的配置文件中的项目名是空的,还有 `global.js`)。 ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210217152046.png) ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210217152100.png) ### 程序入口 Tomcat 本身就有一个 main 函数,我们的项目的本地入口也是一个 main 函数,这显然冲突了。所以我们需要添加一个非 main 函数的入口: ```java /** * 项目部署上线后的程序入口 */ public class CommunityServletInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(CommunityApplication.class); } } ``` ### 多配置文件 ```properties # profile(开发的时候改成 develop, 部署的时候就用 produce) spring.profiles.active = produce # logback logging.path=classpath:logback-spring-${spring.profiles.active}.xml ``` 修改下生产环境的部分配置(比如项目的本地地址需要改成公网 IP,本地的目录地址需要改成服务器上的目录地址) ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/img/20210210204308.png) ### 上传项目 > 上传之前最好把没有用到的 `import` 去掉 ① 在本地把项目文件夹压缩并上传到服务器: ```powershell pscp -P 22 GreateCommunity.zip root@1.15.127.74:/root ``` ② 在服务器上解压项目文件: ```bash unzip -d /root GreateCommunity.zip ``` ③ 打包: ```bash cd GreateCommunity/ mvn package -Dmaven.test.skip=true ``` ④ 移动打好的 war 包 ROOT 到 TOMCAT 目录下: ```bash cd target/ mv ROOT.war /opt/apache-tomcat-9.0.41/webapps/ ``` ⑤ 启动 Tomcat ```bash startup.sh ``` 访问 http://1.15.127.74:8080/,大功告成 🎉 ⑥ 手动添加 3 个特殊用户: - **必须** - SYSTEM(id = 1):发通知 - 非必须 - admin:管理员(删除帖子) - 非必须 - master:版主(置顶、加精帖子) ```sql INSERT INTO `user` VALUES (1,'SYSTEM','SYSTEM','SYSTEM','system@sina.com',0,1,NULL,'http://static.nowcoder.com/images/head/notify.png','2020-01-13 02:11:03'),(2,'admin','d2d5a85cc78dc580aaa8d5d0dafa0a79','0c7b1','admin@qq.com',1,1,'671f3fdb898e455997aec3d2bcb695a6','http://qnvxyvq1p.hd-bkt.clouddn.com/e531e57c933b4c71912fe5396b1881f0','2021-02-10 22:27:00'), (3,'master','852e951a7398e9853feef981c22e15e7','3d196','master@qq.com',2,1,'3563733cece74ee4b61b86b0b375987c','http://qnvxyvq1p.hd-bkt.clouddn.com/71616bd74fd9418b8b27a67b059ee9e3','2021-02-10 22:29:03'); ```