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=0cd /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/aprmv apr-util-1.6.0 httpd-2.4.29/srclib/apr-utilcd 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 serverchkconfig --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.htmlsystemctl 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 = 3306socket = /usr/local/mysql/mysql.sock		#开启自动补全功能[mysqld]									#服务全局设置user = mysql       							#设置管理用户basedir=/usr/local/mysql					#指定数据库的安装目录datadir=/usr/local/mysql/data				#指定数据库文件的存储路径port = 3306									#指定端口character-set-server=utf8					#设置服务器字符集编码格式为utf8pid-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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

2024HBCPC:C Goose Goose Duck

题目描述 Iris 有 n n n 个喜欢玩鹅鸭杀的朋友&#xff0c;编号为 1 ∼ n 1∼n 1∼n。 假期的时候&#xff0c;大家经常会在群里问有没有人玩鹅鸭杀&#xff0c;并且报出现在已经参与的人数。 但是每个人对于当前是否加入游戏都有自己的想法。 具体的来说&#xff0c;对于第…

【Python音视频技术】用moviepy实现图文成片功能

今天上班的时候看到有人群里问 图文成片怎么实现。 临时给我提供一点写作的灵感&#xff0c;趁着下班写一篇。这里用到 python的moviepy库&#xff0c; 之前文章介绍过。 大体思路&#xff1a;假定有4张图片&#xff0c;每张图片将在视频中展示2秒钟&#xff0c;并且图片会按照…

公告:关于博主的重要通知

大家好&#xff0c;我是博主夏目。 本期不分享知识&#xff0c;博主想说明一下博主的一些重要提示。 分享的内容&#xff0c;从不收费&#xff0c;也未向任何人进行收费。 意在分享知识&#xff0c;传播文化&#xff0c;结交更多志同道合的朋友。 截至目前&#xff0c;从未…

如何选择一个AI大模型的私家炼丹炉

随着计算机图形处理技术的不断进步&#xff0c;NVIDIA作为图形处理器&#xff08;GPU&#xff09;的领先制造商&#xff0c;其推出的RTX系列消费级显卡在性能和技术创新方面均引起了广泛关注。依托这些消费级显卡性能的突飞猛进&#xff0c;AI炼丹师们也有望将大模型训练、推理…

《C++ Primer Plus》第十二章复习题和编程练习

目录 一、复习题二、编程练习 一、复习题 1. 假设String类有如下私有成员&#xff1a; // String 类声明 class String { private: char* str;int len;// ... };a. 下述默认构造函数有什么问题&#xff1f; String::String() { } // 默认构造函数b. 下述构造函数有什么问题…

go语言函数之defer

Go函数里面提供了defer关键字&#xff0c;可以注册多个延迟调用&#xff0c;这些调用以先进后出&#xff08;FILO&#xff09;的顺序在函数返回前被执行。这点有点类似java语言中异常处理中的的finaly子句&#xff0c;defer常用于保证一些资源最终一定能够得到回收和释放。 pa…

VirtualBox+Ubuntu22.10+Docker+ROS2

Docker 拉取ros2镜像 docker pull osrf/ros:foxy-desktop 运行 docker run -it --nameros2 -p 50022:22 osrf/ros:foxy-desktop 进入容器安装组件 apt-get update apt-get install vim apt-get install git apt-get install net-tools # 安装ssh apt-get install openssh…

Java面试题分享0519

目录 1、重载和重写区别&#xff1f; 2、构造器&#xff08;Constructor&#xff09;是否可被重写&#xff08;override&#xff09; 3、break 、continue 、return 作用&#xff1f; 4、JAVA 创建对象有哪些方式&#xff1f; 5、 和 equals 有什么区别&#xff1f; 6、I…

centos下给es7.12.1设置密码

安装可参考&#xff1a; centos7下安装elasticsearch7.8.1并配置远程连接_在一台服务器centos7上安装和配置elasticsearch。-CSDN博客 1、先停掉es进程 2、设置输入密码后访问配置 cd /home/soft/elasticsearch-7.12.1/config vim elasticsearch.yml 3、启动es服务 cd /home/…

香橙派 AIpro开发板初上手

