# 如何在阿里云服务器部署web项目(小白版,覆盖了每个细节和各种可能遇到的问题 )
一、购买阿里云服务器
阿里云官网: 首次注册领取免费天数服务器:
二、准备工作
1.Xshell7
顾名思义,通过这个可以远程终端连接到云服务器,连接成功,便可以使用远程终端的shell来控制阿里云服务器
2. xftp 7
顾名思义,利用ftp文件传输协议在两个终端之间传输文件
xftp的操作和xshell一样 输入云服务器公网地址建立连接后,便可以让当前主机与云服务器连接 可以在图形界面将当前主机的文件传输到云服务器上
3. jdk和tomcat下载 (linux版本)
链接: 提取码:zbfr
4. 开启8080和3306端口
三、在云服务器上配置jdk和tomcat环境
1.在usr目录下创建一个java目录,在java目录下分别创建jdk和tomcat目录
cd /usr mkdir java cd java mkdir jdk mkdir tomcat
2.使用xftp7将下载好的jdk和tomcat压缩文件分别上传到jdk目录和tomcat目录
3.配置java环境变量
①解压缩(在jdk目录下使用ls查看自己的jdk文件名 将311改成你自己的)
cd jdk tar -zvxf jdk-8u311-linux-x64.tar.gz
②配置java环境变量 我是使用vim文本编辑软件来配置
用vim打开/etc/profile文件
vim /etc/profile
进入之后,输入i进入插入模式,将下面这段内容插入到文件末尾(其他位置也行,路径按自己的修改) 插入完成,按下Esc,输入 :wq! 保存并强制退出。(这里是vim的操作,可查阅资料)
#set java environment export JAVA_HOME=/usr/java/jdk/jdk1.8.0_311 export JRE_HOME=/usr/java/jdk/jdk1.8.0_311/jre export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
退出后,输入如下命令是配置文件生效
source /etc/profile
到这里,java环境变量配置成功了,输入如下命令检查是否配置成功
java -version
4.配置tomcat环境变量
①解压缩(进入tomcat目录)
tar -zvxf apache-tomcat-8.5.63.tar.gz
②添加jdk环境
进入解压文件的bin目录
cd apache-tomcat-8.5.63/bin
进入到bin目录下的setclasspath文件
vim setclasspath.sh
将下面一段内容加入到文件的末尾
#set java env export JAVA_HOME=/usr/java/jdk/jdk1.8.0_311 export JRE_HOME=/usr/java/jdk/jdk1.8.0_311/jre
③启动tomcat服务器 前面已经将tomcat配置完成,现在进入到tomcat的bin目录下,输入下面命令启动tomcat服务器 (./shutdown.sh关闭tomcat)
./startup.sh
四、外网访问
现在可以在外网通过 http://公网IP地址:8080 来访问自己的阿里云服务器下的tomcat,出现如下界面,便成功访问到tomcat。如果失败 请前往文章最后的附录一,成功就直接接着往下看!
五、下载和配置mysql
1.下载mysql
linux系统中一般都自带mysql,使用命令下载即可,我是用的阿里云服务器是Ubuntu系统,这里的命令对Ubuntu系统有效,如果你是用的是Centos,那么请到文章最后的附录三查看Centos的mysql配置命令。(可以更换为ubuntu,百度一下,一分钟就可以搞定)
在写作这篇文章的时候,Ubuntu 源仓库中最新的 MySQL 版本号是 MySQL 8.0。想要安装它,运行下面的命令:
sudo apt update sudo apt install mysql-server
一旦安装完成,MySQL 服务将会自动启动。想要验证 MySQL 服务器正在运行,输入:
sudo systemctl status mysql
2.保护加固mysql
MySQL 安装文件附带了一个名为mysql_secure_installation的脚本,它允许你很容易地提高数据库服务器的安全性。
sudo mysql_secure_installation
3.设置mysql的字符集为utf-8
前面已经把mysql基本配置完成,已经可以使用,但是可能会有中文字符集插入报错问题,所以我们将mysql的字符集统一改成utf-8
输入mysql或者mysql -u root -p登录到mysql,在键入show variables like %character%;查看mysql默认字符集编码,可以看到还mysql的数据库和服务端尚未设置为utf-8
输入exit退出mysql 输入vim /etc/mysql/my.cnf 在my.cnf配置文件追加如下内容。按下 ESC 并输入:wq!保存并退出(vim操作参考前文)
[client] default-character-set=utf8 [mysqld] character_set_server=utf8
退出后重启mysql
service mysql restart
再次登录mysql并查看字符集出现如下界面字符集设置成功
4.将本地数据库上传到服务器
①将本地数据库导出为sql文件 在navicat下,选择你想要导出的数据库 按下鼠标右键 选择转储SQL文件 / 结构和数据 ,之后将导出的数据库sql文件通过XFTP上传到阿里云服务器上,
②在阿里云上,运行该sql文件(source 后面是sql文件存储路径)
source /usr/java/sql/rice.sql
六、将java web项目部署到阿里云上
1.在idea上选择FileProject Structure 然后按如图所示将javaweb项目以war包形式导出(记得修改项目中数据库连接的地址位阿里云服务器ip地址),点击Apply应用 导出后会在out文件夹(非maven项目)或者target文件下(maven项目)看到项目的war包。复制出来通过XFTP上传到云服务器的tomcat文件夹下的webapps下面。tomcat会自动从war包中解析出项目工程目录来。
导出后war包后,需要重新编译一下,选择BulidBuild ArtFacts 在跳出的界面中选择你刚刚导出的war包进行编译 编译好的程序会打包在out目录下(如果是maven项目,那就是target目录下),找到war包复制下来通过XFTP上传到云服务器的tomcat文件夹下的webapps目录下面。tomcat会在上传后的几秒内自动从war包中解析出项目工程目录来(刷新一下目录即可看到)。
2.上传好后 重新启动一下tomcat,
3.大功告成 在地址栏输入http://公网ip地址:8080/war包名 便可以访问到我们的项目了
【附录一 开启8080端口】
如果tomcat访问失败,并且tomcat和java环境配置都正确,那么访问不成功的原因可能是,你的阿里云服务器没有开启8080端口,那你当然无法访问。(比如22端口没有开启,那么你就无法远程终端连接)
可以使用netstat -anp |more查看当前云服务器上开放的端口 查看8080端口是否开放
如果没有看到8080端口,那么这就是你访问不了tomcat的原因了,下面我们就来在阿里云上开启一下8080端口
切换到阿里云网页,按如图所示进入到安全组配置(界面不一样是因为你用的新版界面,切换到旧版就行,在右上角的选项)
点击配置规则
点击添加安全组,按如图所示添加8080端口,点击确定
mysql对应的3306端口和8080操作一样 把8080/8080改为3306/3306即可
【附录二 在navicat上连接到阿里云上的mysql 】
如果每次对mysql的操作都需要在命令界面操作,那就太麻烦了,使用图形化界面无疑会方便很多,所以我们现在来用navicat链接到阿里云服务器的mysql
1.在navicat建立连接如下
2.这样一般是连接不上的,可能会出现如下错误,需要对端口和用户权限进行设置
①.设置3306端口对所有主机开放
通过查询3306端口状态可以看到 3306端口仅仅对ip地址为127.0.0.1主机开放,也就是只能本地主机访问,其他所有主机都访问不了3306端口
使用如下命令进入mysqld.cnf文件,将127.0.0.1所在的一行删掉或者注释掉
vi /etc/mysql/mysql.conf.d/mysqld.cnf
重启mysql再次查看3306端口状态 可以看到3306端口已经对所有主机开放
②设置mysql 远程访问权限
当我们开放了3306端口对远程连接的主机访问权限后,还是无法使用navicat连接到阿里云的服务器 这是因为我们使用的是root用户连接阿里云mysql,mysql默认让它的使用用户只能在本地访问mysql服务器,远程无法访问,所以我们还需要设置远程主机能通过root用户访问到mysql服务器。
mysql的用户是保存在 mysql下载后自带的mysql数据库的user表中,通过查询此表,可以看到root用户对应的host是localhost也就是本地主机,所以无法远程主机无法通过root访问mysql
修改root的访问权限(下面的命令三选一即可),让root用户在所有主机都可以登录连接到mysql服务器
//改表法 update user set `host` = % where `user` = root ; //授权法 grant all privileges on *.* to root@% with grant option; //授权法(设置访问密码) GRANT ALL PRIVILEGES ON *.* TO root@% IDENTIFIED BY 输入你设置的root密码 WITH GRANT OPTION;
刷新系统权限,让修改内容生效
flush privileges;
3.在navicat再次连接阿里云的mysql
如果还是失败,那就是密码不匹配,查看或修改一下mysql的密码即可,因为mysql8.0以上使用加密算法对密码加密,所以我就直接修改了密码
修改root用户密码,还是在mysql数据库下的user表中
//先将密码置空 update user set authentication_string= where user=root; //修改密码 alter user root@localhost identified with mysql_native_password by 输入新密码;
【附录三 在Centos系统上安装mysql】
参考这篇博客: