八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:因为客户端请求资源失败,所以是客户端错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/435612.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零工市场小程序如何提高找兼职的效率?

越来越多的人们会选择成为自由职业者&#xff0c;或者在空暇时兼职来获取酬劳&#xff0c;那么传统的找兼职方式&#xff0c;如&#xff1a;中介公司、招聘广告等。 如今大家的生活都已经进入了“快节奏”&#xff0c;零工市场小程序针对这样的问题而提出了解决方案&#xff0…

侧边菜单的展开和折叠

环境准备&#xff1a;Vue3Element-UI Plus <script setup> import {ref} from "vue";// 是否折叠菜单&#xff0c;默认折叠 const isCollapse ref(true)// 退出登录 function logout() {alert(退出) }// 个人中心 function profile() {alert(个人中心) } <…

ping基本使用详解

在网络中ping是一个十分强大的TCP/IP工具。它的作用主要为&#xff1a; 用来检测网络的连通情况和分析网络速度根据域名得到服务器 IP根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量。我们通常会用它来直接 ping ip 地址&#xff0c;来测试网络的连…

【2024.9.29练习】R 格式

题目描述 题目分析 带小数点的高精度乘法。小数点在计算时忽略&#xff0c;只需在最终打印字符串的时候在合适位置四舍五入即可。对于&#xff0c;可理解为对d乘2总共n次。因此使用“单精度高精度”类型的算法足矣。 我的代码 一开始代码有错误&#xff0c;我只想到了对小数点…

AI大模型之旅-最强开源文生图工具Stable Diffusion WebUI 教程

1.1克隆 Automatic1111 的 GitHub 仓库 在你想安装 Web UI 的文件夹路径下执行 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 这将会克隆整个仓库到本地。 这里会默认访问 https://huggingface.co/ 下载 因此需要魔法 1.2 进入仓库目录 cd stable-di…

无人机培训机构配套教学无人机技术详解

无人机培训机构配套的教学无人机技术&#xff0c;是一个涉及多学科交叉、技术密集型的领域。以下是对该技术的详细解析&#xff1a; 一、无人机技术概述 无人机技术是一个涵盖航空工程、电子工程、计算机科学、材料科学和人工智能等多个学科的综合性领域。其核心在于实现无人…

python并发编程实战

python并发编程有三种 多线程Thread多进程Process多协程Coroutine cpu密集型计算 cpu密集型也叫计算密集型&#xff0c;是指I/O在很短的时间就可以完成&#xff0c;cpu需要大量的计算处理&#xff0c;特点是cpu占用率相当高 例如&#xff1a;压缩解压缩、加密解密、正则表达…

Redis:持久化

1. Redis持久化机制 Redis 支持 RDB 和 AOF 两种持久化机制&#xff0c;持久化功能有效地避免因进程退出造成数据丢失问题&#xff0c; 当下次重启时利⽤之前持久化的文件即可实现数据恢复。 2.RDB RDB 持久化是把当前进程数据⽣成快照保存到硬盘的过程&#xff0c;触发 RDB…

从AR眼镜到智能巡检:XR技术的演变与未来潜力

XR&#xff0c;即扩展现实&#xff08;Extended Reality&#xff09;&#xff0c;是一个涵盖了增强现实&#xff08;AR&#xff09;、虚拟现实&#xff08;VR&#xff09;和混合现实&#xff08;MR&#xff09;的广泛概念。 从我们最初接触到的手机应用到Hololens&#xff0c;…

Linux 网络配置 (深入理解)

前言 前期我比较迷惑Ubuntu 的网络配置。 我接触比较多的 Linux 发行版都是 Ubuntu &#xff0c;我按照网上的一些教程配置网络发现&#xff0c;没有相关网络配置文件夹。然后我发现不是我的问题而是不同版本的配置方式和工具是不一样的。然后有些配置已经弃用了。 常见的网络…

fmql之Linux异步通知

正点原子第35章。 Linux下的异步通知_linux异步通知-CSDN博客 异步通知简介 驱动中的信号处理 应用程序对异步通知的处理 代码 async.c asyncAPP.c 运行

作家依靠AI一年内创作120部作品

近期&#xff0c;Tim Boucher因声称自己依托人工智能&#xff08;AI&#xff09;完成了逾120部作品而在社交网络上引起广泛关注。 Boucher的这种创作手法引发了众多讨论和争议。一些批评者对他依靠AI写作表示不满&#xff0c;认为这种做法缺乏诚实性&#xff0c;甚至涉嫌抄袭。…

利用git将项目上传到github

采用git而不是在pycharm中共享的原因&#xff1a;可能会出现上图报错 目录 1、创建github仓库2、在 git bash 中初始化Git仓库&#xff0c;添加文件&#xff0c;上传代码 1、创建github仓库 2、在 git bash 中初始化Git仓库&#xff0c;添加文件&#xff0c;上传代码

基于CNN+Transformer混合模型实现交通流量时序预测(PyTorch版)

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…

Ansible集群服务部署案例

案例描述 本案例共讲述了多个节点部署Elk集群日志分析系统&#xff0c;分别在三个节点使用ansible部署Kibana、Logstash以及Elasticsearch服务。 案例准备 1. 规划节点 IP 主机名 节点 192.168.100.25 ansible Ansible节点 192.168.100.35 node1 Elasticsearch/Kiba…

利用低代码快速搭建电商小程序之商品列表页

目标&#xff1a; 搭建商城的一个商品列表页面&#xff08;先做静态页&#xff09; 开发环境&#xff1a; 访问白码低代码平台&#xff1a;https://www.bnocode.com/ 白码的新自定义页功能&#xff08;使用vue框架&#xff09; 前期准备&#xff1a; 需要先准备商品数据表…

[网络]NAT、代理服务、内网穿透、内网打洞

目录 一、NAT 1.1 NAT 技术背景 1.2 NAT IP 转换过程 1.3 NAPT&#xff08;Network Address Port Translation&#xff09; 1.地址转换表 2. NAPT&#xff08;网络地址端口转换Network Address Port Translation&#xff09; 3. NAT技术的缺陷 二、代理服务器 2.1 正向…

济南站活动回顾|IvorySQL中的Oracle XML函数使用示例及技术实现原理

近日&#xff0c;由中国开源软件推进联盟PG分会 & 齐鲁软件园联合发起的“PostgreSQL技术峰会济南站”在齐鲁开源社举办。瀚高股份IvorySQL作为合作伙伴受邀参加此次活动。 瀚高股份IvorySQL技术工程师 向逍 带来「IvorySQL中的Oracle XML函数兼容」的议题分享。在演讲中&a…

EasyCVR视频汇聚平台:解锁视频监控核心功能,打造高效安全监管体系

随着科技的飞速发展&#xff0c;视频监控技术已成为现代社会安全、企业管理、智慧城市构建等领域不可或缺的一部分。EasyCVR视频汇聚平台作为一款高性能的视频综合管理平台&#xff0c;凭借其强大的视频处理、汇聚与融合能力&#xff0c;在构建智慧安防/视频监控系统中展现出了…

后端Java-SpringBoot整合MyBatisPlus步骤(超详细)

1.新建项目。 2.点击完上一步的next之后&#xff0c;选择pom.xml文件中的依赖。 3.点击pom文件进行项目初始化。 按照下面的俩步骤刷新一下maven &#xff0c;让文件生效 4.新建一个application.yml文件 5. 新建一个数据库mp&#xff0c;在数据库中新建一张user表 6.连接数据…