lnmt

article/2025/10/1 7:47:06

lnmt 简介

lnmt: 表示的是 linux + nginx + mysql + tomcat 的简称
Apache 为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet,Tomcat实际上运行JSP页面和Servlet,Tomcat处理静态HTML的能力不如Apache服务器
了解更多Tomcat 内容请参考 Tomcat 文章
实验环境

服务器主机名IP
nginx-server192.168.169.30
tomcat-server192.168.169.20

安装yum源

[root@nginx-server ~]# cd /etc/yum.repos.d/
[root@nginx-server yum.repos.d]# curl -o CentOS7-Base-163.repo  http://mirrors.163.com/.help/CentOS7-Base-163.repo
[root@nginx-server yum.repos.d]# sed -i 's/\$releasever/7/g' /etc/yum.repos.d/CentOS7-Base-163.repo
[root@nginx-server yum.repos.d]# sed -i 's/^enabled=.*/enabled=1/g' /etc/yum.repos.d/CentOS7-Base-163.repo
[root@nginx-server yum.repos.d]# yum -y install epel-release

在tomcat-server 这台服务器上做以上同样的操作
关闭防火墙、关闭selinux

[root@nginx-server ~]# systemctl stop firewalld
[root@nginx-server ~]# systemctl disable firewalld
[root@nginx-server ~]# setenforce 0
[root@nginx-server ~]# sed -ri 's/(^SELINUX=).*/\1disabled/g' /etc/selinux/config 

安装Nginx
创建系统用户和组

[root@tomcat-server ~]# groupadd -r nginx  
[root@tomcat-server ~]# useradd -r -M -s /sbin/nologin -g nginx nginx

安装依赖环境

[root@nginx-server ~]# yum -y install pcre-devel openssl openssl-devel gd-devel

安装开发包

[root@nginx-server ~]# yum -y groups mark install 'Development Tools'

建立存放日志目录,并且修改属主和属组

[root@nginx-server ~]# mkdir -p /var/log/nginx
[root@nginx-server ~]# chown -R nginx.nginx /var/log/nginx/

下载nginx

[root@nginx-server ~]# cd /usr/src/
[root@nginx-server src]# yum install -y wget vim 
[root@nginx-server src]# wget http://nginx.org/download/nginx-1.12.0.tar.gz

编译安装nginx

[root@nginx-server src]# tar xf  nginx-1.12.0.tar.gz 
[root@nginx-server src]# cd nginx-1.12.0
[root@nginx-server nginx-1.12.0]# ./configure  --prefix=/usr/local/nginx --user=nginx --group=nginx  --with-debug  --with-http_ssl_module  --with-http_realip_module    --with-http_gunzip_module  --with-http_gzip_static_module  --with-http_stub_status_module  --http-log-path=/var/log/nginx/access.log  --error-log-path=/var/log/nginx/error.log
[root@nginx-server nginx-1.12.0]# make  && make install

nginx 安装之后的配置
加入环境变量

[root@nginx-server ~]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
[root@nginx-server ~]# . /etc/profile.d/nginx.sh

启动nginx

[root@nginx-server ~]# nginx 
[root@nginx-server ~]# ss -anlt
State       Recv-Q Send-Q                      Local Address:Port                                     Peer Address:Port              
LISTEN      0      128                                     *:80                                                  *:*                  
LISTEN      0      128                                     *:22                                                  *:*                  
LISTEN      0      100                             127.0.0.1:25                                                  *:*                  
LISTEN      0      128                                    :::22                                                 :::*                  
LISTEN      0      100                                   ::1:25                                                 :::*   

安装mysql数据库

[root@nginx-server ~]# yum -y install ncurses-devel openssl-devel openssl  cmake mariadb-devel

创建mysql 用户和组

[root@nginx-server ~]# groupadd -r mysql
[root@nginx-server ~]# useradd -r -M -s /sbin/nologin -g mysql mysql

下载mysql 二进制软件包

[root@nginx-server ~]# cd /usr/src/
[root@nginx-server src]# wget https://downloads.mysql.com/archives/get/file/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
[root@nginx-server src]# tar xf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz  -C /usr/local/

创建软连接

[root@nginx-server src]# cd /usr/local/
[root@nginx-server local]# ln -s mysql-5.7.22-linux-glibc2.12-x86_64/  mysql

修改属主和属组

[root@nginx-server local]# chown -R mysql.mysql /usr/local/mysql

添加至环境变量

[root@nginx-server local]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@nginx-server local]# . /etc/profile.d/mysql.sh

创建数据存放的目录

[root@nginx-server local]# mkdir -p /opt/data
[root@nginx-server local]# chown mysql.mysql /opt/data/

