环境:阿里云服务器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需要的依赖列表:

一般情况下,我们需要提前安装的有APR、APR-UtilPCRE,此处我选择的都是当前与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>



出现此页面,说明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 start

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 ,成功显示如下:

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';

LAMP环境搭建——最详细的手工编译的更多相关文章

  1. LAMP 环境搭建之源码包编译安装

    mysql用的二进制包安装. Apache php 用的源码包 mysql版本5.5.46    Apache版本2.4.7  PHP版本:5.5 mysql安装部分参考了阿铭linux的内容. 这是 ...

  2. Lamp环境搭建Linux CentOS6.5编译安装mysql5.6

    经典web开发组合Lamp环境搭建之mysql安装详解 安装前准备 通过rpm命令检查centos上是否已经安装mysql,然后卸载已经存在的mysql版本 [root@localhost src]# ...

  3. LAMP环境搭建之编译安装指南(php-5.3.27.tar.gz)

    测试环境:CentOS release 6.5 (Final) 软件安装:httpd-2.2.27.tar.gz   mysql-5.1.72.tar.gz   php-5.3.27.tar.gz 1 ...

  4. LAMP环境搭建教程(原创)

    学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP.WAMP.MAMP等.这里我介绍一下LAMP环境的搭建,即Linux.Apache.MySQL.PHP环境. 一. ...

  5. LAMP环境搭建教程

    原文:LAMP环境搭建教程 学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP.WAMP.MAMP等.这里我介绍一下LAMP环境的搭建,即Linux.Apache.M ...

  6. 转载自php100中文网 centos下lamp 环境搭建

    学习PHP脚本编程语言之前,必须先搭建并熟悉开发环境,开发环境有很多种,例如LAMP.WAMP.MAMP等.这里我介绍一下LAMP环境的搭建,即Linux.Apache.MySQL.PHP环境. 一. ...

  7. 笔记:Linux下软件的安装、CentOS更新yum源、LAMP环境搭建、kali软件管理

    一.Linux下软件的安装 方式:yum源 / rpm /源码安装 1.yum:(帮助管理员解决依赖关系) yum是通过分析rpm的包头数据后,根据各种软件的相关性质做出属性相对应的解决方案,然后可以 ...

  8. lamp环境搭建(ubuntu)

    系统:Ubuntu14.04 方法一.最简单的在线安装 (参考网址:http://os.51cto.com/art/201307/405333.htm) 具体过程: [1]打开终端,执行命令 # su ...

  9. linux的基本操作(LAMP环境搭建)

    LAMP 环境搭建 经过前部分章节的学习,你已经掌握了linux的基础知识了.但是想成为一名系统管理员恐怕还有点难度,因为好多单位招聘这个职位的时候都要求有一定的工作经验.然而真正的经验一天两天是学不 ...

  10. xshell远程终端操作Ubuntu server安装LAMP环境之最详细笔记之二PHP开发环境配置

    前言: 昨天学会了安装server,今天试着通过远程终端xshell来安装LAMP,搭配一下开发环境,也有集成环境可以一键安装使用,还是瞎折腾一下,手动一步一步搭建一下这个开发环境. 接上一篇:ubu ...

随机推荐

  1. orcl between and 时间

    在网上查阅,大家都说between and两边都会包含,但是对于时期来讲,他会包含前者,不会包含后者. 也就是说求一个时间介于上周六到本周五的区间,用between and 需要计算出上周六的时间和本 ...

  2. 30位以内随机产生时间戳加随机数id

    package com.zx.ps.web.gzdb; import java.text.SimpleDateFormat; import java.util.Date; public class c ...

  3. Zabbix技术分享——监控windows进程资源使用情况

    监控系统进程资源的使用情况是IT运维的常规操作.在实际工作中,运维人员有可能遇到可以使用Zabbix Agent监控linux系统进程,却无法监控windows系统进程的情况.这是因为Zabbix A ...

  4. 【每日一题】【队列的实现类】【每层元素个数】2022年1月11日-NC15 求二叉树的层序遍历

    描述给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7}, 注意:每一层上元素的个数 解答: import java.util ...

  5. Qt栅格布局、ScrollArea和用户选择界面

    用户选择界面 就我们在实际开发的时候可能需要面对这样一个界面 做个demo试试看 其实我们可以分解一下这个界面 就是除了控制相关的内容,最主要的就是这个界面之上,有一个个动态的输入的控件,上面都是学生 ...

  6. python 中变量的命名规则与注释

    变量命名规则 1.变量名必须是大小写英文字母.数字或下划线 _ 的组合,不能用数字开头,并且对大小写敏感 2.关键字不能用于命名变量,关键字一共有35个,以下为关键字的获取 注释 代码注释提高了代码的 ...

  7. uniapp微信小程序 下拉刷新(上拉请求下一页数据)

    <template>标签中: <view class="" v-if="daShow==1"> <view class=" ...

  8. 音乐解锁工具v1.10.3,QQ音乐,网易云,酷狗音乐格式转换工具,ncm转mp3,kgm转mp3,kgma转mp3,mgg转mp3,mflac转mp3,qmc转mp3,xm转mp3,kwm转mp3

    现在主流的听歌软件开会员听歌和下载单曲已经是两套业务了,即使开了会员下载的单曲也只能用固定的播放器进行播放,不能使用其他软件播放. 目前QQ音乐.网抑云音乐.酷狗等会员歌曲下载后都不再是传统的音频文件 ...

  9. 《STL源码剖析》Sort排序分析

    整体而言: sort算法在数据量大时采用Quick Sort(快速排序),一旦分段后的数据量小于某个门槛,为避免Quick Sort的递归调用带来过大的额外负担,就改用Insertion Sort(插 ...

  10. Mac上安装brew的那些坑

    macOS11.1 入坑! 网上看了一下午的帖子,包括官网,重装command line tool,修改brew_install文件,报错443,Faild during:git getch错误 脱坑 ...