最详细的手工LAMP环境搭建

2023-05-16

环境:阿里云服务器ECS,Alibaba Cloud Linux 3.2104 LTS 64位 ,2核(vCPU) 2 GiB

LAMP 是搭建Web应用时最常用的环境,LAMP 分别表示 Linux、Apache、MySQL 以及 PHP,即在Linux 系统中安装 Apache、MySQL 以及 PHP。

此前参考阿里云服务器教程,使用yum安装Apache和PHP,但是出现了Apache无法调用PHP模块的情况,因此文章全面参考PHP官方文档-Unix系统下的Apache2.x和Apache官方的2.4版本安装指南,进行编译生成。这部分内容不仅可供CentOS等Red Hat类系统参考,也可供其他系统参考。

由于系统等导致的差异,不同环境场景下可能出现各种不同的问题,可以自行查找需要的各种依赖。

Apache

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。

1.下载Apache软件包

我选择的是Apache的最新版本,httpd-2.4.55,可以使用下面命令获取:

wget https://dlcdn.apache.org/httpd/httpd-2.4.55.tar.gz

解压软件包,-v选项为过程可视化,tar等linux下常见的解压工具使用可以参考这篇

tar -xzvf httpd-2.4.55.tar.gz

此时,当前目录下有文件httpd-2.4.55.tar.gz和文件夹httpd-2.4.55。

根据实践操作和Apache官方文档,我们应该提前安装好一些依赖,否则在编译过程中会出现错误。

2.下载安装依赖

下面是Apache官方2.4版本安装文档列出的Apache httpd需要的依赖列表:
image.png

一般情况下,我们需要提前安装的有APR、APR-Util和PCRE,此处我选择的都是当前与Apache兼容的最新版本。

下载资源:

wget http://archive.apache.org/dist/apr/apr-1.7.2.tar.gz
wget http://archive.apache.org/dist/apr/apr-util-1.6.3.tar.gz
wget https://sourceforge.net/projects/pcre/files/pcre2/10.37/pcre2-10.37.tar.gz

解压,编译安装:

tar -xzf apr-1.7.2.tar.gz 
cd apr-1.7.2
./configure --prefix=/usr/local/apr    #--prefix用来安装到指定目录
make
make install
tar -xzf apr-util-1.6.3.tar.gz
cd apr-util-1.6.3
./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr/bin/apr-1-config 
make
make install
tar -xzf pcre2-10.37.tar.gz
cd pcre2-10.37
./configure --prefix=/usr/local/pcre
make
make install

以上三个依赖将在Apache生成Makefile的阶段使用。

3.编译安装Apache

cd httpd-2.4.55
./configure --enable-so --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre
make
make install

现在已经将 Apache 2.4.55 安装在 /usr/local/apache2。

4.修改配置文件

Apache的配置文件位于/usr/local/apache2/conf/httpd.conf,简单的进行一些必要的配置,我们后续还会对其进行修改。

vim /usr/local/apache2/conf/httpd.conf

找到被注释的#ServerName,并修改为ServerName localhost:80,以免启动服务器报错。
配置文件中,默认的加载网页的主目录为/usr/local/apache2/htdocs,此目录下默认已有文件index.html,用于测试。可以手动修改为其他目录(例如常用的有/var/www/html/)。

可以使用如下命令启动 Apache 服务器:

/usr/local/apache2/bin/apachectl start

4.测试Apache是否安装并启动成功

Apache默认监听80端口,只需在其他主机的浏览器访问服务器的公网IP地址:http://<服务器公网IP>

image.png
出现此页面,说明Apache服务器成功运行。

5.配置环境变量

cd ~ && vim .bash_profile

修改环境变量,增加/usr/local/apache2/bin/apachectl

PATH=$PATH:$HOME/bin:/usr/bin:/usr/local/apache2/bin/

重新加载配置文件:

source .bash_profile

查看使用:

apachectl -h

PHP

PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根据它们的长项持续改进提升自己,例如java的面向对象编程,该语言当初创建的主要目标是让开发人员快速编写出优质的web网站。 [1-2] PHP同时支持面向对象和面向过程的开发,使用上非常灵活。

参考:PHP官方文档-Unix系统下的Apache2.x

1.获取PHP包

现行的稳定版本可以在官网下载。历史版本(包括已经不支持的版本)可以在此下载。
php-7版本已经在2022年11月停止支持。此处我选择的是最新的php-8.2.2版本:

wget https://www.php.net/distributions/php-8.2.2.tar.gz

解压:

tar -xzvf php-8.2.2.tar.gz

2.编译安装

cd ./php-8.2.2
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql
make
make install

我此处选择的编译方式是,在有 MySQL 支持的 Apache 2 上进行配置。--with-apxs2=/usr/local/apache2/bin/apxs选项可以帮助生成libphp.so模块,以供Apache服务器解析php调用。

