说在前头:因为在这个搭建的过程中,尝过了不少的苦头,流过了不少的心酸泪,所以我希望后来者们,能够好好的活着,心态炸了也要继续热爱生活。/委屈巴巴
另外,一些我们使用的软件版本最最最好控制与项目同步。(别问我为什么,我先去哭三分钟)
我这里个软件使用到的版本(主要还是控制大版本的变更,例tomcat 7,8,9,mysql5.x , 8):
- linux centos7.3
- jdk1.8
- tomcat 9.0.14
- mysql 8.0.17
l 因为项目所需要的软件安装包(以及后面的项目文件),我都是事先在自己电脑里下载的 (各软件网址有提供),所以要上传到服务器端中,我们先下载一个FileZilla,并在服务器的linux系统里面进行相关的配置。
大部分命令我都采用截图的的方式展现,这样也有利于大家温习或者学习一下linux命令嘛。(CV太麻烦了,我会说出来吗?)
搭建FTP
将文件上传到服务器端需要搭建一个FTP服务。
1.安装vsf
[root@admin]# yum -y install vsftpd
2.编辑vsftpd的配置文件
[root@xiaojian /]# vi /etc/vsftpd/vsftpd.conf
清空内容(你可以使用: echo “” > 需要清空内容的文件名;如:echo “” > /etc/vsftpd/vsftpd.conf),添加如下内容
listen=YES
background=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to ftptest FTP servers
pam_service_name=vsftpd
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_lis
3.创建管理账户文件
[root@xiaojian /]# touch /etc/vsftpd/vsftpd.chroot_list
4.启动vsftpd服务
[root@xiaojian /]# service vsftpd start
5.下载FileZilla(百度去,网上啥都有)
端口空着
往服务器端上传准备好的文件
安装配置jre1.8
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html
1.把下载好的文件上传到服务器端(我把搭建所需的环境都放在了 /usr/local 下:java、tomcat、mysql为命名的文件夹
2. 来到该目录下 cd /usr/local/java ,解压
[root@xiaojian java]# tar -zxvf server-jre-8u131-linux-x64.tar.gz
3. 删除安装包
rm -rf server-jre-8u131-linux-x64.tar.gz
4. vi /etc/profile启用linux文本编辑器配置jdk环境变量
[root@xiaojian java]# vi /etc/profile
在文件的末尾添加如下内容:(注意jdk的文件路径、文件名填写自己的啊)
#set java environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=${JAVA_HOME}/bin:$PATH
vi 操作简单说明:
insert键( 或 i 键 ):插入内容
按下ECS键,输入:qw! 保存退出
按下ECS键,输入:q! 不保存退出
5. 让修改的环境变量文件立即生效
[root@xiaojian java]# source /etc/profile
6. 验证
安装Tomcat
这里我们使用在服务器端通过wget命令下载。大家可以在这个网址中寻找你想要的版本
http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat
网址的格式不变,路径根据所需版本修改;比如我要下载:tomcat 9.0.14
路径:
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.14/bin/apache-tomcat-9.0.14.tar.gz
当然你也可以直接下载好安装包传输到linux上进行安装,流程是一样的。这个网站apache的软件的一些历史版本也可下载,大家按需下载。
http://archive.apache.org/dist/tomcat
1、将Tomcat安装到 /usr/local 目录下
[root@xiaojian local]# cd /usr/local
2、下载Tomcat版本(选择所需版本地址)
[root@xiaojian local]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.14/bin/apache-tomcat-9.0.14.tar.gz
** 2.1 如果在这里出现一个错误
-bash:wget:command not found
是因为系统缺少了这个命令,你可以使用以下方法进行安装(还是有问题的,可以百度一下这个错误,或者选用安装包的方式安装tomcat)
yum -y install wget
3、解压缩下的压缩包
[root@xiaojian local]# tar -zxvf apache-tomcat-9.0.14.tar.gz
4、删除压缩包
[root@xiaojian local]# rm -rf apache-tomcat-9.0.14.tar.gz
5、修改Tomcat文件夹的名称为tomcat
[root@xiaojian local]# mv apache-tomcat-9.0.14 tomcat
6、进入tomcat/bin文件夹,启动&关闭Tomcat
[root@xiaojian local]# cd tomcat/bin
[root@xiaojian bin]# ./startup.sh ( 进入到Tomcat的bin目录中,或者通过全路径来启动 )
// 输入netstat -tulnp查看个端口开启情况(tomcat端口8080)
7.打开浏览器,输入你的服务器地址,出现tomcat首页页面,说明服务部署成功
ps:如果你的服务器时阿里云的,那应该是访问不了,需要配置安全规则,开放8080端口,
pps:如果你的服务器是天翼云的,就算配置了安全规则,开发了8080端口,也是访问不到的,因为天翼云的几个常用端口:80,8080,443,8443,都是需要备案后才能使用的,所以你这里可以修改下tomcat的端口号,并开放这个端口号。主要用来测试嘛,修改下还是很有必要的,日后备案后也可以修改回来嘛。
怎么修改?
- 在 tomcat/config目录下,vi server.xml
[root@wrkq1njujislh7mx conf]# vi server.xml
- 在文本中找到
-->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- A "Connector" using the shared thread pool-->
...
将8080修改成你想要的端口号,比如8888,那么你的天翼云也要开放8888端口号。
安装Mysql
就是这个叫 mysql 的家伙什,不知道在我成功的道路上铺了多少荆棘,每次成功上岸都让我遍体鳞伤。从以前做项目,出过异常最多;到我部署网站时,让我不得不让服务器换一个系统。都是这个mysql作的妖。(其实是我版本没控制好,要做项目时老老实实用5.7的版本,完全没鸟事,非得作贱用8.0的了。。。。)
下载地址:https://downloads.mysql.com/archives/community/
(按项目需求下载,linux系统版本也要对应上,一定要啊!!!)
1.ftp上传文件到服务器端的 /usr/local/mysql目录下(文件有点大,耐心等待)
2.在安装之前,我们先把系统自带的mysql数据库给删咯
// 查看系统是否已经安装了mysql数据库
[root@xiaojian /]# rpm -qa | grep mysql
// 将查询出来的文件,用下面语句根据 文件名 逐个删除(我这里没有)
yum -y remove filename
3.解压,删安装包
[root@xiaojian mysql]# tar -xf mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar
[root@xiaojian mysql]# rm mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar
4. 安装(网上找的,按这个顺序安装,我也不知道,我也不敢问)
yum install mysql-community-{client,common,devel,embedded,libs,server}-*
等待~~(期间提示是否下载某个文件,输入 y)
5. 配置
a) - 启动mysql服务 service mysqld start;
关闭MySQL服务 service mysqld stop
重启mysql服务 service mysqld restart
- 加入到系统服务中 chkconfig --add mysqld
- 自动启动 chkconfig mysqld on
没事就用命令 netstat -tulnp 看看是不是打开了(3306端口)
b) 登录
新安装的mysql系统自动随机生成了密码
grep “password” /var/log/mysqld.log 查看密码
复制密码
mysql -uroot -p 回车(一定要回车的) 密码
c) 设置密码(注意Mysql8密码设置规则必须是大小写字母+特殊符号+数字的类型)
ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘newPassword’;
修改完,exit退出,再登陆时就是使用新密码登录了
d) 更改语言
打开my.cnf :vi /etc/my.cnf
在最后添加如下语句:
[client]
port=3306
default-character-set=utf8
#regin
[mysqld]
port=3306
character_set_server=utf8
远程登录
远程登录的用户
- 可以选择创建一个新的用户作为远程登录的用户(因为8.0的设置密码规格太恶心了,不想记,还是直接用下面第2中的的root吧)
->create user 'MySQLAdmin'@'%' identified by '*******.';
->grant all on *.* to 'MySQLAdmin'@'%'
->flush privileges;(刷新)
- 使用root用户,简单粗暴
使用刚修改的密码进入数据库
使用语句 use mysql;
进入数据库名为 mysql 的数据库
update user set host = ’%’ where user = ’root’;
^上一步,主要是将root的登录主机localhost,设置为任意主机%可以登录
flush privileges(刷新);
开放端口或关闭防火墙
开放3306端口(也就是你mysql的默认端口)
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT #开启3306端口
/etc/rc.d/init.d/iptables save #保存配置
/etc/rc.d/init.d/iptables restart #重启服务
*ps:如果是阿里云的服务器的话,还要配置安全组规则,开放3306端口
我用的mysql第三方登录软件是SQLyog
打开我们电脑的SQLyog,创建一个新的用户,登录(我只演示登录)
**** PS:此时如果我们用Navicat等第三方应用登录,会提示:
Authentication plugin ‘caching_sha2_password’ cannot be loaded
经查看发现,8.0改变了 身份验证插件 ,
解决方式,进入数据库,运行下面语句*(密码还是遵循8.0的规则)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root_Password';
远程登录成功!!!
这时候我们就可以使用我们电脑的mysql可视化工具,远程操作服务器端的数据库了;
我们先导出自己的项目文件 ,sql转储->结构和数据->导出;
远程登录的数据库->执行sql脚本。
上传项目文件
1.项目 -> Export -> war file
2.上传到 服务器端你的tomcat/webapps/ROOT 下,先将ROOT下的文件全部删除。
3.解压 jar -xvf filename.war(文件名)
4.删除 war包 rm filename.war
5.重新启动一下 tomcat
6.浏览器输入:远程服务器IP地址:8080/项目名. 访问测试
* 这里你可以修改 tomcat 的端口号为80,可以不再输入端口号就能访问相应的项目
项目部署到远程服务器需注意的细节及异常解决方案:
PS: 如果你的项目中,有文件保存到本地的操作,一定记得,Linux 和 Windows 目录结构是不一样的,Linux 的斜杠是(/),Windows是(\)。
记住斜杠的小窍门:想象你用右手从左边的刀鞘中拔刀,画出来的就是正斜杠(/);反之,是反斜杠。
PPS:如果到了这里,前面的没毛病,你那里还是出现莫须有的错误,你可以打开 tomcat 下相应日期日志文件查看错误源。
我上传完项目的时候,就出现了错误,没有查看到正确的日志文件,一直没看到正确的错误地点,幸亏后面高人指点,让我查看了相应的日志文件,找到了错误地点。
这个错误,大家应该都会报的哦,我之所以放到最后讲嘛,是因为,嘿嘿嘿…
终极错误:MySQL8.0报错…which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
具体原因我就不详述了,大家可以自己去查,最直接的解决办法呢就是,在 my.cnf 文件下,加上:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
至此,我在阿里云上面的项目就部署完成了~
在此特别感谢这几篇博客给我带来的特大帮助:
https://www.jianshu.com/p/e12faf7c662c
https://blog.csdn.net/weixin_41402352/article/details/84474307
https://www.linuxidc.com/Linux/2018-12/155819.htm
https://blog.csdn.net/chrisjingu/article/details/90291445
https://blog.csdn.net/wujiandao/article/details/100502733