源码部署lamt架构
源码部署lamt架构
lamt由apache,mysql,tomcat三者组成
文章目录
- 源码部署lamt架构
- 1.准备工作
- 1.1.配置yum源,关闭防火墙和selinux
- 1.2.拉取相应源码包
- 2.安装apache
- 3.安装mariadb
- 4.安装tomcat
1.准备工作
1.1.配置yum源,关闭防火墙和selinux
[root@tomcat ~]# rm -rf /etc/yum.repos.d/*
[root@tomcat ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 2495 100 2495 0 0 2231 0 0:00:01 0:00:01 --:--:-- 2231
[root@tomcat ~]# cat > /etc/yum.repos.d/server.repo << eof
> [Everything]
> name=everything
> baseurl=https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/
> enabled=1
> gpgcheck=0
>
> [good]
> name=good
> baseurl=http://rpms.remirepo.net/enterprise/8/remi/x86_64/
> enabled=1
> gpgcheck=0
> eof
[root@tomcat ~]# yum clean all
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
12 files removed
[root@tomcat ~]# yum makecache//关闭防火墙和selinux
[root@note1 ~]# systemctl disable --now firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@note1 ~]# setenforce 0
1.2.拉取相应源码包
[root@tomcat ~]# yum -y install wget vim
省略 . . .
[root@tomcat ~]# wget https://downloads.apache.org/apr/apr-1.7.4.tar.gz
[root@tomcat ~]# wget https://downloads.apache.org/apr/apr-util-1.6.3.tar.gz
[root@tomcat ~]# wget https://downloads.apache.org/httpd/httpd-2.4.57.tar.gz
[root@tomcat ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.80.tar.gz apr-1.7.4.tar.gz apr-util-1.6.3.tar.gz httpd-2.4.57.tar.gz
2.安装apache
//安装依赖包
[root@tomcat ~]# yum -y install gcc gcc-c++ make pcre-devel openssl openssl-devel libtool expat-devel bzip2
省略 . . . //安装开发工具包
[root@tomcat ~]# yum groups mark install 'Development Tools'//创建apache服务的用户和组
[root@tomcat ~]# groupadd -r apache
[root@tomcat ~]# useradd -r -M -s /sbin/nologin -g apache apache//解压源码包
[root@tomcat ~]# tar xf apr-1.7.4.tar.gz -C /usr/local/
[root@tomcat ~]# tar xf apr-util-1.6.3.tar.gz -C /usr/local/
[root@tomcat ~]# tar xf httpd-2.4.57.tar.gz -C /usr/local/
[root@tomcat ~]# cd /usr/local/ && ls
apr-1.7.4 apr-util-1.6.3 bin etc games httpd-2.4.57 include lib lib64 libexec sbin share src//进入apr的源码包目录,在configure定制组件中修改相关信息
[root@tomcat local]# cd apr-1.7.4/
[root@tomcat apr-1.7.4]# ls
apr-config.in atomic config.layout file_io LICENSE network_io README.cmake time
apr.dep build configure helpers locks NOTICE shmem tools
apr.dsp build.conf configure.in include Makefile.in NWGNUmakefile strings user
apr.dsw buildconf docs libapr.dep Makefile.win passwd support
apr.mak build-outputs.mk dso libapr.dsp memory poll tables
apr.pc.in CHANGES emacs-mode libapr.mak misc random test
apr.spec CMakeLists.txt encoding libapr.rc mmap README threadproc
[root@tomcat apr-1.7.4]# sed -i '/$RM "$cfgfile"/ # $RM "$cfgfile"/g' configure
sed: -e expression #1, char 18: comments don't accept any addresses
[root@tomcat apr-1.7.4]# sed -i 's/$RM "$cfgfile"/ # $RM "$cfgfile"/g' configure
[root@tomcat apr-1.7.4]# grep -C2 '# $RM "$cfgfile"' configurecfgfile=${ofile}Ttrap "$RM \"$cfgfile\"; exit 1" 1 2 15# $RM "$cfgfile"cat <<_LT_EOF >> "$cfgfile"
[root@tomcat apr-1.7.4]#//编译安装apr-1.7.4、apr-util-1.6.3、httpd-2.4.57
[root@tomcat apr-1.7.4]# ./configure --prefix=/usr/local/apr
[root@tomcat apr-1.7.4]# make && make install[root@tomcat apr-1.7.4]# cd ../apr-util-1.6.3/
[root@tomcat apr-util-1.6.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@tomcat apr-util-1.6.3]# make && make install[root@tomcat apr-util-1.6.3]# cd ../httpd-2.4.57/
[root@tomcat httpd-2.4.57]# ./configure --prefix=/usr/local/apache \--enable-so \--enable-ssl \--enable-cgi \--enable-rewrite \--with-zlib \--with-pcre \--with-apr=/usr/local/apr \--with-apr-util=/usr/local/apr-util/ \--enable-modules=most \--enable-mpms-shared=all \--with-mpm=prefork
[root@tomcat httpd-2.4.57]# make && make install//安装后配置
[root@tomcat httpd-2.4.57]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/apache.sh
[root@tomcat httpd-2.4.57]# source /etc/profile.d/apache.sh
[root@tomcat httpd-2.4.57]# ln -s /usr/local/apache/include/ /usr/include/httpd
[root@tomcat httpd-2.4.57]# echo 'MANPATH /usr/local/apache/man' >> /etc/man.config//取消ServerName前面的注释
[root@tomcat httpd-2.4.57]# sed -i '/#ServerName/s/#//g' /usr/local/apache/conf/httpd.conf//启动httpd服务
[root@tomcat httpd-2.4.57]# apachectl start
[root@tomcat httpd-2.4.57]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 *:80 *:*
访问apache页面

3.安装mariadb
使用yum命令安装mariadb
[root@tomcat ~]# yum -y install mariadb mariadb-server
[root@tomcat ~]# systemctl enable --now mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
[root@note1 ~]# mysql -e "set password = password('12345678');"//查看端口
[root@tomcat ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 80 *:3306 *:*
LISTEN 0 128 *:80 *:*
4.安装tomcat
//安装依赖包
[root@tomcat ~]# dnf -y install java-17-openjdk java-17-openjdk-devel//查看安装的版本,能够查看到版本则说明安装成功
[root@tomcat ~]# java --version
openjdk 17.0.1 2021-10-19 LTS
OpenJDK Runtime Environment 21.9 (build 17.0.1+12-LTS)
OpenJDK 64-Bit Server VM 21.9 (build 17.0.1+12-LTS, mixed mode, sharing)//解压源码包至指定目录
[root@tomcat ~]# tar xf apache-tomcat-9.0.80.tar.gz -C /usr/local/
[root@tomcat ~]# cd /usr/local/ && ls
apache apr apr-util bin games include lib64 sbin src
apache-tomcat-9.0.80 apr-1.7.4 apr-util-1.6.3 etc httpd-2.4.57 lib libexec share//设置tomcat软链接,方便后续如果更换tomcat版本后也能直接使用
[root@tomcat local]# ln -s apache-tomcat-9.0.80 tomcat
[root@tomcat local]# ll
total 12
drwxr-xr-x. 14 root root 164 Oct 10 23:52 apache
drwxr-xr-x. 9 root root 220 Oct 11 00:07 apache-tomcat-9.0.80
drwxr-xr-x. 6 root root 58 Oct 10 23:45 apr
drwxr-xr-x. 29 501 games 4096 Oct 10 23:45 apr-1.7.4
drwxr-xr-x. 5 root root 43 Oct 10 23:46 apr-util
drwxr-xr-x. 21 501 games 4096 Oct 10 23:46 apr-util-1.6.3
drwxr-xr-x. 2 root root 6 Aug 12 2018 bin
drwxr-xr-x. 2 root root 6 Aug 12 2018 etc
drwxr-xr-x. 2 root root 6 Aug 12 2018 games
drwxr-xr-x. 14 501 games 4096 Oct 10 23:51 httpd-2.4.57
drwxr-xr-x. 2 root root 6 Aug 12 2018 include
drwxr-xr-x. 2 root root 6 Aug 12 2018 lib
drwxr-xr-x. 2 root root 6 Aug 12 2018 lib64
drwxr-xr-x. 2 root root 6 Aug 12 2018 libexec
drwxr-xr-x. 2 root root 6 Aug 12 2018 sbin
drwxr-xr-x. 5 root root 49 Jul 20 11:24 share
drwxr-xr-x. 2 root root 6 Aug 12 2018 src
lrwxrwxrwx. 1 root root 20 Oct 11 00:08 tomcat -> apache-tomcat-9.0.80//将tomcat的lib位置存放在/etc/ld.so.conf/d/下面,命名一个自身名字的文件,方便查找
[root@tomcat local]# vim /etc/ld.so.conf.d/tomcat.conf
[root@tomcat local]# cat /etc/ld.so.conf.d/tomcat.conf
/usr/local/tomcat/lib//启动服务,使用绝对路径执行/usr/local/tomcat/bin/下面的脚本,tomcat不能写进环境变量,放置后续更改tomcat版本后环境变量仍是之前的tomcat版本
[root@tomcat local]# cd tomcat/bin/
[root@tomcat bin]# ./catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@tomcat bin]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 80 *:3306 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 *:80 *:*
访问tomcat的web页面

启用httpd的代理模块
[root@tomcat ~]# sed -i '/proxy_module/s/#//g' /usr/local/apache/conf/httpd.conf
[root@tomcat ~]# sed -i '/proxy_fcgi_module/s/#//g' /usr/local/apache/conf/httpd.conf
[root@tomcat ~]# sed -i '/proxy_connect_module/s/#//g' /usr/local/apache/conf/httpd.conf
[root@tomcat ~]# sed -i '/proxy_http_module/s/#//g' /usr/local/apache/conf/httpd.conf
配置虚拟主机
[root@tomcat ~]# vim /usr/local/apache/conf/httpd.conf
[root@tomcat ~]# tail -13 /usr/local/apache/conf/httpd.conf
SSLRandomSeed connect builtin
</IfModule><VirtualHost *:80>DocumentRoot "/usr/local/apache/htdocs"ProxyPass / http://192.168.195.133:8080/ProxyPassReverse / http://192.168.195.133:8080/<Directory "/usr/local/apache/htdocs">Options noneAllowOverride noneRequire all granted</Directory>
</VirtualHost>
重启apache
[root@tomcat ~]# apachectl restart
[root@tomcat ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 80 *:3306 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 *:80 *:*
通过80端口进行访问

相关文章:
源码部署lamt架构
源码部署lamt架构 lamt由apache,mysql,tomcat三者组成 文章目录 源码部署lamt架构1.准备工作1.1.配置yum源,关闭防火墙和selinux1.2.拉取相应源码包 2.安装apache3.安装mariadb4.安装tomcat 1.准备工作 1.1.配置yum源,关闭防火墙…...
【Java 进阶篇】JavaScript Math对象详解
在JavaScript编程中,Math对象是一个非常有用的工具,用于执行各种数学运算。它提供了许多数学函数和常数,可以用于处理数字、执行几何运算、生成随机数等。在本篇博客中,我们将深入探讨JavaScript中Math对象的各种功能和用法。 什…...
geecg-uniapp 路由修改 页面创建 (2)
一,增加页面 添加路由 (1)我们以home的常用服务 当作示例 我们修改 usList 数据 (2)查找对应路径 work.js 目前荒石对应的路径跳转 helloword 我们修改成 huang (3)修改跳转路径 修…...
微信开发者工具下载
一、微信开发者工具下载官网 微信开发者工具下载地址与更新日志 | 微信开放文档 (qq.com) 二、微信开发者工具界面 下载安装好后,软件图标如下图所示。 运行软件如下图所示,这时候就需要使用你的管理员账号扫码登录。 登陆后的界面,如下图…...
ctfshow萌新计划web9-14(正则匹配绕过)
目录 web9 web10 web11 web12 web13 web14 web9 审一下代码,需要匹配到system|exec|highlight才会执行eval函数 先看一下当前目录下有什么 payload:?csystem(ls); index.php是首页,我们看看config.php payload:?csystem…...
【数据结构】单链表按位序插入元素e【前插】(带头结点的和不带头结点的)这篇很重要,文字说明比起其他篇是正确的
声明单链表的结构体成员 struct LNode {int data;struct LNode *next; };typedef struct LNode LNode;// 或者: 两者是等价的 typedef struct LNode {int data;struct LNode *next; }LNode;按位序插入元素e:就是在第i个位置插入新结点,数据域为e 以下带…...
Maven Surefire Exclude 无效问题排查日志
昨天有个需求,要在单元测试的时候单线程执行,并且只执行单元测试类特殊结尾的,那么根据以往经验,直接在maven里面配置exclude并且指定include即可。如下尝试 <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin&…...
ArcGIS笔记4_水动力模型验证不理想时如何修改局部水深地形
本文目录 前言Step 1 模型验证不理想的情况Step 2 修改确值点并重新插值 前言 本章主要服务于MIKE水动力模型的调整修改工作。水动力模型跑完之后,常常会出现验证结果不理想的情况,比如潮位验证中,实测站点数据与模拟数据相差很大࿰…...
介绍一下mysql有哪些索引类型
以下是MySQL的8种不同索引类型的比较,以帮助你了解它们的特点和适用场景: 索引类型用途和特点适用场景B-Tree 索引用于范围查询、等值查找和排序操作大多数查询 ,不适合全文搜索和空间数据。唯一索引保证索引列的值唯一,不允许重…...
#力扣:125. 验证回文串@FDDLC
125. 验证回文串 一、Java class Solution {public boolean isPalindrome(String s) {for (int l 0, r s.length() - 1; l < r; l, r--) {while (l < r && !Character.isLetterOrDigit(s.charAt(l))) l;while (l < r && !Character.isLetterOrDig…...
分享一下便利店怎么做微信小程序
便利店微信小程序开发,让生意更便捷! 在这个数字化时代,微信小程序已经成为一种新的生活方式。它不仅改变了人们的消费习惯,还为各行各业提供了无限商机。对于便利店来说,微信小程序是一个绝佳的营销工具,…...
Gitlab CI/CD 入门教程
前言 开发人员常常提到的 CI/CD 是什么? 是用于集成测试的工具,每次提交代码后自动检测、构建和进行单元测试的过程。这一整条流水线式的测试流程我们称之为 pipeline。 入门教程 如何使用 CI/CD? 首先需要确保有可用的 runner(如何确保…...
【mfc/VS2022】计图实验:绘图工具设计知识笔记
绘制曲线(贝塞尔曲线): 转自:CDC 类 | Microsoft Learn 绘制一条或多条贝塞尔曲线。 BOOL PolyBezier(const POINT* lpPoints,int nCount);参数 lpPoints 指向包含曲线端点和控制点的 POINT 数据结构数组。 nCount 指定 lpPo…...
C# PortraitModeFilter (人物图片)背景模糊
效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Windows.Forms; us…...
centos7下安装elasticsearch7.8.1并配置远程连接
1、下载安装包 sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1-linux-x86_64.tar.gz 2、解压 sudo tar -zxvf elasticsearch-7.8.1-linux-x86_64.tar.gz 3、添加用户并设置密码 sudo useradd es sudo passwd es # 设置密码 Lida15…...
MongoDB的作用和安装方法
MongoDB是一种非关系型数据库,其作用是存储和管理非结构化数据,例如文档、图像和视频等多媒体数据。它有以下几个特点: 数据存储的格式是类似JSON的文档格式,易于理解、存储和查询。可扩展性强,可以在多个服务器上分布…...
spring boot 使用SSE向前端推送数据
SSE(Server-Sent Events)是一种基于HTTP的实时通信协议,它允许服务器向客户端发送持久性的数据流。与WebSocket不同的是,SSE是单向通信,只能由服务器向客户端发送数据。Spring Boot通过Spring WebFlux模块提供了对SSE的…...
C++智能指针(三)——unique_ptr初探
与共享指针shared_ptr用于共享对象的目的不同,unique_ptr是用于独享对象。 文章目录 1. unqiue_ptr的目的2. 使用 unique_ptr2.1 初始化 unique_ptr2.2 访问数据2.3 作为类的成员2.4 处理数组 3. 转移所有权3.1 简单语法3.2 函数间转移所有权3.2.1 转移至函数体内3.…...
Composition Api 与 Options Api 有什么区别?
Vue 3.0采用的Composition API与Vue 2.x使用的Options API在编写Vue组件时有一些区别。 区别: 组织代码的方式不同: Options API:按照选项进行组织,将数据、计算属性、方法等声明在一个对象中。Composition API:按照逻…...
紫光同创FPGA实现UDP协议栈网络视频传输,基于YT8511和RTL8211,提供4套PDS工程源码和技术支持
目录 1、前言免责声明 2、相关方案推荐我这里已有的以太网方案紫光同创FPGA精简版UDP方案紫光同创FPGA带ping功能UDP方案 3、设计思路框架OV7725摄像头配置及采集OV5640摄像头配置及采集UDP发送控制视频数据组包数据缓冲FIFOUDP协议栈详解RGMII转GMII动态ARPUDP协议IP地址、端口…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