一、香橙派 AIpro开箱 最近拿到了香橙派 AIpro&#xff08;OrangePi AIpro&#xff09;&#xff0c;下面就是里面的板子和相关的配件。包含主板、散热组件、电源适配器、双C口电源线、32GB SD卡。我手上的这个是8G LPDDR4X运存的版本。 OrangePi AIpro开发板是一款由香橙派与华…

VUE3 学习笔记(4):VUE 事件处理、传参、事件修饰

常见的Web事件 页面事件 Onload --加载 Onunload --取消 Onscroll --滚动 Onresize --大小改变 表单事件 Onsubmit --提交 onchange --变更 Onselect --选择 Onreset --重置 焦点事件 Onfocus --得到焦点 Onblur --失去焦点 鼠标事件 Onclick --点击 Ondbclick --双击 onmouseu…

在Python中实现限定抽奖次数的机制

目录 一、引言 二、需求分析 三、设计思路 四、代码实现 4.1 使用字典存储用户抽奖次数 4.2 使用数据库存储用户抽奖次数 五、扩展与优化 六、总结 一、引言 在当今互联网应用中&#xff0c;抽奖系统作为吸引用户、提高用户参与度和活跃度的重要手段&#xff0c;已经被…

ideavim与vim相关笔记

本文主要用于记录一些使用 vim/ideavim 开发的心得笔记&#xff0c;为了速度也为了折腾 强烈的个人向 笔记 ideavim 与 vim 混杂&#xff0c;无序但使用二级标题做大分类&#xff0c;当字典用,默认 vim 和 ideavim 通用&#xff0c;不通用会标记出来 文件操作 刷新重载当前打开…

为什么配置了安全组还是有攻击进来?

面对DDoS攻击&#xff0c;即使配置了安全组规则来限制入站流量&#xff0c;攻击者仍可能找到绕过这些基本防护措施的方法&#xff0c;尤其是当攻击流量巨大时。这是因为安全组主要工作在网络层和传输层&#xff0c;它们依据IP地址、协议和端口号来过滤流量&#xff0c;对于应用…

AttributeError: module ‘numpy‘ has no attribute ‘bool‘

报错内容&#xff1a; AttributeError: module numpy has no attribute bool. np.bool was a deprecated alias for the builtin bool. To avoid this error in existing code, use bool by itself. Doing this will not modify any behavior and is safe. If you specifically…

【Spring】设计模式(GOF)

Spring Framework在其架构和实现中广泛使用了多种GOF&#xff08;Gang of Four&#xff09;设计模式。这些设计模式帮助Spring解决了许多常见的软件开发问题&#xff0c;提高了代码的可重用性、可维护性和可扩展性。 1、工厂模式&#xff08;Factory Pattern&#xff09; 1.1简…

Android14 WMS-窗口添加流程(一)-Client端

窗口布局在onCreate方法中通过setContentView(R.layout.xxx)加载&#xff0c;但窗口的显示并不是在wm_on_create_called中, 而是在wm_on_resume_called后&#xff0c;也就是说应用onResume时此窗口是不可见的&#xff0c;真正可见是当此window窗口的mDrawState变化状态从NO_SUR…

Raven2掠夺者2渡鸦2游戏预约注册教程 账号注册教程

《渡鸦2》是一款源自韩国的创新力作&#xff0c;作为《Raven》系列的最新续篇&#xff0c;这款游戏在MMORPG手游领域内再度扩展了其标志性的暗黑奇幻宇宙&#xff0c;融入了大量革新的游戏设计与丰富内容。定档于2024年5月29日开启公测的《渡鸦2》&#xff0c;正处在紧张刺激的…

blender复制uv贴图

1、新建两个猴头 2、点击其中一个进入uv编辑模式 3、在uv编辑中打开一个图像 4、新建一个材质球&#xff0c;将图像渲染到模型上 打开图像纹理 选择刚才打开的图像 切换到材质预览模式后&#xff0c;就可以看到贴图了 5、选择一个孤岛 6、然后选择拼排孤岛 可以看到该模型展开…

【全开源】JAVA人力资源招聘社会校招类型招聘系统校园招聘PC端

塑造企业高效招聘新体验 一、源码简介 招聘PC端源码&#xff0c;一款面向企业的招聘管理系统解决方案。它拥有完整的招聘流程管理功能&#xff0c;从职位发布到候选人管理&#xff0c;再到面试安排与结果反馈&#xff0c;所有环节都通过直观易用的界面进行展现&#xff0c;大…