初始化数据库

[root@nginx-server local]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/opt/data/
2018-09-05T19:23:25.077048Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-09-05T19:23:26.527447Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-09-05T19:23:26.690456Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-09-05T19:23:26.752569Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 29d39f8b-b141-11e8-b789-000c291f67af.
2018-09-05T19:23:26.753611Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2018-09-05T19:23:26.754431Z 1 [Note] A temporary password is generated for root@localhost: 8V0rh,E(ExkL

保存密码

[root@nginx-server ~]# echo '8V0rh,E(Exk' >> 1.txt

配置mysql

[root@nginx-server ~]# ln  -s /usr/local/mysql/include/ /usr/local/include/mysql
[root@nginx-server ~]# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

生成配置文件

[root@nginx-server ~]# cat > /etc/my.cnf <<EOF
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data/
socket = /tmp/mysql.sock
port = 3306
pid-file = /tmp/data/mysql.pid
user = mysql
skip-name-resolve
> EOF

创建存放pid 对应的文件,和/etc/my.cnf 里面的pid-file 对应的位置一样,并且修改属主和属组

[root@nginx-server ~]# mkdir /tmp/data
[root@nginx-server ~]# touch /tmp/data/mysql.pid
[root@nginx-server ~]# chown  -R mysql.mysql /tmp/data/

启动服务脚本

[root@nginx-server ~]# cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@nginx-server ~]# sed -ri 's#^(basedir=).*#\1/usr/local/mysql#g' /etc/init.d/mysqld 
[root@nginx-server ~]# sed -ri 's#^(datadir=).*#\1/opt/data#g' /etc/init.d/mysqld

启动服务

[root@nginx-server ~]# service mysqld start 
Starting MySQL. SUCCESS

修改密码使用临时密码登录

[root@nginx-server ~]# cat 1.txt 
8V0rh,E(Exk
[root@nginx-server ~]# mysql -uroot -p 
Enter password:
mysql> set password = password('chen');
Query OK, 0 rows affected, 1 warning (0.01 sec)

在 tomcat-server 服务器上,安装tomcat

java环境安装
安装jdk 环境

[root@tomcat-server ~]#  yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel 

查看安装的版本

[root@tomcat-server ~]# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

tomcat 部署
下载tomcat

[root@tomcat-server ~]# cd /usr/src/
[root@tomcat-server src]# yum install -y wget vim
[root@tomcat-server src]#  wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz

解压部署tomcat

[root@tomcat-server src]# tar xf apache-tomcat-9.0.8.tar.gz  -C /usr/local/
[root@tomcat-server src]# cd /usr/local/
[root@tomcat-server local]# ln -s apache-tomcat-9.0.8/ tomcat

写一个’chens’的java 页面

[root@tomcat-server local]# cd /usr/local/tomcat/webapps/ROOT/
[root@tomcat-server ROOT]# mv index.jsp /opt/      //默认tomcat 访问的就是ROOT目录下的index.jsp
[root@tomcat-server ROOT]# vim index.jsp<html>
<head><title> test  page</title>
</head>
<body><%out.println("chens");%>
</body> 
</html>

启动tomcat

[root@tomcat-server ROOT]# /usr/local/tomcat/bin/catalina.sh start
[root@tomcat-server ROOT]# ss -anlt
State      Recv-Q Send-Q              Local Address:Port                             Peer Address:Port              
LISTEN     0      128                             *:22                                          *:*                  
LISTEN     0      100                     127.0.0.1:25                                          *:*                  
LISTEN     0      100                            :::8080                                       :::*                  
LISTEN     0      128                            :::22                                         :::*                  
LISTEN     0      100                           ::1:25                                         :::*                  
LISTEN     0      1                ::ffff:127.0.0.1:8005                                       :::*                  
LISTEN     0      100                            :::8009    

**在tomcat-server服务器上配置两个tomcat服务 **
配置第二个tomcat 服务

[root@tomcat-server ~]# cd /usr/local/
[root@tomcat-server local]# mkdir chens
[root@tomcat-server local]# cd /usr/src/
[root@tomcat-server src]# tar xf apache-tomcat-9.0.8.tar.gz -C /usr/local/chens/
[root@tomcat-server src]# cd /usr/local/
[root@tomcat-server local]# ln -s chens/apache-tomcat-9.0.8/   tomcat2

由于服务相同,会产生端口被占用的情况,所以需要修改tomcat2 的端口

[root@tomcat-server ~]# vim  /usr/local/tomcat2/conf/server.xml
<Server port="8015" shutdown="SHUTDOWN">   //这个地方改为8015端口<Listener className="org.apache.catalina.startup.VersionLoggerListener" /><Connector port="8050" protocol="HTTP/1.1"  //这个地方改为8050端口connectionTimeout="20000"redirectPort="8443" /><Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />    //这个地方改为8019端口

重启tomcat 服务

[root@tomcat-server ROOT]# /usr/local/tomcat/bin/catalina.sh stop
[root@tomcat-server ROOT]# /usr/local/tomcat/bin/catalina.sh start

在nginx-server服务器上对nginx 进行配置
在 nginx 上配置反向代理 和 负载均衡实现动静分离

[root@nginx-server ~]# vim /usr/local/nginx/conf/nginx.conf#gzip  on;upstream web {                    实现负载server 192.168.169.20:8080;server 192.168.169.20:8050;}server {                        listen       80;server_name  localhost;access_log  logs/host.access.log  main;location ~* \.(jsp|do)$ {          //以 .jsp 结尾的url 交给tomcat处理,实现动静分离proxy_pass http://web;}location  \ {                静态的文件交给nginx本身去处理   root   html;index index.jsp  index.html index.htm;}

重新加载nginx配置

[root@nginx-server ~]# nginx -s reload

在浏览器上测试,出现以下效果则成功

输入nginx 服务器的IP地址
这里写图片描述

再次访问或者刷新
这里写图片描述


http://chatgpt.dhexx.cn/article/epE1VYP9.shtml

相关文章

社区出品|LGTM :数据圈内的周度「热点精选」

&#x1f4e2;「LGTM」的意思是指&#xff1a;在我看来不错 (Looks Good to Me)&#xff0c;这是代码审阅者在批准 CL 时说的常用语。ShardingSphere 社区开辟一个全新的内容专栏——「LGTM 专栏」致力为您带来业界最佳新闻&#xff0c;让您在 5 分钟内了解科技&#xff01;另外…

怎么开启远程重启服务器,怎么正确重启服务器

对于从事互联网行业的工作人员来说&#xff0c;远程桌面连接不上是一种很常见的情况&#xff0c;这个时候重启服务器是一种最直接最有效的解决办法&#xff0c;但是重启服务器也是分好几种方法的&#xff0c;下面就随着小编来了解一吧。 服务器连接不上的原因有以下几种&#x…

虚拟机重启服务器命令,虚拟机中重启命令

虚拟机中重启命令 内容精选 换一换 本章节介绍通过执行virsh edit vmx命令编辑虚拟机配置文件的操作方法,其中vmx是虚拟机名称。虚拟机的CPU绑定,是指将VM的vcpu绑定到同一个NUMA节点的物理CPU上。以将虚拟机的4个vcpu分别绑定到0/1/2/3物理核为例,介绍虚拟机CPU绑定的配置方…

xshell开启文件服务器的命令,xshell重启服务器命令

xshell重启服务器命令 内容精选 换一换 以NTP服务器、DNS服务器的操作系统均为SUSE为例:登录Linux弹性云服务器。执行以下命令,切换至root用户。sudo su -sudo su -执行以下命令,编辑ntp.conf文件。vim /etc/ntp.confvim /etc/ntp.conf添加以下语句,配置NTP服务器。server …

服务器系统重启命令,服务器重启命令

服务器重启命令 内容精选 换一换 openEuler,EulerOS,CentOS 8.0及以上操作系统默认开启SElinux强制模式,会导致工具安装失败。若想关闭SElinux强制模式,执行以下操作。临时关闭执行以下命令查询SELinux状态。sestatusCurrent mode显示enforcing表示SELinux已开启强制模式。…

MyBatis 拦截器执行顺序

1.原始 jdbc 工作流程 原始 jdbc 工作流程 以查询为例 1.1 加载驱动 Class.forName(Driver.class.getName()) 1.2 建立数据库连接 Connection root DriverManager.getConnection(“xx”, “xx”, “xx”) 1.3 预编译sql语句 PreparedStatement preparedStatement root.prep…

Mybatis拦截器打印sql

在项目中,通常会配置log4j2等来输出mybatis的sql,为了防止sql注入问题,我们通常会使用#{}的方式来注入sql的参数,这会导致我们拿到的sql日志是没替换参数的,参数都是通过问号?占位符的方式。当我们需要拿下sql去数据库客户端执行的时候,就会有一个困扰:需要把一个个问号…

mybatis拦截器实现权限管理

框架设计 基于Spring SecurityJWT技术实现登录认证和访问授权&#xff0c;基于Mybatis 拦截器实现数据权限的控制。由于已有前文介绍Spring Security如有兴趣可以查看&#xff0c;在此将重点于数据权限的实现及菜单等表结构的设计。 Mybatis 拦截器 介绍Mybatis拦截器之前先来了…

Mybatis拦截器失效

现象&#xff1a; 自定义插件注册成功&#xff0c;但是始终不进入拦截器方法&#xff1b; 我的拦截器&#xff1a; 排查 Mybatis拦截器是采用的责任链模式&#xff0c;一般拦截器中intercept方法中最后执行 invocation.proceed() 方法&#xff0c;将拦截器责任链向后传递&…

MyBatis拦截器实现原理

Mybatis拦截器并不是每个对象里面的方法都可以被拦截的。Mybatis拦截器只能拦截Executor、StatementHandler、ParameterHandler、ResultSetHandler四个类里面的方法&#xff0c;这四个对象在创建的时候才会创建代理。 用途&#xff1a;实际工作中&#xff0c;可以使用Mybatis拦…

自定义MyBatis拦截器

文章目录 自定义MyBatis拦截器作用MyBatis中的四大核心对象在mybatis中可被拦截的类型有四种(按照拦截顺序)拦截器需要实现Mybatis提供的Interceptor接口利用反射获取运行中的实体字段的名字利用反射动态的为sql语句传递新参数使用mybatis自定义的拦截器为插入&#xff0c;更新…

Mybatis拦截器的使用及其源码详解

Mybatis拦截器的使用及其源码详解 Mybatis相关全览一、简介执行与添加顺序拦截器生效入口 二、使用例子 三、原理加载入口生成代理遍历拦截器匹配&生成代理 四、实践例子 本文用的是3.5.10版本 源码地址&#xff1a;https://github.com/mybatis/mybatis-3/releases 文档地址…

Mybatis拦截器Interceptor

前言 最近项目使用Mybatis拦截器对数据进行加解密&#xff0c;以下记录如何将拦截器集成到项目中以及在使用过程中踩过的一些小坑&#xff0c;与君共勉 1.Myabtis拦截器是什么&#xff1f; MyBatis允许使用者在映射语句执行过程中的某一些指定的节点进行拦截调用&#xff0c…

Springboot 自定义mybatis 拦截器,实现我们要的扩展

前言 相信大家对拦截器并不陌生&#xff0c;对mybatis也不陌生。 有用过pagehelper的&#xff0c;那么对mybatis拦截器也不陌生了&#xff0c;按照使用的规则触发sql拦截&#xff0c;帮我们自动添加分页参数 。 那么今天&#xff0c;我们的实践 自定义mybatis拦截器也是如此&a…

mybatis 拦截器

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

Mybatis——拦截器Interceptor

本篇介绍Mybatis拦截器/插件相关知识&#xff0c;包括相关的类及作用、拦截器有哪几种、拦截器可以在Mybatis的执行过程中的哪些节点起作用、拦截器如何使用、相关的API&#xff0c;最后附上代码示例。 1. Mybatis拦截器是什么&#xff1f;一般用途&#xff1f; MyBatis允许使…

vue后台管理框架(iview + vue)

iview官网&#xff1a;https://www.iviewui.com/docs/introduce vueiview后台管理文档&#xff1a;https://lison16.github.io/iview-admin-doc/#/ vueiview后台管理线上示例&#xff1a;https://admin.iviewui.com/login vueiview后台管理github&#xff1a;https://github.co…

基于ThinkPHP6+Layui的后台管理框架

项目介绍 一款 PHP 语言基于 ThinkPhp6.x、Layui、MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架&#xff0c;可用于快速搭建前后端分离后台管理系统&#xff0c;本着简化开发、提升开发效率的初衷&#xff0c;框架自研了一套个性化的组件&am…

Quickadmin:基于ThinkPhp6+Vue+ElementUI后台管理框架

Quickadmin&#xff1a;基于ThinkPhp6VueElementUI后台管理框架 简介 QuickAdmin 是一款基于ThinkPHP 6.x&#xff0c;ElementUI&&Vue 2.x前后端分离后台管理框架&#xff0c;通过框架自带的在线代码生成器&#xff0c;可以轻松的实现后台管理的curd&#xff08;增删…

后台管理怎样用html实现,后台管理实现

京淘后台管理实现 1.1 商品列表展现 1.1.1 商品POJO对象 1.1.2 表格数据页面结构 1.1.3 请求URL地址 说明&#xff1a;如果采用UI框架并且添加了分页插件&#xff0c;则会自动的形成如下的URL请求地址 1.1.4 编辑ItemController 1.1.5 编辑ItemService 1.1.6 编辑ItemMapper 手…