LAMP源码编译安装——CentOS7

文章目录

    • LAMP是什么
    • LAMP软件组件
      • Linux
      • Apache
      • MySQL
      • PHP
    • 源码安装Apache
      • 一、准备工作
      • 二、安装环境依赖包
      • 三、配置软件模块
      • 四、编译及安装
      • 五、优化配置文件路径
      • 六、添加httpd系统服务(有两种方法)
        • 方法一:
        • 方法二:
      • 七、修改httpd 服务配置文件
      • 八、浏览器访问验证
    • 源码安装mysql
      • 一、准备工作
      • 二、安装环境依赖包
      • 三、配置软件模块
      • 四、编译及安装
      • 五、修改mysql 配置文件
      • 六、优化mysql
      • 七、初始化数据库
      • 八、启动mysql
    • 源码安装php
      • 一、准备工作
      • 二、安装环境依赖包
      • 三、配置软件模块
      • 四、编译与安装
      • 五、优化PHP
      • 六、修改httpd 服务的配置文件
      • 七、验证PHP测试页

LAMP是什么

在这里插入图片描述

LAMPLinuxApacheMySQLPerl / PHP / Python)是Web上最流行的应用程序最常用的软件堆栈之一的首字母缩写词。其通用软件堆栈模型具有大量可互换的组件。

该首字母缩略词中的每个字母代表其四个开源基石之一:

  • Linux操作系统
  • HTTP服务器
  • 关系数据库管理系统:MySQL
  • 编程语言:Perl、 PHP或Python

LAMP 堆栈的组件存在于大多数Linux 发行版的软件存储库中。

LAMP软件组件

Linux

Linux 是一种类 Unix计算机操作系统,采用自由开源软件开发和分发模式组装而成。大多数Linux 发行版都是基于Linux 内核并通常基于包管理系统的软件集合,通过其软件包提供完整的 LAMP 设置。

Apache

LAMP 的 Web 服务器角色传统上由 Apache 提供,后来还包括其他 Web 服务器,例如Nginx。
Apache是根据Apache 许可证发布的开源软件。它支持各种各样的功能,其中许多功能都是作为编译 模块实现的,这些模块扩展了 Apache 的核心功能。这些功能包括服务器端编程语言支持和身份验证。

MySQL

MySQL 最初作为 LAMP 的关系数据库管理系统,后来被其他系统交替使用,例如PostgreSQL、MariaDB(由 MySQL 的原始开发人员开发的社区开发的分支)甚至MongoDB等NoSQL数据库。

PHP

PHP 是一种服务器端脚本语言,专为Web开发而设计,但也可用作通用编程语言。 Web 服务器通过 PHP 处理器模块解释PHP 代码,并生成结果网页。 PHP 命令可以选择直接嵌入到HTML源文档中,而不必调用外部文件来处理数据。 它还发展到包含命令行界面功能,可用于独立的图形应用程序。 PHP 是根据PHP 许可证条款发布的免费软件,由于 PHP 许可证对术语PHP的使用有所限制,因此与GNU 通用公共许可证(GPL)不兼容。

源码安装Apache

一、准备工作

  1. 将安装Apache所需软件包传到/opt/apache目录下并解压
systemctl disable firewalld --now
setenforce 0
vim /etc/selinux/config 
        SELINUX=0



cd /opt
mkdir apache
tar xf apr-1.6.2.tar.gz 
tar xf apr-util-1.6.0.tar.gz
tar xf httpd-2.4.29.tar.bz2

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

使用xftp上传Apache所需软件包
请添加图片描述

二、安装环境依赖包

命令

yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl 

解析

yum -y install \
gcc \                            #C语言的编译器
gcc-c++ \                        #C++的编译器
make \                            #源代码编译器(源代码转换成二进制文件)
pcre \                            #pcre是一个Perl函数库,包括perl 兼容的正则表达式库
pcre-devel \                    #perl的接口开发包
expat-devel \                   #用于支持网站解析HTML、XML文件
perl                            #perl语言编译器

请添加图片描述

三、配置软件模块

mv apr-1.6.2 httpd-2.4.29/srclib/apr

mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util

cd httpd-2.4.29/

./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi

请添加图片描述
请添加图片描述

四、编译及安装

make -j 3		#表示开3核同时进行编译