3. 配置 php.ini

cp php.ini-development /usr/local/lib/php.ini

4. 编辑 httpd.conf 文件以调用 PHP 模块

vim /usr/local/apache2/conf/httpd.conf

PHP 8 版本需要添加:
LoadModule php_module modules/libphp.so
PHP 7 版本需要添加:
LoadModule php7_module modules/libphp7.so
以上的 make install 命令可能已经完成了这些。如果没有配置则需要手动配置。

告知Apache将特定的拓展名解析成PHP

让 Apache 将扩展名 .php 解析成 PHP

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

#如果你想拓展功能,也可以替换为下面的配置
#将 .php,.php2,.php3,.php4,.php5,.php6,以及 .phtml 文件都当做 PHP 来运行
<FilesMatch "\.ph(p[2-6]?|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

将 .phps 文件由 PHP 源码过滤器处理,使得其在显示时可以高亮源码

<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
</FilesMatch>

5.测试PHP

echo "<?php phpinfo(); ?>" > /usr/local/apache2/htdocs/index.php
apachectl start

在其他主机的浏览器访问地址:http://<服务器公网IP>/index.php ,成功显示如下:
image.png

MySQL

PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根据它们的长项持续改进提升自己,例如java的面向对象编程,该语言当初创建的主要目标是让开发人员快速编写出优质的web网站。 [1-2] PHP同时支持面向对象和面向过程的开发,使用上非常灵活。

1.安装MySQL

wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm

