在此之前,我写了一个如何购买阿里云Windows服务器,并将自己的SpringBoot项目部署到Windows云服务器的博客,链接如下:https://blog.csdn.net/MagicMHD/article/details/89390601
由于在实际工作中,大家使用Linux部署项目会更多一点,所以我们现在学习一下如何在阿里云购买Linux服务器,并将我们的项目部署到上面。ok,Let's Go!
一、进入阿里云官网:http://aliyun.com/ 注册登陆后然后点击右上角的控制台:
选择云服务器ECS,然后点击左边的云服务器ECS->实例->创建实例 进入购买新实例界面:
镜像这里我们选择CentOS 7.4 64位的操作系统。
下面开始设置网络和安全组。
这里选择1M的宽带就可以,有钱的话可以增大宽带。
安全组,就是指服务器开放什么端口让别人访问,默认只开放22和3389端口。这里使用默认的安全组
最后付款就ok了。
二、查看服务器实例
购买好以后,进入控制台点击云服务器ECS->实例 就可以看到已经购买的实例。
上面的公网IP就是以后我们需要用到的IP。
接下来就要到这个服务器上去进行一系列的操作了。 但是服务器所处于的位置在阿里云机房里面, 又不大可能到现场去进行操作,那么怎么办呢?那就要借助客户端工具来链接到Linux服务器上进行相关操作了,客户端工具有很多种,这里采用个人比较熟悉的securityCRT。前面的新建Linux虚拟机的博客中已经提到这个securityCRT了,并且把这个软件的安装包上传到了百度云,这里我再贴一下地址吧:
链接:https://pan.baidu.com/s/1OfeQPvU59MCEkcUUwMF5aA
提取码:uirg
直接运行程序即可,下面说一下如何通过这个软件来链接我们的阿里云服务器。
在这个上面输入你的公网ip和你的ip名称然后点击链接即可,接着会让你输入用户名和密码,输入即可!
这样就代表我们链接成功了!
三、Linux常用命令操作
使用控制台方式连接Linux,需要用到各种命令,这里列出了一些常用的简单命令,大家热热身
Linux的文件系统和Windows不一样,windows有c盘,d盘,e盘,Linux 看上去就只有一个盘,/usr就是相当于硬盘上的usr目录。
1、切换到/usr目录下
cd /usr
这样就代表了切换到了usr目录下面。
2、ls 用来遍历当前目录下所有的文件和目录
ls -lh 遍历详细信息,如权限,所属用户,创建日期,大小等等信息
ls
ls -lh
3、查看当前所处目录
有时候敲着敲着就忘记自己处于哪个目录下了,那么这个时候就可以使用pwd命令来显示当前所处与的目录
pwd
4、创建目录
mkdir -p /test/abc
创建目录 /test/abc
-p的意思是如果abc的父目录不存在,那么就会帮助创建其父目录
这里我们创建这个目录并进入到该目录下:
5、创建文件
touch test.java
这里我们在abc目录下创建test.java,并查看abc目录下的文件
6、删除文件
rm -f test.java
使用rm命令删除文件。 -f是强制删除的意思
这里我们把刚才新建的test.java文件删除,并再次查看abc目录下的文件
7、删除目录
rm -rf /test/abc
rm 命令也可以用来删除目录 -r表示删除目录 f表示强制
这里我们把刚才新建的/test/abc目录删除掉,并且查看usr目录
8、查看文件内容
查看文件的命令有多种,这里介绍tail
tail -50f /etc/passwd
查看 /ect/passwd 文件的内容, -50 表示查看最后50行 f表示滚动查看,当这个文件发生变化的时候,会自动展示最新的内容。
这种方式特别适合查看日志文件。 在后续的tomcat日志文件那里就会用这种方式。
退出方式: ctrl+c
这里有一份常用命令的图片:
四、文本编辑命令vi
为什么单独拿出一节说这个命令呢?因为这个在Linux中用到的非常多,并且对于刚学Linux的人来说容易整糊涂!
和记事本一样,Linux下也需要进行文本编辑,但是又没有图形化的文本编辑软件,那么就只能使用命令行方式来编辑文本了。 vi就是用于编辑文本的命令。下面我们就开始使用这个命令!
1、首先新建一个目录和文件:
mkdir -p /temp/test
touch abc.txt
这样我们就在/temp/test目录下新建了一个叫abc.txt的文件。
2、然后我们来编辑这个文件:
vi abc.txt
3、此时我们打开了这个文本文件,但是我们还不能编辑它。我们要输入a或者i才可以进行编辑。
左下角出现了INSERT就代表我们可以进行编辑了!
4、保存并退出:
要退出,首先要离开当前的编辑模式,点击左上角的ESC键,退出编辑模式
然后输入冒号 (shift+分号) 打开控制命令
接着输入wq,然后敲回车,即保存退出
wq 是quit+write的缩写
:wq
这样就代表我们刚才的文件已经被保存了并且退出了!
有时候希望不保存,并且退出。 那么就先点击左上角的ESC键,退出编辑模式
然后输入冒号 (shift+分号) 打开控制命令
接着输入q!,然后敲回车,即不保存退出
q! 就是不保存直接退出的意思
q!
五、安装FTP
接下来就要在Linux上安装ftp服务器了。 ftp的全称是 File Transfer Protocol : 文件传输协议。
顾名思义,ftp就是用来我们把本地的文件传输到服务器上,或者从服务器上下载文件用的。
接下来我们就会讲解如何在linux 上安装ftp服务器
Linux上的ftp服务器有各种型号,我们会使用vsftpd,全称是:very secure FTP daemon 非常安全的ftp后台程序
1、安装vsftpd命令
yum install vsftpd -y
这样就代表安装完成了!
2、查看服务启动状态
systemctl start vsftpd.service
systemctl status vsftpd.service
第一步是用来启动vsftpd服务,不一定需要,因为 安装 结束后就会自动启动,但是有时候不会自动启动,所以还是加上吧
3、服务的关闭并和启动
一般说来关闭,启动,查看状态几个功能会如图所示一起执行,这样便于查看重启是否成功
systemctl stop vsftpd.service
systemctl start vsftpd.service
systemctl status vsftpd.service
4、检查端口
ftp服务启动的是21端口,使用如下命令应该观察到21端口正在处于监听状态,这也从侧面反应了ftp服务器启动成功了
netstat -anp|grep 21
六、创建用户
要连接上 vsftpd 服务器需要为Linux创建专门的用户。 接下来就会讲解如何创建这个用户。
1、在Linux中,不同用户是有不同目录访问权限的,所以首先创建一个目录,作为这个ftp用户所拥有的目录。
mkdir -p /home/wwwroot/ftptest
2、创建用户
执行如下命令,创建用户ftptest,并且指定其目录为用户目录中创建的/home/wwwroot/ftptest
useradd -d /home/wwwroot/ftptest -g ftp -s /sbin/nologin ftptest
-g ftp 表示该用户属于ftp分组 (ftp分组是内置的,本来就存在,不需要自己创建)
-s /sbin/nologin 表示这个用户不能用来登录secureCRT这样的客户端。 这种不能登陆的用户又叫做虚拟用户
创建过程给出的警告信息是正常的,不用理会
3、设置目录权限
chown -R ftptest /home/wwwroot/ftptest
chmod -R 775 /home/wwwroot/ftptest
把目录/home/wwwroot/ftptest的拥有者设置为ftptest
使ftptest用户拥有这个目录的读写权限
4、设置密码
为ftptest用户设置密码:
passwd ftptest
这样就代表创建密码成功了。这个密码在后续连接ftp服务器的时候会用到
七、配置用户
在六中,我们已经创建了一个ftptest用户,接下来就要在vsftpd服务器中配置该用户
1、去掉匿名登陆
默认情况下vsftpd服务器是允许匿名登陆的,这样非常不安全,所以要把这个选项关闭掉。
首先通过vi命令打开ftp服务器配置文件:
vi /etc/vsftpd/vsftpd.conf
然后把本来的
anonymous_enable=YES
anonymous_enable=NO
修改完成之后,保存退出。这样就去掉了匿名登录!
2、限制用户访问
接下来是限制用户访问,什么叫做限制用户访问呢? ftp用户 教程中创建的ftptest用户所拥有的目录是 /home/wwwroot/ftptest,如果不做限制,那么使用ftptest登陆之后可以切换到其他敏感目录去,比如切换到/usr目录去,这样就存在巨大的安全隐患。
为了规避这个隐患,需要限制ftptest用户只能通过ftp访问到 /home/wwwroot/ftptest 目录以及子目录。
配置办法:
首先通过vi命令打开ftp服务器配置文件:
vi /etc/vsftpd/vsftpd.conf
找到:
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
并修改为:
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
chroot_list_enable=YES: 表示对用户访问进行限制
chroot_list_file=/etc/vsftpd/chroot_list 表示对chroot_list里面指定的用户进行限制 下一个步骤用户清单就会对chroot_list 这个文件进行编辑
修改完成之后,保存退出。
3、用户清单
接着上一个步骤,在chroot_list中添加ftptest用户
首先通过vi命令打开chroot_list文件(此文件本来是空的):
vi /etc/vsftpd/chroot_list
然后增加一行:
ftptest
修改完成之后,保存退出。
这样我们就把ftptest用户添加到chroot_list中了。
4、给ftptest用户写的权限
vsftpd服务器是这样的,一旦某个用户被限制访问了,那么默认情况下,该用户的写权限也被剥夺了。 这就导致ftp客户端连接上服务器之后无法上传文件。
这个时候,就需要打开此用户的写权限,请按照如下办法操作:
首先通过vi命令打开ftp服务器配置文件:
vi /etc/vsftpd/vsftpd.conf
在最后面新加一行:
allow_writeable_chroot=YES
这样就给chroot添加了写的权限。
八、设置FTP端口
vsftpd有两种端口,一个是21端口,用来监听客户端连接请求的。 这个一般说来是固定的,就一直使用21端口。
另一种是,一旦获取到请求之后,再专门用户服务端和客户端传输数据的端口。
本知识点就是用于指定第二种端口的获取范围。下面我们进行端口的配置:
打开配置文件:
vi /etc/vsftpd/vsftpd.conf
在最后添加:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30010
这表示使用被动模式,用于传输数据的端口分配从30000-30010之间。
在后续的Linux开放端口教程中也会做相应的配合工作。
九:FTP用户鉴权问题
因为用户 ftptest 是 nologin的,所以存在鉴权的问题。 如果鉴权问题不解决,就是永不停息的 530错误。。。
解决办法有如下两种:
方式一: pam.d/vsftpd 文件
vi /etc/pam.d/vsftpd
注释掉/etc/pam.d/vsftpd文件里这一行:
#auth required pam_shells.so
这样不去鉴权,从而允许 ftptest 这种 nologin用户登录 ftp 服务器.
方式二:vi /etc/shells
如果你的文件最下面没有/usr/sbin/nologin
那就在/etc/shells文件里面增加一行:
/sbin/nologin
这样允许不能登录系统的用户通过鉴权。
我们设置完上面的内容以后,记得重启一下vsftpd服务
通常重启使用的命令是
service vsftpd restart
但是centos7之后,改用的命令是如下方式:
systemctl restart vsftpd.service
最后执行查看状态,以查看重启成功了
systemctl status vsftpd.service
十:设置Linux云服务器的端口
前面我们在购买云服务器时,使用的是默认安全组,只开通了22和3389端口。
22就是SecureCRT链接Linux服务器用的端口号。
3389 是阿里云控制台链接用的端口,这里没有用到。
只有这两个端口号是不够用的,为了能够链接vsftpd服务器还需要开放21端口和我们在第八步设置的 30000-30010端口,还有后期的项目中用到的端口等等。
既然用的是阿里云,那么我们就借助阿里云的安全组操作来实现端口的开放效果。
登陆阿里云后,按照如下顺序选择:云服务器ECS->安全组->配置规则
目前安全组规则是3个,分别是22,3389和ICMP协议。ICMP是网际控制报文协议,ping命令用的那个
然后点右上角的 添加安全组规则。
端口范围: 21/21 表示从21开始,到21结束
授权对象: 0.0.0.0/0 表示所有的ip地址都可以访问该端口.
然后再按照相同的办法添加30000-30010端口
端口范围: 30000/30010 表示从30000开始,到30010结束
授权对象: 0.0.0.0/0 表示所有的ip地址都可以访问该端口.
最后看一下我们的安全组:
我们已经把21端口和30000-30010端口都加进来了,后面有需要加端口的时候使用这种办法即可!
十一、FTP客户端工具
配置完成ftp以后,我们还需要一个图形工具来进行文件的传输。
ftp客户端有各种各样的版本,我个人习惯使用ftprush. 这里我把它放到百度云网盘了:
链接:https://pan.baidu.com/s/1q08SA7RqARVsdaFCkOrW5A
提取码:v6my
1、打开ftprush.exe之后看到如图所示的界面:
2、连接
菜单->站点->快速连接对话框
主机地址:输入服务器地址
用户名: ftptest
密码: ******(刚才设置的密码)
连接成功之后,就可以看到如图所示
左边是服务端: /home/wwwroot/ftptest 里的内容,暂时什么都没有
右边是本地: 一些文件
3、上传与下载
把右边的内容拖到左边,就是上传。。。。
把左边的内容拖到右边,就是下载。。。
如图所示把abc.txt 上传到了服务器
4、到Linux中观察是否有了abc.txt文件
说明我们上传成功了!
十二、部署JAVA环境
FTP工具已经部署好了,现在我们来部署JAVA环境。Linux中安装JAVA环境比Windows简单了很多。直接使用yum安装即可:
yum -y install java-1.8.0-openjdk.x86_64
然后接着运行:
java -version
出现当前java版本即表示java安装成功了!
十三、MySQL安装
1、下载
cd /tmp
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
2、通过yum安装
接着就可以通过yum安装了:
yum install mysql mysql-server mysql-devel -y
安装完成!
3、启动mysql
执行如下命令就能启动mysql服务器:
systemctl start mysql.service
验证一下我们有没有启动成功:
启动后会占用3306端口。 使用如下命令查看3306端口是否启动,如果启动了则表示mysql处于运行状态。
netstat -anp|grep 3306
由上图可知,3306端口已经被占用了,说明我们的mysql已经安装成功并启动成功了!
4、设置Mysql密码
通过yum安装的mysql的管理员账户是没有密码的,这里通过命令设置其密码为 **** ,后续部署项目的时候会用到这个密码。
mysqladmin -u root password ****
这里会出现Warning信息,并非提示设置失败,而是告诉大家密码露出来了,当心旁边有人偷窥!
5、验证设置的账号和密码
mysql -uroot -p****
能看到这3个数据库,就表示用root账号登陆成功了!
十四、安装TOMCAT
yum上没有tomcat的源,这里我们使用FTP将tomcat资源包上传到Linux服务器中。
首先需要一个tomcat安装包,这里我放到了百度云一个tomcat 8.5.23版本的资源,连接如下:
链接:https://pan.baidu.com/s/1OnTqFfcUC3ztqYw3iv6L2A
提取码:1l6t
然后通过ftp将这个安装包放到linux中:
我们知道我们之前设置的上传到Linux中的文件的位置位:
/home/wwwroot/ftptest
先验证一下这个文件夹下是否已经上传了我们的tomcat:
已经存在。我们只需要将这个文件夹下的我们通过ftp上传的tomcat安装包copy到合适位置即可!可以使用下列命令:
cp /home/wwwroot/ftptest/apache-tomcat-8.5.23.tar.gz /tmp/apache-tomcat-8.5.23.tar.gz
下面我们再来看一下/tmp目录下有没有已经copy过来:
已经成功的copy过来了!
然后我们来解压这个压缩包:
tar xzf apache-tomcat-8.5.23.tar.gz
解压后把tomcat移动到 /usr/local/tomcat8 目录下方便以后访问:
mv apache-tomcat-8.5.23 /usr/local/tomcat8
我们在上图中也已经验证了在/usr/local/tomcat8有我们解压以后的tomcat包!
然后我们来启动tomcat:
/usr/local/tomcat8/bin/startup.sh
已经成功启动!
我们再用端口来验证一下,如果成功启动了tomcat,那么8080端口肯定被占用了,我们来测试一下8080端口:
netstat -anp|grep 8080
8080端口已经占用。说明我们成功启动了tomcat。
最后我们再来看一下tomcat的启动日志:
tail -300f /usr/local/tomcat7/logs/catalina.out
-300表示查看最后300行, f表示动态查看有更新可以立即看到
使用ctrl+c 退出查看状态
开放Linux8080端口,这个就不赘述了,跟前面开放端口的方式一样:
这里我们已经开启了8080端口了!‘
这里我们要在Linux中也开启对应8080端口的防火墙:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
这里--permanent是指永久开启的意思,不然每次Linux重启,都会把这个端口干掉。
然后更新防火墙规则:
firewall-cmd --reload
再重启一下防火墙服务:
systemctl restart firewalld.service
然后我们在浏览器输入http://118.190.58.160:8080/ 这里的IP换成你们自己的。
十五、部署项目
首先我们来了解一下Linux中Mysql数据库的规则。
Linux MySQL默认是大小写敏感的,但是我们在系统开发时一般是在windows上开发的,而windows上的Mysql默认是非大小写敏感的,所以JDBC代码有的表名是大写,有的是小写的,一旦运行起来就会因为大小写不一致导致无法识别表名。 为了解决这个矛盾,就需要把MySQL的大小写敏感修改为非敏感。 解决办法如下:
1. 打开mysql配置文件
vi /etc/my.cnf
2. 如图所示在[mysqld]后添加添加
lower_case_table_names=1
这样就解决了Linux中MySQL的大小写敏感问题。
修改完成之后,保存退出。
3. 重启mysql
systemctl restart mysqld.service
4、创建数据库
首先通过连接到数据库
mysql -uroot -p****
然后创建数据库
CREATE DATABASE tmall DEFAULT CHARACTER SET utf8;
最后查看该数据库:
show databases;
我们的数据库已经新建成功!
最后我们再通过SQL文件导入表到tmall数据库,首先来看一下我们的SQL文件:
是一些基本的增删改查的sql语句。
我们把这个sql文件先通过vsftp放到的linux服务器中。
这样我们就传过来了,位置还是在/home/wwwroot/ftptest下面
然后我们把数据导入:
mysql -u root -padmin --default-character-set=utf8 tmall < /home/wwwroot/ftptest/tmall.sql
提示并非导入失败,而是警告密码露出来的,当心背后有人~
然后我们再登录mysql验证一下我们是否导入成功:
mysql -uroot -padmin
use tmall;
show tables;
select count(*) from product;
我们已经导入成功!
5、部署jar包
这是我们一个springboot项目在本地跑的时候页面,现在我们要把它打jar包然后放到linux服务器中去运行:
然后我们把系统通过maven打好的jar包放到linux服务器中:
然后我们使用ftp工具把这个jar包传到服务器。路径为:/home/wwwroot/ftptest/product.jar
然后我们进入到/home/wwwroot/ftptest文件夹下:
然后执行
java -jar product.jar
然后通过我们的ip进行访问:
部署成功!
但是这样部署会有一个问题,就是我们不能关掉这个页面:
如果我们按ctr+c键退出命令:
我们的系统也就退出了,我们可以看一下:
这里我们用另外一种办法启动jar包,
nohup java -jar product.jar > nohup.out 2>&1 &
这是使用nohup命令将jar程序设置成后台运行,运行日志输出到nohup.out,关闭窗口无影响
如果要重新部署:
ps -ef|grep java
结果:
杀死进程:
kill -9 3939
重新部署的话执行nohup命令即可
这里就把部署的部分说完了!
还剩下最后一个小问题:就是自启动
所谓的自启动,就是在 Linux 重启之后,会自动启动一些服务和程序。
如上面的配置,在重启之后,vsftpd, mysql ,tomcat都不会自动启动,这样在重启之后,有些服务就不可以使用了。
为了解决这个问题,下面就讲解如何进行自启动配置
需要自启动的服务有 vsftpd 和 mysql
需要自启动的脚本有 tomcat
而在 centos7 里,服务和脚本的自启动方式是不一样的,下面分开来讲解
服务:
分别执行如下代码就可以开启服务的自启动了。
systemctl enable vsftpd.service
systemctl enable mysqld.service
而关闭方式是:
systemctl disable vsftpd.service
systemctl disable mysqld.service
脚本:
有个文件叫做 rc.local, 把脚本放进去就可以了。
不过这个脚本在 centos7里被降级了,不能被执行,所以要执行如下语句使得其可以被执行先
chmod +x /etc/rc.d/rc.local
然后修改 /etc/rc.d/rc.local, 放入 tomcat脚本即可
vi /etc/rc.d/rc.local
/usr/local/tomcat8/bin/startup.sh
保存退出即可完成tomcat的开机自启动。
好了,关于
如何将SpringBoot项目部署到Linux服务器中的知识已经学习完了!