八LAMP搭建
# LAMP
## 一、知识回顾
### FTP samba nfs 特点
- 借用Linux用户作为映射用户,进行权限管理
- 软件本身还有管理控制权限
#### 客户端连接到服务器后进行读写执行等操作
,必须同时具有:
- 软件许可的权限
vsftpd:
anon upload enable=YES
- 文件系统许可的权限
chmod 755 filename
chown user:qroup filename
- ftp和samba区别: ftp仅支持客户端操作,samba支持服务器端操作(内网用得多)场景:多人共享同一份资源时,使用Samba也可降低对每个用户存储空间的要求。
### linux搭建samba服务器步骤
``` shell
yum -y install samba
mkdir -p /data/mysql 要共享的目录
cd /etc/samba
cp -a smb.conf.example smb.conf # 把模板文件复制给conf
vim smb.conf
useradd laow 创建samba用户
pdbedit -a laow 给samba用户设置密码
systemctl enable --now smb 启动服务
chown -R laow.laow /data/mysql/ 给samba用户添加服务目录的权限
```
smb.conf要写入的规则
![[Pasted image 20240914224341.png]]
如何让Linux客户端永久挂载samba服务器
![[Pasted image 20240914224912.png]]
## 二、LAMP搭建
### L+A+M+P搭建
L: Linux
A: Apache(httpd)
M:MySQL(Mariadb)
P:PHP、python、perl
### 如何正确地部署和选择合适的LAMP环境?
- 在部署过程中,建议结合源代码编译核心软件(如使用MySQL源码而非RPM包)与使用RPM包安装非核心依赖软件的方式来简化流程。
### 部署LAMP环境的方法:
- 最简单RPM包
``` shell
yum -y isntall httpd mariadb-server php
cd /var/www/html/
echo "hello" > index.html
systemctl start httpd
```
- 安装一键安装脚本 [下载 - LNMP一键安装包](https://lnmp.org/download.html)
``` shell
tar -xvf lnmp1.9-full.tar.gz
cd lnmp1.9-full/
./install.sh lamp
#安装完部署俩个小项目
#1
cd /home/wwwroot/default/
mkdir ./bak
mv index.html lnmp.gif ocp.php phpinfo.php p.php /bak #保留phpmyadmin
unzip /root/typecho.zip -d /home/wwwroot/default/
chown -R www.www * #得让运行这个进程的用户对这些文件有权限
cd themes/ #替换模组的文件
#添加插件
unzip /root/Snow.zip -d /home/wwwroot/default/usr/plugins/
cd /home/wwwroot/default/usr/plugins
chown -R www.www *
#2
unzip /root/Discuz_X3.3_SC_UTF8.zip
mkdir -pv /home/wwwroot/default/bbs
mv upload/ /home/wwwroot/default/bbs
cd /home/wwwroot/default/
chown -R www.www bbs/ * #得让运行这个进程的用户对这些文件有权限
```
- 细节 得让运行这个进程的用户对这些文件有权限 并提前创建好数据库用户 并查看3306 80 22 端口是否开启
![[Pasted image 20240920195248.png]]
![[Pasted image 20240920194903.png]]
![[Pasted image 20240920194705.png]]
![[Pasted image 20240920195024.png]]
## 三 手动源码编译安装(最难)
- 源码软件安装:
- ./configure #将以下检查和指定的参数都写入到MakeFile文件中,让make命令作为参考进行编译
#安装前环境检查脚本
#1. 编译工具是否安装
#2. 软件之间的依赖(解决方案:1. 跟随编译(如Apache中的APR和APR-Util)、2. 提前编译(编译nginx要提前编译gcc zlib-devel pcre -devel )、3. rpm解决依赖)
#3. 指定安装路径 --prefix=PATH
#4. --with-* --without-* #是否关联其他软件作为依赖
#5. --enable、--disable #是否启用本身自带的某功能
#6. ./configure --help | grep -E "(enableldisable)" 查看帮助命令 --enable-rewrite=shared 用于处理动态资源
- make #将源码编译成二进制
#MakeFile作为编译参考文件
- make install
#将make编译之后的二进制文件,按照prefix选项指定的路径进行复制粘贴并修改属性(归属和权限)
- cpio 进行文件或目录的备份,类似于打包操作
优势:可以按照文件的绝对路径进行打包,解包时按照绝对路径还原 (CPIO是备份工具他把分散在各个地方的这些文件的绝对路径汇总在一起,做成了一个备份文件,然后再在这个备份文件外边套一个RPM的包的后缀名。发给别人使用)
- 共有库和私有库:编译指定了自己的安装路径之后,编译后生成的函数文件的存放位置叫私有库。编译安装时没有指定路径,安装之后放到usr/lib ,usr/lib64等目录下,称为叫公共库。
- 网站迁移:设置域名重写规则。即当用户通过旧域名访问网站时,服务器会自动重定向至新域名
### 编译安装
- **libxml2** :解析器是处理XML语言所必需的工具
- **libmcrypt** **mhash** **mcrypt** 支持不同的加密算法,如哈希算法、SHA算法和MD5算法,并需要它们相互补充
- **zlib** :找到CFLAGS=-O3 -DUSE_MMAP,在后面加入 **-fPIC** FPIC选项是为了解决特定版本兼容性问题
- **libpng** **jpeg6** 需要特定的解码软件支持,并在服务器端正确配置安装路径
- **freetype** 用于字体渲染和字体转换,支持多种字体如宋体、黑体、微软雅黑
- 64位系统与32位软件兼容性问题?通过把32位按照软链接方式64位软件链接的兼容问题
- 安装Apache时,需先解决APR和PCRE问题 apache的特定的文件——mime.types文件,该文件位于apache安装目录下的conf/子目录内,用来帮助Apache通过后缀名识别文件的具体类型。
- MySQL初始化脚本(mysql.server)。该脚本包含了MySQL启动、停止和重载等动作的基本逻辑启动:/usr/local/mysql/bin/mysql -u root -p 创建中文数据库 create database test2 character set utf8;
- 具体步骤 - https://blog.csdn.net/gsdgdg00/article/details/142480086?fromshare=blogdetail&sharetype=blogdetail&sharerId=142480086&sharerefer=PC&sharesource=gsdgdg00&sharefrom=from_link
![[Pasted image 20240923194643.png]]
### 注意和报错
- 问题在编译时缺乏树状依赖(如何寻找并安装缺失的依赖文件如expat.h)去这https://rpm.pbone.net/ 找对应版本的依赖包
![[Pasted image 20240923193008.png]]
![[Pasted image 20240923193735.png]]
- make 编译中止时要在编译前先make clean 在make make -j是不支持老版本的软件的
- **apache报错提示:**若启动时提示/usr/local/apache2/modules/mod_deflate.so无权限,可关闭SELinux解决,类似此类.so文件不能载入或没有权限的问题,都是SELinux问题,MySQL和Apache都可能有类似问题。
- **apache警告提示:**发现启动服务提示:AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message **解决办法:**打开主配置文件httpd.conf 搜索ServerName (约在200行左右)改为ServerName localhost:80(并且去掉前面的#注释)
- 备份新方法
![[Pasted image 20240923194125.png]]
## 四、==LAMP原理讲解==
![[Pasted image 20240920195932.png]]
- 文件本身不会因为被访问而发生变化的资源叫静态资源,文件本身会因为被访问而发生变化的资源叫动态资源
- 如何确保项目安装后能顺利连接数据库?在项目安装过程中,需要将连接数据库的参数(如账号、密码、数据库IP等)保存在配置文件中,以便后续每次请求数据库时直接调用这些信息进行连接,确保项目能够正常运行。
- 登录流程是如何进行的?登录流程中,用户在网页表单填写账号和密码后提交,服务器通过调用PHP函数连接数据库,根据提交的账号信息查询数据库,并将用户提交的密码与数据库中的密码进行比对,若一致则身份验证成功,用户成功登录。
- apache接收到请求后如何处理?当apache接收到用户请求后,它会查看请求的URL地址栏内容,如果用户请求的是静态资源,apache可以从硬盘加载到内存并直接响应给客户端。但如果用户请求的是动态资源,apache则需要解析网页内容、连接数据库并处理数据变化。
## 五、==命令和问题扩展==
- 使用dd命令创建swap空间
``` shell
dd if=/dev/zero of=/dev/swapfile bs=1M count=2048 #扩容swap
mkswap /dev/swapfile #格式化swap内存
swapon /dev/swapfile #开启swap内存
vim /etc/fstab #永久挂载swap
```
- 给文件打补丁
``` shell
diff #生成补丁文件
patch #给旧文件打补丁
示例:
vim a.txt #旧文件
vim b.txt #新文件
diff -u a.txt b.txt > p.patch #生成补丁文件p.patch
patch a.txt < p.patch #给a文件打补丁
cat a.txt #查看内容是否发生变化
```
- 其他开发平台介绍
LTMJ = Linux + Tomcat + MySQL + JDK
httpd 、 nginx 、tomcat
LNAMP = Linux + Nginx + Apache + MySQL + PHP
- 网络实验小技巧 :在用脚本写搭建vsftp虚拟用户服务时,预先准备一个已修改好的配置文件,然后将这个配置文件直接覆盖到新安装的软件配置文件上,最后启动服务,用sed会出错
- 写脚本技巧:
- 模块化脚本:将不同功能的脚本分开,便于管理和测试。
- 了解脚本逻辑:主要功能通过内部调用实现,外部提供选择界面![[Pasted image 20240920192950.png]]
- web服务:nginx已被f5公司收购 ,阿帕奇有httpd,tomcat ,nginx适用于高并发场景,相比更侧重性能而非稳定性,Apache更侧重稳定性
- 举例 :选择使用哪种Web服务器时需考虑实际情况,比如高校网站平时访问量不大时,单一使用Apache可能已经足够。而对于经常举办秒杀等活动的电商平台,则可能需要Nginx来提升并发处理能力。
- 404:因为客户端请求资源失败,所以是客户端错误
相关文章:
八LAMP搭建
# LAMP ## 一、知识回顾 ### FTP samba nfs 特点 - 借用Linux用户作为映射用户,进行权限管理 - 软件本身还有管理控制权限 #### 客户端连接到服务器后进行读写执行等操作 ,必须同时具有: - 软件许可的权限 vsftpd: anon upload enableYES - 文件…...
Windows——解除Windows系统中文件名和目录路径的最大长度限制
第一步:打开本地组策略编辑器 按下Win R键打开运行窗口,输入 gpedit.msc 并回车,打开本地组策略编辑器。 第二步:开启 长路径设置 第三步:重启计算机...
黑名单与ip禁令是同一个东西吗
黑名单和IP禁令相关,但它们并不是完全相同的概念。以下是它们之间的区别: 黑名单 定义:黑名单通常是一个包含不允许或被禁止的用户、IP地址、域名或其他实体的列表。用途:用于阻止特定用户或实体访问某个系统或服务。黑名单可以…...
FuTalk设计周刊-Vol.075
国庆75周年,也是第75期周刊~ 祝大家国庆快乐~! #AI漫谈 热点捕手 1.万字深剖!13位AI巨擘联袂,1.6万字解码生成式AI产品「全攻略」 “生成式人工智能产品”主题论坛,邀请到了来自腾讯、商汤科…...
PE节表中是否存在misc.VirtualSize 比SizeofRawData还要大的情况
确实是存在的,这是win10自带记事本,可以看到 确实是大.所以在申请imagebuffer的时候,还是需要比较大小.但是在还原的时候.只考虑sizeofRawData即可>...
栈及笔试题
目录 栈的实现 1、数组栈 2、链式栈 栈的创建 栈的打印 内存泄漏 栈溢出 练习 有效的括号 栈的实现 栈后入先出 1、数组栈 (最佳实现,且访问数据的时候CPU告诉访存命中率比较高,因为地址连续存放,访问时CPU从cache里一…...
【工程测试技术】第3章 测试装置的基本特性,静态特性和动态特性,一阶二阶系统的特性,负载效应,抗干扰性
目录 3.1 概述 1测量装置的静态特性 2.标准和标准传递 3.测量装置的动态特性 4.测量装置的负载特性 5.测量装置的抗干扰性 1.线性度 2.灵敏度 3.回程误差 4.分辨力 5.零点漂移和灵敏度漂移 3.3.1 动态特性的数学描述 1.传递函数 2.频率响应函数 3.脉冲响应函数 …...
ireport 5.1 中文生辟字显示不出来,生成PDF报字体找不到
ireport生成pdf里文字不显示。本文以宋体中文字不显示为例。 问题:由浅入深一步一步分析 问题1、预览正常,但生成pdf中文不显示 报告模板编辑后,预览正常,但生成pdf中文不显示。以下是试验过程: 先编辑好一个报告单模…...
给Ubuntu虚拟机设置静态IP地址(固定IP)
查看 为Ubuntu虚拟机配置静态IP地址(固定IP)的方法经过亲自测试,已被证实有效。 这里你记得网关就可以了,等下要用 查看配置前的网络信息 ifconfig 查看网关 route -n 配置 配置网络文件 cd /etc/netplan/ ls 查看自己的文件的名…...
spring boot文件上传之x-file-storage
spring boot文件上传之x-file-storage 今天看到一个文件上传的开源组件x-file-storage,官方地址如下: https://x-file-storage.xuyanwu.cn/#/ 该组件官网是这样介绍的,如下: 一行代码将文件存储到本地、FTP、SFTP、WebDAV、阿…...
Object.values() 、 Object.keys()
拿到当前对象里面的value值 // 假设你有一个对象 const myObject {name: Kimi,age: 30,country: Moon };// 获取对象的所有值 const values Object.values(myObject);// 输出值数组 console.log(values); // ["Kimi", 30, "Moon"] 如果你需要在 Vue 组…...
脸爱云管理系统存在任意文件上传漏洞
漏洞描述 脸爱云一脸通智慧管理平台是一套功能强大、运行稳定、操作简单方便、用户界面美观的一脸通系统。该平台整合了人脸识别技术和智能化解决方案,可以实现识别和管理个体身份,为各种场景提供便捷的身份验证和管理功能。其存在任意文件上传漏洞&…...
elasticsearch_exporter启动报错 failed to fetch and decode node stats
最近把服务器迁移到了ubuntu系统,结果发现在centos还正常运行的elasticsearch_exporter,用systemd启动后一直报错 failed to fetch and decode node stats 在网上翻了大半年,竟然都无解!这种报错,很明显就是你的ES密码…...
Git 使用方法
简介 Git常用命令 Git 全局设置 获取Git 仓库 方法二用的比较多 将仓库链接复制 在 git base here ----> git clone 仓库链接 工作区、暂存区、版本库 Git 工作区中文件中的状态 本地仓库的操作 远程仓库操作 git pull 将代码推送到远程仓库 1. git add 文件名 ---放…...
生产环境升级mysql流程及配置主从服务
之前写到过mysql升级8.4的文章, 因此不再介绍mysql的安装过程 避免服务器安装多个mysql引起冲突的安装方法_安装两个mysql会冲突吗-CSDN博客 生产环境升级mysql8.4.x流程 安装mysql 参考之前文章: 避免服务器安装多个mysql引起冲突的安装方法_安装两个mysql会冲突吗-CSDN博客…...
论软件体系结构的演化
摘要 2022年3月,我加入了公司的新智慧公交平台项目研发团队,并担任系统架构师角色,负责系统整体架构的设计与评审。该项目采用了物联网三层架构模型,其中设备接入层和网络交互层基于公司的中台战略,我们有效复…...
【go入门】常量
目录 定义枚举iota思考题 定义 go语言常量的定义和其他语言类似,常量中的数据类型只能是布尔型,数字型(整型、浮点型、复数)和字符串型 常量的定义方式和变量一样,只不过变量定义使用 var 关键字,而常量定…...
2.1 HuggingFists系统架构(二)
部署架构 上图为HuggingFists的部署架构。从架构图可知,HuggingFists主要分为服务器(Server)、计算节点(Node)以及数据库(Storage)三部分。这三部分可以分别部署在不同的机器上,以满足系统的性能需求。为部署方便,HuggingFists社区版将这三部…...
工具类:JWT
工具类:JWT 依赖JwtUtil.java 依赖 <!-- 创建、解析 和 验证JSON Web Tokens (JWT)--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependenc…...
王道-计网
2 采用滑动窗口机制对两个相邻结点A(发送方)和B(接收方)的通信过程进行流量控制。假定帧的序号长度为3比特,发送窗口与接收窗口的大小均为7,当A发送了编号为0、1、2、3这4个帧后,而B接收了这4个帧,但仅应答了0、1两个帧,A继续发送4、5两个帧,且这两个帧已进入B的接收…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