在进行mysql-community-server的安装之前,为避免Error:GPG check FAILED,可以采取两种方案

  • 参考文章,重新导入密钥,rpm --import [https://repo.mysql.com/RPM-GPG-KEY-mysql-2022](https://repo.mysql.com/RPM-GPG-KEY-mysql-2022)
  • 参考文章,绕过GPG验证,yum install mysql-community-server --nogpgcheck

之后执行下面:

yum -y install mysql-community-server

2.启动MySQL数据库服务

systemctl start mysqld.service

3. 获取临时密码

grep "password" /var/log/mysqld.log

4.登录数据库

mysql -u root -p #不建议使用明文密码登录

输入上述密码登录,进入mysql环境

5.修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your passwd'; #可能需要强密码
#可以在修改密码之前更换为弱密码,执行下述
set global validate_password_policy=0;  #修改密码安全策略为低

6. 授予root用户远程管理权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your passwd';

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最详细的手工LAMP环境搭建 的相关文章

  • Windows下无感后台启动Vmware虚拟机配置方法

    Windows下无感后台启动Vmware虚拟机配置方案 以Ubuntu为例 必要准备 1 在Vmware虚拟机里有一个虚拟机且已经设置静态IP 不同OS设置方法不同 xff0c 这里不再概述 2 Windows 需安装 Windows Te
  • Ubuntu桌面没有图标的解决方案

    我的ubuntu打开的时候就只有鼠标和背景 xff0c 在网上找了一些方法 当桌面啥也没有时 xff0c 按Ctrl 43 Alt 43 T进入终端 xff0c 然后我在网上 找了这个解决方法 xff1a sudo apt span cla
  • Vmmem进程占用大解决办法

    Vmmem xff08 WSL2 xff09 进程占用大解决办法 艹 xff0c 这玩意属实有点过分了 xff0c 办他 xff01 我们先看看docker设置怎么说 哦 xff0c 大概意思就是要通过这个配置文件来配置docker的占用资
  • 2023-03-12 java 子类对父类所拥有的方法的重命名

    例如 xff1a person 里面有个Id方法 public void Id System out println 34 身份证号 xff1a 34 43 id student引用person类 xff0c 现在我们在student里面改
  • Ubuntu2204LTS基础操作详解

    废话不多 说上干货 Ubuntu2204LTS下载链接 xff1a https ubuntu com download 默认使用root用户操作 或者命令前边加 sudo 关闭图形界面 关闭图形界面 xff0c 启用tty终端登录的方法如下
  • 解决Xamarin开发Android项目时的"Could not create the Java Virtual Machine"错误

    如题 xff0c 笔者在编辑Main axml界面时出现 34 Could not create the Java Virtual Machine 34 错误 xff0c 可按以下步骤解决 xff1a 1 运行注册表编辑器 xff1a 开始
  • Centos 7 虚拟机ifconfig或ip addr时,ens33不显示inet地址(已设置NOBOOT为yes)

    在虚拟机中输入ifconfig或ip addr时 xff0c 出现如下情况 xff1a sudo dhclient ens33 sudo ifconfig ens33 依次执行上面两行 xff0c 之后发现ens33中可以显示inet了 本
  • 7---整数反转

    给你一个 32 位的有符号整数 x x x xff0c 返回将 x x x 中的数字部分反转后的结果 如果反转后整数超过 32 位的有符号整数的范围
  • 使用windows远程连接kali的桌面

    使用windows远程连接kali的桌面 kali操作系统需要做的一些配置 安装xrdp span class token function apt span span class token parameter variable y sp
  • Android Studio模拟器出错无法运行的解决办法

    之前在运行Android Studio项目的时候 xff0c 原本用的是AS上安装过的模拟器 xff0c 然后我中途又把夜神模拟器打开也运行了一下 结果当我再次使用AS上的模拟器时 xff0c 模拟器上总是出现一个白色弹窗 xff0c 里面
  • Spring框架

    目录 一 Spring概述 二 Spring入门程序 xff08 理解控制反转IoC xff09 三 依赖注入 xff08 Dependency Injection xff0c DI xff09 3 1 依赖注入的实现方式 一 Spring
  • statement和PreparedStatement的区别

    学习总结转载 xff0c 有改动 xff0c 建议移步原作者 版权声明 xff1a 本文为博主原创文章 xff0c 遵循 CC 4 0 BY SA 版权协议 xff0c 转载请附上原文出处链接和本声明 本文链接 xff1a https bl
  • Spring环境的搭建和简单使用

    一 为什么使用spring和什么spring 1 xff09 代码中对象间的以来关系特别多 xff0c 代码耦合度比较高 xff0c 为了解决这种问题 xff0c 使用spring框架 2 xff09 spring是一个开源的容器框架 xf
  • Java中&与&&的区别

    Java中 amp 和 amp amp 都是逻辑与 xff0c 需要左右两边同时满足条件才可以得到true的结果 但是 xff0c 它们之间也有区别 xff1a 1 amp amp 也叫短路与 xff0c 当 amp amp 左边的条件不满
  • 关于二叉树的建立(C语言)(链式)

    首先 xff0c 我们得知道二叉树是什么 xff01 xff01 这东西网上一大把 还有 xff0c 二叉树的遍历顺序 xff0c 前序 xff08 根左右 xff09 xff0c 中序 xff08 左根右 xff09 xff0c 后序 x
  • [springMVC学习]1、springmvc设置spring配置文件

    我们给springmvc设置配置文件 xff0c 实际上就是让某个类在tomcat启动时 xff0c 自动的去读取配置文件 xff0c 完成ioc容器的创建 xff0c 完成初始化工作 在spring中 xff0c 我们是手动new出来 x
  • 无法连接 MKS: Login(username/password)incorrect

    升级到Vmware Workstation 12之后 xff0c 客户端能连上虚拟机服务器 xff0c 但却打不开共享的虚拟机 xff0c 提示报错 无法连接 MKS Login username password incorrect 查了
  • 李永乐(一)行列式计算——笔记

    行列式基本性质 一 行列式求值 说明 xff1a 第 i 行元素 乘 第 j 列的代数余子式 之和 61 0 二 转置行列式值不变 引申 xff1a 行有什么性质 xff0c 列就有什么性质 三 两行互换 xff0c 行列式值变号 引申 x
  • 计算机网络——组播地址(多播地址、D类地址)详解——不断完善更新中

    1 是什么 先看这张图 xff0c 组播地址是分类编址的IPv4地址中的D类地址 xff0c 又叫多播地址 xff0c 他的前四位必须是1110 xff0c 所以网络地址的取值范围是224 239 2 这些IP地址用来做什么 224 0 0
  • 线代——猴博士笔记

    求向量组的秩 xff0c 先求极大无关组 xff0c 极大无关组里几个向量 xff0c 秩就是几 什么是极大无关组 xff1f 从一向量组挑出几个向量 xff0c 他们线性无关 xff0c 且原来向量组中任意一个向量加进去 xff0c 又变

随机推荐

  • C++ std::ref————详解

    想学习ref xff0c 必须先学习reference rapper 1 是什么 xff1f ref是个函数模板 xff1a 用来构建一个reference wrapper对象并返回 xff0c 该对象拥有传入的elem变量的引用 如果参数
  • I/O复用的高级应用:聊天室程序———实例代码

    1概述 这是一个聊天室程序 xff0c 分为服务端和客户端两部分 多个客户端可以连接到同一个服务器 xff0c 当一个客户端向服务器发送消息时 xff0c 该消息会被转发给除发送端外的其他客户端 xff0c 其他客户端收到该消息并输出到标准
  • CMake指令解析 set(CMAKE_CXX_FLAGS “$ENV{CXXFLAGS} -rdynamic -O3 -fPIC -ggdb -std=c++11 -Wall -Wno-deprec

    完整代码 set span class token punctuation span CMAKE CXX FLAGS span class token string 34 span class token variable ENV span
  • vscode找不到头文件报错,就离谱

    最近在vscode写一个项目 xff0c 进行编译测试的时候发现死活找不到头文件 xff0c 就离谱 xff0c CMakeLists txt里的include directories所有头文件包含路径写的明明白白清清楚楚 xff0c 就是
  • 有26个字母a~z,找出所有字母组合,a、b、c、ab、abc、a~z 都是一个组合(顺序无关)

    mark 一下 xff0c 好像是用深搜做的 xff0c 目前看不太懂 span class token keyword int span list span class token punctuation span span class
  • 对顶堆模板:求动态数组的中位数

    模板 priority queue span class token operator lt span span class token keyword int span span class token operator gt span
  • C++八股文

    文章目录 C 43 43 语言int function int a int b 指针数组和数组指针的区别 xff1f 数组指针指针数组 函数指针和指针函数的区别函数指针指针函数 常量指针和指针常量的区别数组和指针的区别指针和引用的区别数组名
  • 一个HTML网页简单有效的验证码更换方法

    代码展示 lt img name 61 34 verifycode 34 src 61 34 verifyServlet 34 height 61 34 40px 34 width 61 34 150px 34 onclick 61 34
  • 获取CSDN文章内容并转换为markdown文本的python

    这篇文章主要介绍了自己写的小工具 xff0c 可以直接获取csdn文章并转换为markdown格式 需要的朋友可以参考下 自己写的小工具 xff0c 可以直接获取csdn文章并转换为markdown格式 效果图 核心代码 span clas
  • Android-视图绑定

    举例 xff1a 此时 xff0c first layout xml中定义了一个button且id为button1的按钮 在FirstActivity中我们想要调用这个按钮的话 xff0c 有两种方法 第一种 xff0c 通过FindVie
  • C语言程序设计1

    C语言程序设计1 计算机语言分类 xff1a 机器语言 xff1a xff08 machine language xff09 计算机直接使用的二进制形式的程序语言或机器代码 汇编语言 xff1a 借助助记符进行描述的计算机语言 高级语言 x
  • ZYNQ中的GPIO与AXI GPIO

    GPIO GPIO 一种外设 xff0c 对器件进行观测和控制MIO 将来自PS外设和静态存储器接口的访问多路复用到PS引脚上处理器控制外设的方法 通过一组寄存器包括状态寄存器和控制寄存器 xff0c 这些寄存器都是有地址的 xff0c 通
  • FTP文件传输协议

    简介 FTP协议 xff1a 文件传输协议 xff08 File Transfer Protocol xff09 协议定义了一个在远程计算机系统和本地计算机系统之间传输文件的一个标准FTP运行在OSI模型的应用层 xff0c 并利用传输协议
  • python中如何用for循环语句1加到100?

    计算机是现代一种用于高速计算的电子计算机器 xff0c 是一种高级的计算工具 可以进行数值计算 xff0c 又可以进行逻辑计算 xff0c 还具有存储记忆功能 是能够按照程序运行 xff0c 自动 高速处理海量数据的现代化智能电子设备 计算
  • controller层配置全局配置拦截器

    大家好 xff0c 我是一名在算法之路上不断前进的小小程序猿 xff01 体会算法之美 xff0c 领悟算法的智慧 希望各位博友走过路过可以给我点个免费的赞 xff0c 你们的支持是我不断前进的动力 xff01 xff01 加油吧 xff0
  • 用python写DFS和BFS算法

    前言 xff1a 菜鸟学算法 加油 xff01 一 什么是DFS和BFS xff1f 1 BFS算法 xff1a 宽度优先搜索算法 xff08 又称广度优先搜索 xff09 是最简便的图的搜索算法之一 xff0c 这一算法也是很多重要的图的
  • 进程同步 生产者消费者问题

    题目 xff1a 某超级市场 xff0c 可容纳100人同时购物 入口处备有篮子 xff0c 每个购物者可持一只篮子入内购物 出口处结帐 xff0c 并归还篮子 xff08 出 入口仅容一人通过 xff09 请试用P xff08 S xff
  • Windows-取消锁屏密码

    开始 gt 设置 gt 账户 gt 登录选项 gt 密码 gt 输入当前密码 gt 更改密码 xff08 默认为空就行 xff09 gt 下一步 gt 完成
  • 腾讯云4核服务器和2核区别大吗?性能差异

    腾讯云服务器2核和4核性能有什么区别 xff1f 云服务器核数指的是vCPU处理器 xff0c 云服务器CPU核心数如何选择主要取决于用户实际应用情况 xff0c 如果当前应用对CPU计算能力要求不高 xff0c 2核完全可以胜任 xff0
  • 最详细的手工LAMP环境搭建

    环境 xff1a 阿里云服务器ECS xff0c Alibaba Cloud Linux 3 2104 LTS 64位 xff0c 2核 vCPU 2 GiB LAMP 是搭建Web应用时最常用的环境 xff0c LAMP 分别表示 Lin