之前做的项目都是跑在本地的虚拟机上的,想到在腾讯云上还有一台云服务器,于是便打算将其部署到云服务器上,本文会涉及到一些部署上的流程以及一些坑,仅供参考。
安装 Java
首先需要在服务器上安装 Java,这样 Web 应用程序才能才其上面执行。由于使用的是 CentOS7,因此可以使用以下命令安装 OpenJDK 7:
1
|
yum -y install java-1.8.0-openjdk-devel
|
安装完以后,Java 以及 jre 就会被安装在以下目录:
1
2
3
|
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/bin/java
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre/bin/java
|
现在需要配置环境变量$PATH
,直接执行vim /etc/profile
命令,编辑其中的export
。需要修改的地方已在下方标出,其中JAVA_HOME
就是上面的 Java 根路径,这里根据自己机器的情况而定。PATH
指明 Java 根路径下面的/bin
和/jre
文件,相应的也将CLASSPATH
指定到/lib
和/jre
。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
pathmunge () {
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
esac
}
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`/usr/bin/id -u`
UID=`/usr/bin/id -ru`
fi
USER="`/usr/bin/id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /usr/sbin
pathmunge /usr/local/sbin
else
pathmunge /usr/local/sbin after
pathmunge /usr/sbin after
fi
HOSTNAME=`/usr/bin/hostname 2>/dev/null`
if [ "$HISTCONTROL" = "ignorespace" ] ; then
export HISTCONTROL=ignoreboth
else
export HISTCONTROL=ignoredups
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export PATH=:$PATH:/opt/apache-maven-3.6.3/bin
# 需要编辑的地方--start
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
# 需要编辑的地方--end
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
unset i
unset -f pathmunge
|
编辑好文件后,需要执行source /etc/profile
命令,以便更新profile
文件。然后输入java -version
即可看到 Java 安装成功:
1
2
3
4
5
|
[root@VM_0_4_centos ~]# java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
[root@VM_0_4_centos ~]#
|
安装 Tomcat
我这里选择的版本是Tomcat 8.5.53,下载tar.gz
文件后通过FileZilla将安装包传输到云服务器。然后解压该文件:
1
|
tar -zxvf apache-tomcat-8.5.53.tar.gz
|
再将该文件重新命名为tomcat
:
1
|
mv apache-tomcat-8.5.53.tar.gz tomcat
|
防火墙及端口
这里需要注意的是:在防火墙开启之前,需要确认是否已经将8080
端口打开。因为我们是通过http://ip:8080
来访问网址,即通过 ip 地址加端口号的方式来访问。
可使用如下命令查看当前所有的端口号:
如果发现没有开启8080
端口的话,则需要在防火墙设置一下:
1
2
|
firewall-cmd --zone=public --permanent --add-port=8080/tcp
firewall-cmd --reload
|
此外,还需要将云服务器安全组中的8080
端口打开,如下所示:
测试
在tomcat
目录下的bin
文件中,有启动和关闭 tomcat 服务的命令,分别为startup.sh
和shutdown.sh
。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
[root@VM_0_4_centos bin]# ll
total 860
-rwxrwxrwx 1 root root 35204 Mar 11 18:04 bootstrap.jar
-rwxrwxrwx 1 root root 15953 Mar 11 18:04 catalina.bat
-rwxrwxrwx 1 root root 23792 Mar 11 18:04 catalina.sh
-rwxrwxrwx 1 root root 1664 Mar 11 18:06 catalina-tasks.xml
-rwxrwxrwx 1 root root 2123 Mar 11 18:04 ciphers.bat
-rwxrwxrwx 1 root root 1997 Mar 11 18:04 ciphers.sh
-rwxrwxrwx 1 root root 25197 Mar 11 18:04 commons-daemon.jar
-rwxrwxrwx 1 root root 206895 Mar 11 18:04 commons-daemon-native.tar.gz
-rwxrwxrwx 1 root root 2040 Mar 11 18:04 configtest.bat
-rwxrwxrwx 1 root root 1922 Mar 11 18:04 configtest.sh
-rwxrwxrwx 1 root root 8675 Mar 11 18:04 daemon.sh
-rwxrwxrwx 1 root root 2091 Mar 11 18:04 digest.bat
-rwxrwxrwx 1 root root 1965 Mar 11 18:04 digest.sh
-rwxrwxrwx 1 root root 3460 Mar 11 18:04 setclasspath.bat
-rwxrwxrwx 1 root root 3708 Mar 11 18:04 setclasspath.sh
-rwxrwxrwx 1 root root 2020 Mar 11 18:04 shutdown.bat
-rwxrwxrwx 1 root root 1902 Mar 11 18:04 shutdown.sh
-rwxrwxrwx 1 root root 2022 Mar 11 18:04 startup.bat
-rwxrwxrwx 1 root root 1904 Mar 11 18:04 startup.sh
-rwxrwxrwx 1 root root 51264 Mar 11 18:04 tomcat-juli.jar
-rwxrwxrwx 1 root root 419428 Mar 11 18:04 tomcat-native.tar.gz
-rwxrwxrwx 1 root root 4574 Mar 11 18:04 tool-wrapper.bat
-rwxrwxrwx 1 root root 5540 Mar 11 18:04 tool-wrapper.sh
-rwxrwxrwx 1 root root 2026 Mar 11 18:04 version.bat
-rwxrwxrwx 1 root root 1908 Mar 11 18:04 version.sh
|
此时,执行./startup.sh
即可启动 tomcat 服务器,如下所示:
1
2
3
4
5
6
7
|
[root@VM_0_4_centos bin]# ./startup.sh
Using CATALINA_BASE: /home/carol/tomcat
Using CATALINA_HOME: /home/carol/tomcat
Using CATALINA_TMPDIR: /home/carol/tomcat/temp
Using JRE_HOME: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre/bin/java
Using CLASSPATH: /home/carol/tomcat/bin/bootstrap.jar:/home/carol/tomcat/bin/tomcat-juli.jar
Tomcat started.
|
通过以下命令可以查看 tomcat 是否处于开启状态:
然后就可以通过http://ip:8080
的方式在浏览器中打开 tomcat 默认的界面了,如下所示:
安装 Maven
在 Maven 官网下载相应的安装包,解压后即可。解压完成以后,需要在/etc/profile
中配置 Maven 的环境变量,如下所示:
1
|
export PATH=:$PATH:/opt/apache-maven-3.6.3/bin
|
最后,使用source /etc/profile
命令让文件生效。
此时,使用mvn --version
可以看到已经安装成功了,如下所示:
1
2
3
4
5
6
7
|
[root@VM_0_4_centos ~]# mvn --version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /opt/apache-maven-3.6.3
Java version: 1.8.0_242, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1062.1.2.el7.x86_64", arch: "amd64", family: "unix"
[root@VM_0_4_centos ~]#
|
可以看到 Maven 被安装在/opt/apache-maven-3.6.3
下,我们修改一下/opt/apache-maven-3.6.3/conf
配置文件settings.xml
中的镜像,使用阿里云的镜像,这样的话,Maven 会使用国内镜像来下载相关的依赖,速度要快一些。如下所示:
1
2
3
4
5
6
|
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
|
安装与设置 MySQL
在 MySQL 官网下载相应的安装包,我这里下载的是mysql80-community-release-el7-3.noarch.rpm
。
这里遇到了一些坑,主要是使用yum install mysql80-community-release-el7-3.noarch.rpm
后,提示Nothing to do.
。然后直接执行以下命令就可以安装 MySQL 的客户端和服务端了:
1
|
yum install mysql-server
|
如下所示:
当然,此过程网速很慢,因此我将server
包单独下载下来,通过FileZilla将安装包传输到云服务器之后,再执行yum localinstall mysql-community-server.x86_64 0:8.0.19-1.el7
即可安装。
安装好以后,通过systemctl state mysqld
启动 MySQL 服务器,然后通过systemctl status mysqld
查看 MySQL 的运行状态,如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
[root@VM_0_4_centos ~]# systemctl start mysqld
[root@VM_0_4_centos ~]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2020-03-31 16:15:37 CST; 22s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 2377 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 2491 (mysqld)
Status: "Server is operational"
CGroup: /system.slice/mysqld.service
└─2491 /usr/sbin/mysqld
Mar 31 16:15:24 VM_0_4_centos systemd[1]: Starting MySQL Server...
Mar 31 16:15:37 VM_0_4_centos systemd[1]: Started MySQL Server.
[root@VM_0_4_centos ~]#
|
启动成功后,通过以下命令查看 MySQL 默认的密码,准备将其进行修改。因为 MySQL 的默认密码是一串乱序的字符,所以这里最好修改其密码。
1
|
grep 'password' /var/log/mysqld.log
|
得到的密码为:)egJaoLgh7pH
,然后登录到 MySQL 服务器,进行修改:
然后输入以下命令设置一个新的密码,需要注意的是:这里的面应包含大小写字母、特殊符号以及数字,如下所示:
1
|
alter user root@localhost identified by 'New_password123';
|
导入初始化数据
这里使用自己项目中的初始数据,将 MySQL 建表文件传输到云服务器,然后解压即可。
通过unzip
命令解压后缀为*.zip
的压缩包,将其解压到/root
目录下。如下所示:
进入 MySQL 后创建一个数据库,然后使用该数据库,如下所示:
1
2
3
|
create databse community;
use community;
|
执行 sql 语句,将初始数据进行初始化:
1
2
3
4
5
|
source /root/community-init-sql-1.5/init_schema.sql;
source /root/community-init-sql-1.5/init_data.sql;
source /root/community-init-sql-1.5/tables_mysql_innodb.sql;
|
通过show tables;
查看已创建的表数据。
安装 Redis
通过yum list redis*
查看可用的 Redis 版本,选择redis.x86_64
进行安装即可。安装完成后,启动 Redis,并查看其运行状态。
1
2
3
|
systemctl start redis;
systemctl status redis;
|
结果如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@VM_0_4_centos ~]# systemctl start redis
[root@VM_0_4_centos ~]# systemctl status redis
¡ñ redis.service - Redis persistent key-value database
Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/redis.service.d
©¸©¤limit.conf
Active: active (running) since Tue 2020-03-31 16:53:48 CST; 9s ago
Main PID: 10234 (redis-server)
CGroup: /system.slice/redis.service
©¸©¤10234 /usr/bin/redis-server 127.0.0.1:6379
Mar 31 16:53:48 VM_0_4_centos systemd[1]: Starting Redis persistent key-value database...
Mar 31 16:53:48 VM_0_4_centos systemd[1]: Started Redis persistent key-value database.
[root@VM_0_4_centos ~]#
|
安装 Kafka
将压缩包kafka_2.12-2.2.0.tgz
进行加压到/opt
下:
1
|
tar -zxvf kafka_2.12-2.2.0.tgz -C /opt
|
通过后台的方式先启动 zookeeper,再启动 Kafa:
1
2
3
|
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
nohup bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
|
通过查看 Kafka 下的主题,来判断是否启动成功:
1
|
./bin/kafka-topics.sh --list --bootstrap-server localhost:9092
|
安装 Elasticsearch
将压缩包解压到/opt
目录下,然后将插件放到/plugins/ik
目录下即可。
1
2
3
|
tar -zxvf elasticsearch-6.4.3.tar.gz -C /opt/
unzip -d /opt/elasticsearch-6.4.3/plugins/ik elasticsearch-analysis-ik-6.4.3.zip
|
修改 Elasticsearch 的配置文件elasticsearch.yml
,修改cluster.name
、path.data
以及path.logs
,如下所示:
1
2
3
4
5
|
cluster.name: nowcoder
path.data: /tmp/elastic/data
path.logs: /tmp/elastic/logs
|
修改jvm.options
文件,指定 Elasticsearch 启动内存:
创建新的用户,使用新的用户启动 Elasticsearch:
1
2
|
[root@VM_0_4_centos config]# groupadd nowcoder
[root@VM_0_4_centos config]# useradd nowcoder1 -p 123456 -g nowcoder
|
给/opt
和/tmp
目录设置权限,使其nowcoder1
能够访问到:
1
2
|
[root@VM_0_4_centos opt]# chown -R nowcoder1:nowcoder *
[root@VM_0_4_centos tmp]# chown -R nowcoder1:nowcoder *
|
切换到 nowcoder1 用户后,启动 Elasticsearch:
1
2
3
|
[root@VM_0_4_centos /]# su - nowcoder1
[nowcoder1@VM_0_4_centos ~]$ cd /opt/elasticsearch-6.4.3/
[nowcoder1@VM_0_4_centos elasticsearch-6.4.3]$ ./bin/elasticsearch -d
|
进行到这里的时候,我的云服务器的内存(1G)就已经被使用满了。因此,后序的话会在虚拟机里安装。