阿里云ECS centos7 JavaWeb环境搭建(JDK1.8+tomcat8+mysql8.0)+ftp服务器被动模式环境搭建 + JavaWeb项目部署
一、简介
有时候我们做javaweb项目,想要别人能够通过网址访问自己的网站,就需要把网站发布到服务器上。如果在自己电脑上用虚拟机搭建服务器,一是操作困难,二是没有公网ip,三是自己电脑配置不够,这就很难受。这时可以去租用云服务器,既方便又安全。
作为一名linux小白,在centos7搭建javaweb和ftp环境遇到很多坑,在这里总结一下,以防忘记,同时希望能帮助更多和我一样的小白跨坑。
二、阿里云ECS的搭建
1.注意
点击下面链接进入阿里云首页:
阿里云首页
首先要注册阿里云账号,然后实名。注册完后在阿里云首页搜索云服务器 ECS,点击第一个进去选购。如果要购买学生机(实名认证后24岁以下自动归为学生),请点击下面链接:
阿里云云翼计划
我是第一次使用云服务器,因此使用的是学生优惠机(其实跟价格贵的除了性能外使用方式都差不多),购买时配置选择默认即可。
2.购买后的配置
购买完毕后阿里云就已经搭建好了,此时返回首页,点击右上角的控制台。
然后点击左上角的三根横杠,在弹出来的页面中选择云服务器 ECS。
点击下方的实例ID链接。
在新出现的页面中能看见刚购买的服务器基本信息,此时点击上方的更多,点击修改密码,按照提示设置密码。此密码一定要记住。
修改完成后,点击更多旁边的远程连接,选择Workbench,在新出现的页面中填写用户名(默认为root)和密码(之前修改那个),语言环境选择zh_CN,确定即可远程连接服务器。
到此,ECS基本配置完了。
三、安装远程连接工具
1.安装Xshell5
每次用网页连接会很不方便,因此可以安装Xshell5。百度云链接:
Xshell5百度云链接
提取码: 29rk
因为我安装了,这里就不贴图了,提示一下:
安装过程中基本傻瓜式,在选择安装类型时可选商业,我给的资源里有注册码。
2.使用Xshell5远程连接
打开软件,在弹出的会话中点击新建,主机填写阿里服务器的公网ip地址,然后依次输入用户名和密码,建议保存用户名和密码,这样以后不用再输入。
当出现下面界面时,表示连接成功,可以远程操控了。
3.安装Xftp6进行远程文件传输
在后面搭建javaweb环境时,需要进行文件传输,因此可以安装Xftp6。废话不说,上链接:
Xftp6百度云链接
提取码:tvvb
傻瓜式安装,安装类型选择免费的那个。
4.使用Xftp6进行文件传输
打开Xftp6,新建会话。
通Xshell一样,主机名输入公网ip地址,协议一定要选择SFTP,搭建ftp后连接ftp才使用ftp协议。
接着输入用户名和密码,同Xshell一样。连接成功后会出现下面窗口,此时就可以进行文件传输了。
四、Centos7 JavaWeb环境搭建
1.JDK1.8安装
JDK百度云链接
提取码:5ja3
下载完成后,打开Xshell,依次输入
cd ..
cd usr
进入usr目录。
依次输入
mkdir java
cd java
mkdir jdk
mkdir tomcat
创建java目录以及子目录jdk和tomcat。
输入
cd jdk
进入jdk目录。
打开Xftp6,向/usr/java/jdk目录传输jdk-8u221-linux-x64.tar.gz
传输完成后,切换到Xshell,输入
tar -zxvf jdk-8u221-linux-x64.tar.gz
解压完成后,输入
vim /etc/profile
按i进入编辑模式,在文件最后输入
export JAVA_HOME=/usr/java/jdk/jdk1.8.0_221
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
按esc键退出编辑模式,
按shift+ZZ,这样会退出并保存文件,
或者输入:wq!,并按回车键,保存并退出文件。
输入
source /etc/profile
和
java -version
出现如下界面说明配置成功:
2.tomcat8安装
tomcat8百度云链接
提取码:w9v8
下载完成后,切换到Xftp6,向/usr/java/tomcat传输apache-tomcat-8.5.53.tar.gz
传输完成,依次输入
cd ..
cd tomcat
进入tomcat目录。
输入
tar -zxvf apache-tomcat-8.5.53.tar.gz
进行解压。
解压完成后,依次输入
cd apache-tomcat-8.5.53
cd bin
进入bin目录,输入
vim setclasspath.sh
按i进入编辑模式,在文件开头输入
export JAVA_HOME=/usr/java/jdk/jdk1.8.0_221i
export JRE_HOME=/usr/java/jdk/jdk1.8.0_221/jre
如图
按esc键退出编辑模式,
按shift+ZZ,这样会退出并保存文件,
或者输入:wq!,并按回车键,保存并退出文件。
输入
./startup.sh
启动tomcat8。
接下来查看防火墙状态并配置,
参考:https://blog.csdn.net/Rebs_Hugo/article/details/85042602?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
※※啰嗦下,这一块一定要万分注意,网上教程基本上没有讲防火墙这块,按照教程配置完后用浏览器连不上tomcat,让我感到绝望。一定要用防火墙开放8080端口,如果忘记后面会让人迷茫。
输入
systemctl list-unit-files|grep firewalld.service
显示disabled
如果显示maked,则输入
systemctl unmask firewalld
取消maked状态。
接下来开启防火墙,输入
systemctl start firewalld.service
永久开放8080端口,输入
firewall-cmd --zone=public --add-port=8080/tcp --permanent
重新加载防火墙,输入
firewall-cmd --reload
查看防火墙开放的端口,输入
firewall-cmd --list-ports
显示有8080端口说明配置成功。
接下来配置安全组。
打开阿里云控制台,进入刚才重置密码的页面,
点击左下角本实例安全组,再点击配置规则,
在新出现的页面中,点击右上角的添加安全组规则,在弹出的窗口中,
端口范围写8080/8080,授权对象写0.0.0.0/0,表示任何ip都能访问8080端口。点击确定。
配置完成后,切换到Xshell,再次输入
./startup.sh
显示**Tomcat started.**则配置成功。
接下来输入
netstat -anp | grep 8080
看到8080则表示tomcat在监听8080端口。
接下来打开本地浏览器,在网址栏输入http://服务器公网地址:8080/,出现以下界面则说明tomcat安装并配置成功。
3.mysql8.0安装
切换到Xshell,输入
cd
退回到root目录,也就是刚连接服务器时所在的目录。
输入
yum -y update
更新服务器系统到最新状态,会等待一会。
然后输入
reboot
重启服务器,等待一会。
重启后输入
rpm -qa | grep mysql
查看mysql是否安装,如果没有结果则未安装,否则可能需要卸载它。
输入
wget -i -c http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
下载完后输入
yum -y install mysql80-community-release-el7-3.noarch.rpm
安装。
安装完后,输入
yum module disable mysql
先禁用默认的mysql模块,否则会报错
All matches were filtered out by modular filtering for argument: mysql-community-server
Error: Unable to find a match: mysql-community-server
禁用默认的mysql后,输入
yum install mysql-community-server
安装mysql-community-server,一路yes,到最后出现Complete!,说明安装成功。
接下来输入
systemctl start mysqld.service
启动mysql。
输入
systemctl status mysql.service
查看运行状态,看到绿色的active说明启动成功。
依次输入
systemctl enable mysqld
systemctl daemon-reload
设置开机自启动。输入
systemctl list-unit-files | grep mysqld
查看是否开启开机自启动,出现下面结果说明成功。
输入
grep 'temporary password' /var/log/mysqld.log
查看Mysql默认登陆密码,记住该密码。
用默认密码登陆mysql,输入
mysql -u root -p此处为默认登陆密码
-p与密码之间不要有空格。以下是登陆成功的界面:
接下来修改密码,输入
alter user 'root'@'localhost' identified by '你的密码';
密码要求大写+小写+数字+特殊字符
依次执行
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
GRANT ALL ON *.* TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
授权root用户远程登陆。
输入
FLUSH PRIVILEGES;
使命令生效。
输入
exit或quit
退出mysql。
输入
vim /etc/my.cnf
修改配置文件。
按i进入编辑模式,在末尾添加
character_set_server=utf8
init_connect='SET NAMES utf8'
按esc键退出编辑模式,
按shift+ZZ,这样会退出并保存文件,
或者输入:wq!,并按回车键,保存并退出文件。
输入
systemctl restart mysqld
重启数据库。
接下来配置安全组规则,添加3306端口,
※※一定要记住防火墙开放端口
切回Xshell,输入
firewall-cmd --query-port=3306/tcp
查看防火墙是否开放3306端口。若提示FirewallD is not running表示防火墙可能没打开(之前已经打开了,应该是开着的),输入
systemctl start firewalld
开启防火墙。
输入
firewall-cmd --add-port=3306/tcp --permanent
永久开放3306端口。
输入
firewall-cmd --reload
重新载入配置。
到此MySQL就安装并配置完成了。
五、FTP服务器搭建(vsftp)
1.简介
通俗点讲,FTP服务器就是用来上传和下载的,分为主动模式和被动模式,这里我只简单讲下为啥是安装被动模式的FTP而不是主动模式的FTP。
FPT的连接一般有两个,一个是传输命令的连接,一个是传输数据的连接。
使用主动连接时,客户端(也就是本地电脑)会发送一条命令(通过21端口)给服务端,等待服务端连接指定的端口。服务端接收到命令后,会通过20端口连接指定端口,从而建立起数据连接。
使用被动连接时,客户端(也就是本地电脑)会发送一条命令(通过21端口)给服务端,请求建立数据连接。服务端接收到命令后,会通过21端口告诉客户端,已经开放一个随机高位端口等待它连接。客户端再连接指定端口,从而建立起数据连接。
简单讲就是:主动模式是客户端在本地打开一个端口等服务端去连接建立数据连接;而被动模式是服务端打开一个高位端口等待客户端去建立一个数据连接。
为什么要选被动模式呢?
路由上有两种ip,一种是内网ip(也就是我们电脑上的ip地址),这个有多个;另外一个是外网ip,这个ip每个路由器只有一个。该路由下的所有计算机都是通过路由器这个网关把我们内网ip转为外网ip才能访问互联网的。
那么问题来了。当客户端需要发起FTP连接时,若采用主动模式,最后就是等待服务端来连接客户端,而客户端的ip是内网ip,也就是局域网ip,外网是根本连接不了的,此时就会报错。
但若采取被动模式,就将是服务端等待客户端连接,服务端的ip是公网ip,客户端可以连接,因此能够建立数据连接,就可以进行正常的上传和下载了。
不知这样解释是否合理。。
2.搭建FTP站点
参考:手动搭建FTP站点(CentOS 7)
参考:Vsftp 安装配置(被动模式)
输入
yum install -y vsftpd
安装vsftp。
输入
systemctl enable vsftpd.service
设置FTP服务开机自启动。
输入
systemctl start vsftpd.service
启动FTP服务。
输入
netstat -antup | grep ftp
查看ftp监听的端口,为21端口。
输入
useradd ftptest
创建使用ftp服务的用户。
输入
passwd ftptest
设置密码。
输入
mkdir /var/ftp/test
创建使用ftp服务的目录。
输入
chown -R ftptest:ftptest /var/ftp/test
更改/var/ftp/test目录的拥有者为ftptest。
输入
chmod -R 777 /var/ftp/test
修改ftptest对该目录的权限为全权,即读、写、执行完全具备。
输入
vim /etc/vsftpd/vsftpd.conf
打开配置文件,按i进入编辑模式。
※※注意:修改之前建议备份,否则出问题后的卸载来重新安装。备份完后先把文件清空,然后※一行一行复制※,因为添加多余的空格会造成无法重启服务的结果。此处曾让我绝望。
配置被动模式参数如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=60
data_connection_timeout=3600
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd/banned_emails
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#ls_recurse_enable=YES
listen=YES
#listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
local_root=/var/ftp/test
allow_writeable_chroot=YES
pasv_enable=YES
pasv_address=FTP服务器公网IP地址,可以是服务器公网ip地址
pasv_min_port=50000
pasv_max_port=50010
配置完后,按esc键退出编辑模式,
按shift+ZZ,这样会退出并保存文件,
或者输入:wq!,并按回车键,保存并退出文件。
输入
systemctl restart vsftpd.service
重启vsftpd服务。
注意:若启动失败,一般是配置问题,要么写错了,要么多了空格。
接下来设置安全组,添加21端口和50000到50010的端口:
※※一定要记得用防火墙开放端口,这个曾让我绝望的地方。
接下来配置防火墙,依次输入
firewall-cmd --add-port=21/tcp --permanent
firewall-cmd --add-port=20/tcp --permanent
firewall-cmd --add-port=50000-50010/tcp --permanent
firewall-cmd --add-port=50000-50010/udp --permanent
firewall-cmd --reload
输入
systemctl restart vsftpd.service
重启vsftpd服务。
OK,配置完成。
接下来打开一个本地浏览器,在网址栏输入ftp://ftp公网地址:21/,会弹出一个框,填写用户名(上面的ftptest)和密码(自己设置的密码),登陆若出现下面页面则表示成功:
出现乱码请自行百度修改浏览器的编码。
※也可以使用Xftp6连接ftp:
注意协议改为FTP,端口号是21。
使用被动模式记得勾上。
连接成功后就可以进行文件传输了。
六、部署JavaWeb项目
参考:如何在eclipse将web项目打成war包并导入阿里云ECS服务器CentOS7进行测试
这里只简单列下步骤:
1、检查前端源码是否有base标签,有则请把localhost改为服务器公网ip地址。
2、右击项目->点击expot->找到War File->点击next->记得勾选Export source files->打包完成。
3、通过Xftp6把war包传到tomcat的webapps目录下,连接协议记得是SFTP。
4、进入tomcat的bin目录,输入./startup.sh指令,启动服务器。
5、打开本地浏览器,输入http://公网ip:8080/项目名/,页面打开说明部署成功。
6、若想要网站在关闭远程连接后还能访问,则在bin目录下输入
nohup ./catalina.sh run &
关闭此功能请百度。
OK,大功告成!
关于此篇的不足之处,还请指正。整理不易,谢谢支持!