make install

在这里插入图片描述

在这里插入图片描述

五、优化配置文件路径

把httpd服务的可执行程序文件放入路径环境变量的目录中便于系统识别

ln -s /usr/local/httpd/conf/httpd.conf /etc/


ln -s /usr/local/httpd/bin/* /usr/local/bin/

在这里插入图片描述

六、添加httpd系统服务(有两种方法)

方法一:
```bash
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd		#用于service服务管理
chmod +x /etc/init.d/httpd
vi /etc/init.d/httpd
	#!/bin/bash												#在第一行前插入新行,添加此三行内容
	# chkconfig: 35 85 21									#35级别自动运行  第85个启动 第21个关闭
	# description: Apache is a World Wide Web server
	
chkconfig --add httpd     		#将httpd服务加入到service管理器

systemctl start httpd.service
```

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

方法二:
```bash
vim /usr/lib/systemd/system/httpd.service

	[Unit]													#服务的说明
	Description=The Apache HTTP Server						#描述服务
	After=network.target									#依赖,当依赖的服务启动之后再启动自定义的服务
	[Service]												#服务运行参数的设置
	Type=forking											#后台运行方式
	PIDFile=/usr/local/httpd/logs/httpd.pid					#PID文件位置
	ExecStart=/usr/local/bin/apachectl $OPTIONS				#服务的运行命令
	ExecReload=/bin/kill -HUP $MAINPID						#根据PID重载配置
	[Install]												#服务安装的相关设置
	WantedBy=multi-user.target								#设置为多用户

systemctl start httpd.service
systemctl enable httpd.service
	```

七、修改httpd 服务配置文件

vim /etc/httpd.conf
	#--52行--修改
	Listen 192.198.80.10:80		#<serverIP>:80
	#--197行--取消注释,修改
	ServerName www.wl.com:80	#自定义域名
	
	#可以不修改
	#--221行--默认首页存放路径
	DocumentRoot "/usr/local/httpd/htdocs"
	#--255行--默认首页文件名设置
	DirectoryIndex index.html
httpd -t  或 apachectl -t			#检查配置文件的配置项是否有误

cat /usr/local/httpd/htdocs/index.html

systemctl restart httpd.service

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

八、浏览器访问验证

netstat -anpt | grep 80
echo "10.190.33.40 www.wl.com" >> /etc/hosts

在这里插入图片描述

在这里插入图片描述

源码安装mysql

一、准备工作

将安装mysql 所需软件包传到/opt目录下并解压,卸载mariadb

cd /opt
mkdir mysql
cd mysql
tar xf mysql-boost-5.7.44.tar.gz
yum remove -y mariadb*  #卸载mariadb相关内容

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、安装环境依赖包

yum -y install \
gcc \
gcc-c++ \
ncurses \				#字符终端下图形互动功能的动态库
ncurses-devel \			#ncurses开发包
bison \					#语法分析器
cmake					#mysql需要用cmake编译安装

在这里插入图片描述

三、配置软件模块

cd mysql-5.7.44/

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \		#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \                             #指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \            #指定进程文件的存储路径
-DDEFAULT_CHARSET=utf8  \                       #指定默认使用的字符集编码,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci \			#指定默认使用的字符集校对规则
-DWITH_EXTRA_CHARSETS=all \						#指定支持其他字符集编码
-DWITH_INNOBASE_STORAGE_ENGINE=1 \              #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \               #安装ARCHIVE存储引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \             #安装BLACKHOLE存储引擎 
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \            #安装FEDERATED存储引擎 
-DMYSQL_DATADIR=/usr/local/mysql/data \         #指定数据库文件的存储路径
-DWITH_BOOST=/usr/local/boost \          #指定boost的路径,若使用mysql-boost集成包安装则-DWITH_BOOST=boost
-DWITH_SYSTEMD=1								#生成便于systemctl管理的文件

如果在CMAKE的过程中有报错,当报错解决后,需要把源码目录中的CMakeCache.txt文件删除,然后再重新CMAKE,否则错误依旧

在这里插入图片描述

四、编译及安装

make -j 3 && make install

时间较长,请耐心等待

在这里插入图片描述

五、修改mysql 配置文件

useradd -M -s /sbin/nologin  mysql	#创建mysql用户
vim /etc/my.cnf								#删除原配置项,再重新添加下面内容
	[client]									#客户端设置
	port = 3306
	socket = /usr/local/mysql/mysql.sock		#开启自动补全功能
	
	[mysqld]									#服务全局设置
	user = mysql       							#设置管理用户
	basedir=/usr/local/mysql					#指定数据库的安装目录
	datadir=/usr/local/mysql/data				#指定数据库文件的存储路径
	port = 3306									#指定端口
	character-set-server=utf8					#设置服务器字符集编码格式为utf8
	pid-file = /usr/local/mysql/mysqld.pid		#指定pid 进程文件路径
	socket=/usr/local/mysql/mysql.sock			#指定数据库连接文件
	bind-address = 0.0.0.0						#设置监听地址,0.0.0.0代表允许所有,如允许多个IP需空格隔开
	skip-name-resolve							#禁止域名解析,包括主机名,所以授权的时候要使用 IP 地址
	max_connections=4096						#设置mysql的最大连接数
	default-storage-engine=INNODB				#指定默认存储引擎
	max_allowed_packet=32M						#设置在网络传输中一次消息传输量的最大值。系统默认值为 1MB,最大值是 1GB,必须设置 1024 的倍数。
	server-id = 1								#指定服务ID号

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES


在这里插入图片描述

在这里插入图片描述

六、优化mysql

更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/

chown mysql:mysql /etc/my.cnf

在这里插入图片描述

设置路径环境变量

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile	
source /etc/profile

在这里插入图片描述

七、初始化数据库

cd /usr/local/mysql/bin/

./mysqld \
--initialize-insecure \				#生成初始化密码为空
--user=mysql \                      #指定管理用户
--basedir=/usr/local/mysql \        #指定数据库的安装目录
--datadir=/usr/local/mysql/data		#指定数据库文件的存储路径

在这里插入图片描述

八、启动mysql

添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/		#用于systemctl服务管理
systemctl daemon-reload         #刷新识别     
systemctl start mysqld.service  #开启服务
systemctl enable mysqld         #开机自启动
netstat -anpt | grep 3306       #查看端口

在这里插入图片描述

修改mysql 的登录密码

mysqladmin -u root password "abc123" 	#给root账号设置密码为abc123,原始密码为空

在这里插入图片描述

授权远程登录

mysql -u root -p
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
#授予root用户可以在所有终端远程登录,使用的密码是abc123,并对所有数据库和所有表有操作权限

show databases;			#查看当前已有的数据库

在这里插入图片描述

源码安装php

一、准备工作

cd /opt/
mkdir php
cd php
tar xf php-7.1.10.tar.bz2 

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、安装环境依赖包

yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

在这里插入图片描述

三、配置软件模块

cd php-7.1.10/

./configure \
--prefix=/usr/local/php \							#指定将 PHP 程序的安装路径
--with-apxs2=/usr/local/httpd/bin/apxs \			#指定Apache httpd服务提供的apxs 模块支持程序的文件位置
--with-mysql-sock=/usr/local/mysql/mysql.sock \		#指定mysql 数据库连接文件的存储路径
--with-config-file-path=/usr/local/php/lib			#设置 PHP 的配置文件 php.ini 将要存放的位置
--with-mysqli \										#添加 MySQL 扩展支持,mysqli扩展技术不仅可以调用MySQL的存储过程、处理MySQL事务,而且还可以使访问数据库工作变得更加稳定
--with-zlib \										#支持zlib功能,提供数据压缩
--with-curl \										#开启curl扩展功能,实现HTTP的Get下载和Post请求的方法
--with-gd \											#激活gd 库的支持
--with-jpeg-dir \									#激活jpeg 的支持
--with-png-dir \									#激活png 的支持
--with-freetype-dir \
--with-openssl \
--enable-mbstring \									#启用多字节字符串功能,以便支持中文等代码
--enable-xml \										#开启扩展性标记语言模块
--enable-session \									#会话
--enable-ftp \										#文本传输协议
--enable-pdo \										#函数库
--enable-tokenizer \								#令牌解释器
--enable-zip										#ZIP压缩格式

在这里插入图片描述

四、编译与安装

make -j 3&& make install

在这里插入图片描述

五、优化PHP

优化把PHP 的可执行程序文件放入路径环境变量的目录中便于系统识别

ln -s /usr/local/php/bin/* /usr/local/bin/
php -m 			#查看PHP 加载了哪些模块

在这里插入图片描述

复制模版文件作为PHP 的主配置文件,并进行修改

php --ini
cp php.ini-development /usr/local/php/lib/php.ini	
#在测试环境时使用php.ini-development文件,而在生产环境时使用php.ini-production文件
vim /usr/local/php/lib/php.ini
	#--1170行--修改
	mysqli.default_socket = /usr/local/mysql/mysql.sock
	#--939行--取消注释,修改
	date.timezone = Asia/Shanghai

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

六、修改httpd 服务的配置文件

vim /etc/httpd.conf 
#--395行--插入以下内容
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
#--259行--修改首页文件名设置
DirectoryIndex index.html index.php

#---检查支持php7的模块是否存在------
#使用反斜杠搜索
LoadModule php7_module        modules/libphp7.so

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

七、验证PHP测试页

rm -rf /usr/local/httpd/htdocs/index.html
vim /usr/local/httpd/htdocs/index.php
<?php
phpinfo();
?>

systemctl restart httpd.service


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW软件需求分析文档内容和编写指南

编写LabVIEW软件需求分析文档&#xff08;Software Requirements Specification, SRS&#xff09;是软件开发的关键步骤之一。以下是详细的内容结构、编写指南和注意事项&#xff1a; 内容结构 引言 项目背景&#xff1a;简要介绍项目背景和目的。 文档目的&#xff1a;说明需…

利用NewGIS平台将FME模板发布为接口

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 一、模板编写 二、发布模板 三、接口获取 四、移动端调用 ​​​​​ 前言 在实际的应用生产过程中&#xff0c;尤其是移动端GIS软件的开发&#xff0c;针对一些闭…

C++学习笔记(21)——继承

目录 1. 继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 继承的概念总结&#xff1a; 2. 基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数知识点&#xff1a;派生类中6个默认成员函数…

头文件大小写引发的报错

jenkins下打包编译报错如下&#xff0c;提示编译zynqCan.c时找不到“syscfgpll/sysCfgpll.h”文件。 但IDE下编译是没有报错也没有警告的&#xff0c;工程中也存在文件“syscfgpll/sysCfgPll.h”。 仔细观察发现&#xff0c;报错说的是找不到头文件“syscfgpll/sysCfgpll.h”…

蓝桥杯物联网竞赛_STM32L071_18_长短按键检测

长短按键的检测是国赛题里面遇到的&#xff0c;省赛没出过有两种实方法 定时器配置&#xff1a; 定时器的话要比delay准确&#xff0c;其中tim7定时器的准度最高 定时器预分配配置32 - 1&#xff0c;计数周期是10000 - 1这样做那么32MHZ/32也就是一秒钟记录10^6的数&#xf…

c++ vector实现出现的一些问题

目录 前言&#xff1a; 浅拷贝问题: typename指定类型&#xff1a; 前言&#xff1a; 最近学习了c vector的使用&#xff0c;然后也自己实现了一下vector的部分重要的功能。然后在其中出现了一些问题&#xff0c;在这就主要记录一下我解决哪些bug。 浅拷贝问题: 在实现res…

Weblogic SSRF漏洞 [CVE-2014-4210]

漏洞复现环境搭建请参考 http://t.csdnimg.cn/svKal docker未能成功启动redis请参考 http://t.csdnimg.cn/5osP3 漏洞原理 Weblogic的uddi组件提供了从其他服务器应用获取数据的功能并且没有对目标地址做过滤和限制&#xff0c;造成了SSRF漏洞&#xff0c;利用该漏洞可以向内…

若依跳转(新增)页面,在菜单中不显示的页面

在router.js文件中 跳转方式 this.$router.push(/monitor/b/b)

路由引入实验(思科)

华为设备参考&#xff1a;路由引入实验&#xff08;华为&#xff09; 技术简介 路由引入技术在网络通信中起着重要的作用&#xff0c;能够实现不同路由协议之间的路由传递&#xff0c;并在路由引入时部署路由控制&#xff0c;实现路径或策略的控制 实验目的 不同的路由协议之…

二十三篇:未来数据库革新:AI与云原生的融合之旅

未来数据库革新&#xff1a;AI与云原生的融合之旅 1. 智能数据库管理&#xff1a;AI的魔法 在数字化时代&#xff0c;数据库技术作为信息管理的核心&#xff0c;正经历着前所未有的变革。AI&#xff08;人工智能&#xff09;和云原生技术的融合&#xff0c;正在重新定义数据库…

力扣刷题--2965. 找出缺失和重复的数字【简单】

题目描述 给你一个下标从 0 开始的二维整数矩阵 grid&#xff0c;大小为 n * n &#xff0c;其中的值在 [1, n2] 范围内。除了 a 出现 两次&#xff0c;b 缺失 之外&#xff0c;每个整数都 恰好出现一次 。 任务是找出重复的数字a 和缺失的数字 b 。 返回一个下标从 0 开始、…

蓝桥杯Web开发【大学组:国赛】2022年真题

1.分一分 如果给你一个数组&#xff0c;你能很快将它分割成指定长度的若干份吗&#xff1f; 1.1 题目问题 请在 js/index.js 文件中补全函数 splitArray 中的代码&#xff0c;最终返回按指定长度分割的数组。 具体要求如下&#xff1a; 将待分割的&#xff08;一维&#x…

web前端之vue动态访问静态资源、静态资源的动态访问、打包、public、import、URL、Vite

MENU 静态资源与打包规则动态访问静态资源直接导入将静态资存放在public目录中动态导入URL构造函数结束语实践与坑附文 静态资源与打包规则 介绍 Vite脚手架在打包代码的时候&#xff0c;会把源代码里对于静态资源的访问路径转换为打包后静态资源文件的路径。主要的区别是文件指…

Vue中使用Vue-scroll做表格使得在x轴滑动

页面效果 首先 npm i vuescroll 在main.js中挂载到全局 页面代码 <template><div class"app-container"><Header :titletitle gobackgoBack><template v-slot:icon><van-icon clickgoHome classicon namewap-home-o /></templat…

深度解析Java 11核心新特性

码到三十五 &#xff1a; 个人主页 < 免责声明 > 避免对文章进行过度解读&#xff0c;因为每个人的知识结构和认知背景都不同&#xff0c;没有一种通用的解决方案。对于文章观点&#xff0c;不必急于评判。融入其中&#xff0c;审视自我&#xff0c;尝试从旁观者角度认清…

爬虫实战教程:深入解析配乐网站爬取1000首MP3

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、实战前准备 1. 选择目标网站 2. 分析网页结构 三、爬虫工作流程详解 1. 发…

内网穿透入门使用(frp和natapp)

内网穿透入门使用 简单介绍穿透工具推荐FrpFrp下载安装服务端配置启动服务端配置客户端启动客户端效果查看 NATAppNATApp下载安装NATApp配置启动NATApp 使用途径 我的博客&#xff1a;Lichg&#xff0c;欢迎大家访问留言。 简单介绍 什么是内网穿透&#xff1a; 首先我们对内网…

lvm概述和配额

lvm概述和配额 文章目录 lvm概述和配额LVM概述1、逻辑卷的作用&#xff1a;2、lvm主要命令和实操磁盘配额创建data目录&#xff0c;进入data目录限制创建文件数 LVM概述 逻辑卷管理liunx系统下对硬盘分区的一种管理机制 lvm机制特别适合管理大储存设备&#xff0c;可以动态的…

Echarts x轴坐标二级分组

在使用echarts 封装组件的时候&#xff0c;偶尔会遇到需要x轴坐标进行二层分组的需求。那么如何对echarts 进行二层分组呢&#xff0c;有以下几个步骤&#xff1a; 仅介绍二层分组的逻辑。有兴趣的可以进行三层延伸。 1&#xff0c;修改echarts Options 中xAxis 的配置。 此…

win11中文文件名称乱码解决方案

解压后出现以下的乱码 解决方案 步骤1.winR 输入intl.cpl 或 windows 自带的搜索搜“intl.cpl”&#xff0c;打开这个面板控制项 步骤2.在新打开的区域面板中&#xff0c;选择“管理”标签页&#xff0c;点击下方的“更改系统区域设置”按钮 步骤3.取消"Beta版…"选…