本文讲解如何在linux CentOS下部署Java Web项目的步骤
环境准备
(1)Linux系统
(2)JDK(java的运行环境,不装jdk你的电脑识别不了java代码)
(3)Tomcat (web应用服务器,可以让代码运行起来)
(4)MySQL(数据库,存储你软件的数据)
(5)Redis(缓存数据库)
(6)Nginx(反向代理服务器,反向代理、负载均衡、动静分离)
(7)Maven(项目管理工具,管理依赖、构建项目,打war包)
(8)把开发给的代码包,上传到Tomcat下,运行
一、Linux系统
本文主要是Linux CentOS7为例,vmware安装centos镜像步骤见下方链接
vmware安装centos镜像_vm安装centos镜像_努力学写脚本的八宝糖的博客-CSDN博客
二、JDK下载安装
1.去官网下载Linux版本的JDK,这里以JDK1.8为例
下载地址:
Java Downloads | Oracle
2.将安装包存放到Linux的目录下
在window/Mac的终端通过scp命令上传:scp -r 本机安装包路径 虚拟机登陆账号@虚拟机IP:虚拟机中安装包存放路径(也可以利用xftp上传)
3.上传完之后,执行:tar -zxvf jdk-8u131-linux-x64.tar.gz命令即可自动解压,解压之后会有一个JDK目录
4.安装好JDK后需要配置环境变量
进入到/etc目录,进入编辑模式vi profile
在文本末尾添加以下配置项
JAVA_HOME=/root/jdk1.8.0_11/(实际解压文件的路径)
CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
注意JAVA_HOME的路径是你 jdk实际安装在Linux里面的目录
编辑完后,按ESC退出编辑模式,输入:wq,保存退出
5.退出之后重启配置项,输入命令:source /etc/profile
这个时候可以查看JDK版本,输入java -version
到此JDK安装结束
三、下载安装Tomcat
1.在官网下载安装包:https://tomcat.apache.org/
2.上传tomcat安装包,同样利用scp命令上传完成后,执行tar -zxvf apache-tomcat-8.5.41.tar.gz命令即可自动解压,解压完成后会有一个tomcat目录,进入tomcat的bin目录
3.然后输入命令./startup.sh重启服务
4.配置防火墙
注意:centos7默认的防火墙是firewalld,如果想要安装iptables,步骤如下:
4-1.编辑防火墙配置
vi /etc/sysconfig/iptables
4-2.添加8080端口的防火墙,允许访问.
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j A***EPT
将这句增加8080端口,添加至防火墙配置文件iptables中。
注意!非常关键:端口的配置必须要在如下配置的上方,放在下方无效.
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
保存并退出.
4-3.重启防火墙:service iptables restart
4-4.在本地浏览器访问tomcat:http://linuxIP:8080
四、MySQL下载安装(通过yum来进行mysql的数据库安装)
卸载掉原有mysql
查询电脑有没有安装mysql: rpm -qa | grep mysql
有的话,我们就通过rpm -e --nodeps 命令来卸载掉
rpm -e --nodeps 数据库文件名
在删除完以后我们可以通过 rpm -qa | grep mysql 命令来查看mysql是否已经卸载成功!!没有出现结果即代表完全卸载成功
1.下载安装yum源
1-1.下载yum源:去mysql官网下载:https://www.mysql.***/downloads/
1-2.下载完复制到Linux主机上:scp -r /Users/bbt/Desktop/mysql80-***munity-release-el7-7.noarch.rpm root@192.168.220.160:/root (此命令在主机Mac或Window上输入)
1-3.安装yum: yum install mysql80-***munity-release-el7-7.noarch.rpm(自己的mysql文件)
1-4.检查是否安装成功:yum repolist enabled | grep mysql 或者 yum repolist enabled | grep "mysql.*-***munity.*"(若打印几个mysql版本,说明rpm安装成功)
2.安装mysql服务和启动服务
2-1.安装命令:yum install mysql-***munity-server(就用这个,无需替换任何)
2-2.安装后,启动服务:systemctl start mysqld
2-3.查看服务状态:systemctl status mysqld
2-4.再将MySQL服务设置为开机自启动:chkconfig mysqld on
2-5.查询设置启动情况:systemctl list-unit-files
2-6.mysql数据库安装完以后只会有一个root管理员账号,但是此时的root账号还并没有为其设置密码 所以我们可以通过 该命令来给我们的root账号设置密码(注意:这个root账号是mysql的root账号,非Linux的root账号)
sudo grep 'temporary password' /var/log/mysql.log //通过该命令查看初始密码
mysql -uroot -p //启动mysql数据库 先用初始密码登录(此命令后没有分号)
ALTER USER ‘root'@'localhost'IDENTIFIED BY 'Root123!'; // 通过该命令给root账号设置密码为Root123!(这个密码可能会有复杂度校验,另外,最后的分号必须写!!!)
详情请参考官方文档 :
此时我们就可以通过 mysql -u root -p 命令用新密码来登录我们的mysql数据库了
2-7.接下来,把mysql设置为可以进行外部连接(特别注意语句后面分号必须写!!!):
mysql -u root -p //启动mysql数据库(此命令后没有分号)
mysql>use mysql; //切换至mysql数据库
mysql>update user set host = '%' where user = 'root';
//修改localhost为%(所有的意思)(如果出现错误,不用管它,直接进行下一步)
mysql>flush privileges; //刷新数据库权限
exit; //退出mysql
2-8.接下来编辑防火墙配置:
Mysql的默认端口为3306,所以需将mysql默认端口增加至防火墙内
vi /etc/sysconfig/iptables
添加3306端口的防火墙,允许访问.
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j A***EPT
将这句增加3306端口,添加至防火墙配置文件iptables中。
注意!非常关键:端口的配置必须要在如下配置的上方,放在下方无效.
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
保存并退出.
2-9.重启防火墙:service iptables restart
如:使用root密码再次登录mysql时登录不上,可执行以下操作:
一般出现这种情况时因为mysql的经典BUG,自动删除名为mysql的数据库而导致的。
先执行service mysqld stop 停止mysql服务
然后执行 mysqld_safe --skip-grant-tables #重新配置mysql数据库
再启动mysql: service mysqld start
就能登录进去了。
五、Redis下载安装
1.去官网:https://redis.io/download/ 下载获得redis-7.0.0.tar.gz后将它放入Linux目录/opt
2./opt目录下解压redis
tar - zxvf redis-7.0.0.tar.gz
3.进入目录:cd redis-7.0.0
4.在redis-7.0.0目录下执行make命令
make && make install (编译和安装),安装成功会显示:It is a good idea to run 'make test';
安装时可能会遇到如下报错:
报错1:
which: no python3 in (/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/huan/.local/bin:/home/huan/bin)
解决方式:
Linux安装redis过程,可能需要安装python3环境_努力学写脚本的八宝糖的博客-CSDN博客
报错2:致命错误:jemalloc/jemalloc.h:没有那个文件或目录
解决方式:在redis目录下执行:make MALLOC=libc
5.查看默认安装目录:usr/local/bin
6.将默认的redis.conf拷贝到自己定义好的一个路径下,比如/myredis
mkdir /myredis
cp redis.conf /myredis/redis7.conf
7.修改/myredis目录下redis7.conf配置文件做初始化设置
8.启动服务
redis-server /myredis/redis7.conf 启动服务
ps -ef|grep redis|grep -v grep 查看后台服务是否成功启动
9.连接服务
redis-cli -a 111111 -p 6379
10.在客户端输入ping,如果输出pong,就说明redis服务安装成功,可以正常使用。
六、Nginx安装与配置
1.在官网:https://nginx.org/en/download.html下载nginx-1.22.1.tar.gz后将它放入Linux系统(scp命令)
2.解压nginx安装包
tar - zxvf nginx-1.22.1.tar.gz
3.进入目录:cd nginx-1.22.1
4.编译安装与依赖检查
./configure --prefix=/usr/local/nginx (表示装在哪个目录下)
若出现如下警告或报错:
则安装g***:yum install -y g***
装完之后继续编译nginx:./configure --prefix=/usr/local/nginx
若出现如下警告或提示:
则安装perl库:yum install -y pcre pcre-devel
重新执行命令:./configure --prefix=/usr/local/nginx
若出现如下警告或提示:
则安装zlib库:yum install -y zilb zlib-devel
重新执行命令:./configure --prefix=/usr/local/nginx
5.直到不报错,接下来执行:make && make install
Nginx启停(nginx停止启停时可能会遇到的问题:nginx服务停止或重启时报错:open() “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directory)的解决办法_努力学写脚本的八宝糖的博客-CSDN博客
6.进入安装好的目录 /usr/local/nginx/sbin (sbin目录下有可执行文件nginx)
./nginx 启动
其他相关命令: ./nginx -s stop 快速停止
./nginx -s quit 优雅关闭,在退出前完成已经接受的连接请求
./nginx -s reload 重新加载配置
在浏览器中访问服务器的IP,如果能访问说明启动成功,如果不能访问,说明启动失败;启动失败的原因可能是因为防火墙干扰。
7.关闭防火墙:systemctl stop firewalld.service
刷新浏览器,访问成功。(可能会遇到服务启动成功,但浏览器无法访问的问题,解决方案:Nginx启动成功,但浏览器却不能访问的解决办法。_努力学写脚本的八宝糖的博客-CSDN博客
七、maven安装与配置(本文以v3.5.4为例)
1.下载maven安装包:https://maven.apache.org/download.cgi
2.在终端输入命令:mvn -v (查看maven的版本)
3.配置maven环境变量
编辑maven的配置文件:vim .bash_profile 把下面的内容加到配置文件里
#maven
export MAVEN_HOME=/Users/bbt/DevelopEnvironment/apache-maven-3.5.4(这个路径是系统上maven的安装路径)
export PATH=${MAVEN_HOME}/bin:$PATH:.
4.验证配置文件修改是否生效:source ~/.bash_profile
5.查看maven版本:mvn -v
显示如下即为成功
6.在maven安装包中创建一个repository文件夹(用于存放架包)
7.在配置文件setting.xml(conf目录下,可以以记事本文件打开)中修改镜像
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.***/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
改好了要保存一下,然后关闭。
或者直接替换成项目里的配置文件(因为第二次打包的时候失败了,干脆就直接用项目里的了)
8.切换到项目的主目录路径下,执行打包命令
mvn clean package -Dmaven.test.skip=true
war包打包成功。(后端的包)
八、直接上传自己的war包到tomcat的webapps目录下就可以了(linux服务器),只要你的tomcat是打开的,这时候会自动解压war包成一个文件夹,如果war不需要再配置其他内容(如数据库地址,一些本地认证等),就直接在浏览器上访问ip:8080/war的名字(例如你的程序名叫recycle.war,服务器ip为:192.168.1.2,那么就访问:192.168.1.2:8080/recycle)。
如果需要配置数据库等信息,在公司里一般都会提供给你部署文档,根据部署文档进行操作。
例如:
前端的包放在nginx配置文件location指定的路径下 。
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
a***ess_log /var/log/nginx/a***ess.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name 192.168.220.161;
# location /re/a.html {
# alias /project/recycle/a.html;
# }
location /recycle {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
root /project/recycle/front/dist/;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
}
修改完配置文件执行“nginx -t”命令测试配置文件修改后的语法是否正确(如果有问题会报错)。
使用命令“nginx -s reload”命令重启让配置文件生效。
reload命令会重新加载配置文件,nginx服务不会中断。
如图服务正常重启,监听端口已经修改为8080。
在tomcat目录下查看日志:tail -200f logs/catalina.out