虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx

 

大家看了标题估计会觉得在没有相关运维经验的情况下想部署这样的环境非常困难。所以我会写一篇关于这样的环境部署的文章,分享给大家学习的同时也能巩固我的部署能力。废话不多说,直接上干货。附:文件中提到的所有安装包资源待后续提供网盘链接

  1. 首先要想运行tomcat服务器必须先安装jdk,详细步骤请自行百度或者参照《【Linux】CentOS7下安装JDK详细过程.note》

  2. mysql服务器部署:

  • 首先去mysql官网https://www.mysql.com/downloads/下载社区版server,我下载的是mysql-community-5.7- Linux -rpm.zip安装包

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第1张图片

 

  • 将下载的安装包放在Linux虚拟机(CentOs7)的某个路径下(任一路径都可以),对压缩包进行解压 unzip mysql-community-5.7-rpm.zip,里面包含 4 个安装包

 

  • 分别执行以下命令安装四个包(严格按照顺序执行

rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm --force --nodeps

rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm --force --nodeps

rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm --force --nodeps

rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm --force --nodeps

  • 启动 MySQL:systemctl start mysqld

启动成功后,执行 ps -ef|grep mysql 命令查看进程是否存在

 

  • 查找生成的临时密码,并记录下来,如下图:grep 'temporary password' /var/log/mysqld.log

 

  • 登录 MySQL:mysql -u root -p,输入刚才记录的临时密码

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第2张图片

 

  • 修改密码(注意密码长度大于 8 位,包含大小写字母+特殊符号+数字),以分号结尾:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Test#123456';

  • 设置权限,允许用户远程访问:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Test#123456' WITH GRANT OPTION;

(注意命令中的*.*指开通所有权限,一般公司里运维不会这么做的,只会给予个别权限。)

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第3张图片

 

  • 退出 MySQL:exit
  • 关闭防火墙:systemctl stop firewalld.service,要是想一劳永逸可以选择永久关闭防火墙:systemctl disable firewalld,关闭重启服务器,查看防火墙状态:systemctl status firewalld

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第4张图片

 

  • 关闭mysql服务:systemctl stop mysqld service,启动mysql服务:systemctl start mysqld
  1. Tomcat安装配置:(单节点/单项目)

  • 先将项目放到 Linux 上某个目录下(注意:如果项目是 war 包形式的,需要先创建 pinter 文件夹,然后在文件夹内对 war 包进行解压:unzip pinter.war

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第5张图片

 

  • 将tomcat的压缩包(zip包)放在Linux某个目录下, 修改 tomcat 的 conf/server.xml 文件,在标签内,添加如下配置 /pinter" docBase="/root/projects/pinter" debug="0" reloadable="true"/> 注意:红色部分改为自己项目的目录

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第6张图片

 

  • 进入项目路径下修改配置数据库连接信息的文件(不同项目的配置文件名称可能不一样,但是路径相同[项目文件夹绝对路径]/WEB-INF/classes

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第7张图片

 

  • 编辑配置文件中关于数据库访问连接信息的修改,mysql数据库服务器的ip(由于我的mysql与项目在同一台服务器,所以这里写成localhost),数据

库连接用户名和密码

 

  • 进到tomcat的 bin 目录下,执行命令:./startup.sh & tail -f ../logs/catalina.out,注意要先给bin目录下的文件赋权chmod +x *(或者给指定文件赋执行权限注意:第一次启动 tomcat 的时候,没有 catalina.out 文件,只需要执行./startup.sh

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第8张图片

 

  • 查看控制台日志,项目是否启动成功;查看linux服务器的ip:ip addr命令查看,查看tomcat启动项目的连接端口号:在tomcat 的 conf/server.xml 文件中

 

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第9张图片

 

  • 浏览器访问项目进行验证:http://{ip}:{port}/pinter

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第10张图片

 

  1. 多项目部署(一台服务器多个tomcat+项目

  • 将 另一个OA 项目放到 Linux 目录下(和 pinter 同级目录)

 

  • 配置 OA 项目所需要的数据库信息(数据库必须启动,且已经导入了 oa.sql,与上一个项目是同一个mysql服务器)TestOA/WEB-INF/classes/jdbc.properties 文件,修改数据库的连接信息

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第11张图片

 

  • 进入上一个tomcat所在路径,然后复制一份 tomcat并重命名

 

  • 修改 tomcat-oa 的 conf/server.xml 文件

将 8005 改为其他的

 

 

标签中添加项目路径配置,参考前面的项目

  • 进入bin目录给脚本启动文件赋执行权限,启动 tomcat,查看控制台日志,项目是否启动成功

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第12张图片

 

  • 浏览器访问 OA 项目进行验证:http://{ip}:{port}/oa

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第13张图片

 

  • tomcat 的 logs 目录下 localhost_access_log.xxxx-xx-xx.txt 里记录了访问 tomcat 的日志,可以通过配置,使访问日志中显示请求耗时。修改 tomcat 的 conf 目录下 server.xml 文件,在 pattern 属性里添加%T

%T" />

  • 重启 tomcat(kill -9 进程号 杀掉当前tomcat进程,然后执行启动命令:./startup.sh & tail -f ../logs/catalina.out),查看 access 日志,红框里代表就是请求的耗时,单位秒

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第14张图片

 

  1. Redis安装部署:

Yum 官方源里没有 redis,所以采用手动源码安装

  • 上传 redis 安装包到 Linux 任意目录下,解压 tar xvf redis-5.0.7.tar.gz
  • 安装 gcc(redis 安装依赖 C 语言环境,需要先安装 gcc):yum install -y gcc
  • 进入解压后的 redis 目录下,执行编译操作:make MALLOC=libc
  • 待编译完成后,执行安装命令:make install
  • 安装成功后,在 redis 目录下,新建 conf 文件夹,将 redis.conf 配置文件拷贝到 conf 文件夹下,并重命名为 6379.conf,mkdir conf,cp redis.conf ./conf/6379.conf
  • 修改 redis.conf 配置文件:daemonize 改为 yes,dbfilename 改为 dump_6379.rdb,将 bind 127.0.0.1 注释掉(注意第一个已经注释过了,需要注释第二个),protected-mode 改为 no
  • 设置redis-server的环境变量:export REDIS_SERVER=/root/SoftWare/redis-5.0.7/src/(redis-server所在路径) export PATH=$REDIS_SERVER:$PATH,然后执行source /etc/profile使环境变量生效

 

  • 在 conf 目录下,执行redis-server ./6379.conf

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第15张图片

 

  • 使用客户端登录 redis,默认连接的是 6379 端口的 redis 实例:redis-cli

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第16张图片

 

  • 关闭 redis-server:redis-cli shutdown
  • 多个redis实例部署:在 conf 目录下,拷贝一份配置文件,cp 6379.conf 6380.conf,将6380.conf中的port修改为6380,dbfilename 修改为 dump_6380.rdb

启动 redis-server:redis-server ./6380.conf,使用客户端登录 redis:redis-cli -p 6380

  • redis中的其他配置:maxclient:最大连接数,默认是 10000;maxmemory:最大内存;requirepass:设置密码,将requirepass foobared的注释去掉,并修改成 requirepass testfantestfan就是当前redis的连接密码

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第17张图片

 

  • 一般mysql数据库数据量大的情况下会增加redis缓存来处理数据,redis介于项目与mysql数据库之间的,所以需要把redis服务器与项目绑定。

进入项目的路径下编辑数据库配置文件(当前项目是application.properties)

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第18张图片

redis最好要与mysql安装在同一个服务器上

 

  • 当redis服务器上存在多个redis实例时,可以做成主从关系的redis集群,这里我是6379作为主,6380作为从

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第19张图片

 

然后编辑从redis的配置文件:vi 6380.conf,在里面添加从属关系

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第20张图片

 

  • 启动这两个redis服务:redis-server 6379.conf,redis-server 6380.conf(如果没有启动成功,说明要添加环境变量),然后客户端连接主redis:redis-cli -p 6379 -a testfan,并添加一条数据

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第21张图片

 

  • 打开新的会话连接redis服务器,然后客户端连接从redis:redis-cli -p 6379 -a testfan,获取主redis中的数据

 

  1. Nginx安装配置:

  • Nginx 安装前需要先安装 pcre、openssl、zlib 等模块,手动安装比较繁琐,所以推荐使用yum进行安装:先手动添加官方源 rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm,然后安装 Nginx:yum install -y nginx
  • Nginx 默认安装到/etc/nginx 目录下,nginx.conf 为主配置文件,编辑 nginx.conf,修改 worker_processes 为当前系统的CPU核数

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第22张图片

  • 在 Nginx 中,每个项目都有自己的一个配置文件,配置了本项目的访问方式。进入 nginx 目录下的 conf.d 文件夹,包含了一个默认配置文件模板 default.conf,重命名配置文件为当前项目配置文件:mv default.conf pinter.conf
  • 编辑 pinter.conf 配置文件,在 server 模块前面新增:

upstream www.pinter.com {

ip_hash;

server 192.168.10.187:8080 weight=10 max_fails=2 fail_timeout=30s;

server 192.168.10.59:8080 weight=10 max_fails=2 fail_timeout=30s;

}

注意:红色字体根据实际情况修改,两个 ip 为本项目部署在哪些服务器上,我部署了两个该项目的服务器,所以写了两条

  • 修改server{...}模块,将 server_name 修改为 www.pinter.com(根据实际情况修改),access.log 的注释去掉,后面文件名称改为项目名称。将 location 中的 root、index 注释掉,新增 proxy_pass http://www.pinter.com; 注意:proxy_pass 后的域名名称必须和 upstream 名称保持一致

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第23张图片

 

  • conf.d 目录下可以放多个项目,配置方法同上

  • 在任意目录下执行命令:nginx,如果没有任何报错,就代表启动成功了,nginx -s reload:重启 nginx,nginx -s stop:停止 nginx
  • 在本机(Windows/Mac),修改 host 文件,配置两个项目的 ip(Nginx服务器ip) 和域名映射关系,Windows 系统 host 文件在 C:\Windows\System32\drivers\etc\hosts

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第24张图片

  • 在浏览器中,通过域名的方式,分别访问两个项目,搞定www.pinter.com/pinter,www.oa.com/oa,注意要事先启动Nginx服务器,启动tomcat服务器才能访问成功
  • Nginx访问日志配置:用户每次访问 nginx服务器,都会在项目的 access.log 里记录一行日志。可以在访问日志里记录请求耗时,这样方便排查问题。在 Nginx 的主配置文件中(nginx.conf)的log_format里增加"$request_time"

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第25张图片

  • 重启 nginx,在项目 access.log 里,可以看到每个请求的耗时了

  • Nginx 负载均衡策略配置:在/etc/nginx/conf.d下项目配置文件中的upstream 模块中,添加负载均衡策略

四种策略:

轮询:默认策略

ip_hash:根据 ip 进行 hash 算法,固定的 ip 分配到固定的后端 server

fair:根据后端 server 的响应时间来分配请求,响应时间短的优先分配

url_hash:根据 url 进行 hash 算法,固定的 url 分配到固定的后端 server

虚拟机部署项目JDK+Mysql+Tomcat+项目系统+Redis+Nginx_第26张图片

 

 

 

你可能感兴趣的:(Linux,nginx,linux,mysql,java,数据库)