APR、apache编译安装、LAMP、CGI、常见LAMP应用

本文详细介绍了Apache可移植运行库(APR)的作用及其在多操作系统平台上的应用,同时深入探讨了LAMP架构,包括Linux、Apache、MySQL/MariaDB、PHP等组件的相互作用与配置过程。

APR

APR(Apache portable Run-time libraries,Apache可移植运行库) 主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早期的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数

随着Apache的进一步开发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已。目前APR主要还是由Apache使用,由于APR的较好的移植性,因此一些需要进行移植的C程序也开始使用APR,开源项目比如用于服务器
压力测试的Flood loader tester

apache编译安装

这里介绍2.4版本的编译安装
首先从官网下载3个压缩包
httpd-2.4.39.tar.bz2
apr-util-1.6.1.tar.bz2
apr-1.7.0.tar.bz2
下面开始编译安装

1.安装开发组包和必要的包,如果已安装则跳过

yum -y groupinstall "Development Tools" 
yum -y install pcre-devel openssl-devel expat-devel

2.创建用户账户、设置环境变量,如果要编译到指定路径也提前建好

mkdir /app
useradd -r -s /sbin/nologin apache
echo 'export PATH=$myDir/bin:\$PATH' > /etc/profile.d/httpd.sh

3.解压压缩包

解压完成后会有三个文件夹,需要整理后才能开始编译
httpd-2.4.39
apr-util-1.6.1
apr-1.7.0

挪动文件夹
mv apr-util-1.6.1 httpd-2.4.39/srclib/apr-util
mv apr-1.7.0 httpd-2.4.39/srclib/apr

4.开始编译安装

./configure \
--prefix=/app/httpd \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-included-apr \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork && make && make install

5.修改权限

chown -R apache:apache /app/httpd

6.编写启动脚本,或者直接把bin目录下的httpd拿来修改后使用

#!/bin/bash
function start_http()
{
/app/httpd/bin/apachectl  start
}
function stop_http()
{
/app/httpd/apache2/bin/apachectl  stop
}
case "$1" in
start)
    start_http
;;  
stop)
    stop_http
;;  
restart)
    stop_http
    start_http
;;
*)
    echo "Usage : start | stop | restart"
;;
esac

至此编译安装完成

LAMP

LAMP:
L: linux
A: apache (httpd)
M: mysql, mariadb
M:memcached
P: php, perl, python

httpd:接收用户的web请求;静态资源则直接响应;动态资源为php脚本,
对此类资源的请求将交由php来运行
php:运行php程序
MariaDB:数据管理系统
http与php结合的方式

CGI
FastCGI
modules (将php编译成为httpd的模块,默认方式)

MPM:
prefork: libphp5.so
event, worker: libphp5-zts.so

CGI

CGI:Common Gateway Interface
可以让一个客户端,从网页浏览器通过http服务器向执行在网络服务器上的程序传输数据;CGI描述了客户端和服务器程序之间传输的一种标准

请求流程:
Client – (httpd) --> httpd – (cgi) --> application server (program file) – (mysql) --> mysql

php: 脚本编程语言、嵌入到html中的嵌入式web程序语言基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境)

常见LAMP应用

PhpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库

WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可把 WordPress当作一个内容管理系统(CMS)来使用

PHPWind:2003年发布了PHPWind的前身版本ofstar,并发展成为包含BBS、
CMS、博客、SNS等一系列程序的通用型建站软件, 于2008年加入阿里巴巴集团

Crossday Discuz! Board(简称 Discuz!)是一套通用的社区论坛软件系统。自2001年6月面世以来,是全球成熟度最高、覆盖率最大的论坛软件系统之一。2010年8月23日,与腾讯达成收购协议

ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。2006年6月,ECShop推出第一个版本1.0

### Apache Portable Runtime (APR) 介绍 Apache Portable Runtime (APR) 是一个由 Apache 软件基金会开发的开源库集合,旨在提供一组可移植的功能接口,用于支持跨不同操作系统的应用程序开发[^3]。这些功能涵盖了文件 I/O、网络通信、内存管理以及线程处理等多个方面。 #### 主要特点 APR 的设计目标是简化开发者在多种操作系统上的编程工作。它提供了统一的应用程序接口(API),使得开发者无需关心底层操作系统的具体实现细节。以下是其主要特性: - **跨平台兼容性**:无论是在 Windows、Linux 还是 macOS 上运行,APR 都能屏蔽掉底层差异,使代码更加通用化[^1]。 - **高效性能**:经过优化后的函数调用能够显著提升应用效率,在资源受限环境中尤为重要[^2]。 - **模块化结构**:整个框架被划分为多个子组件,比如核心库 (`apr`) 和附加扩展包 (`apr-util`)。 #### 安装与获取方式 用户可以通过官方提供的链接访问源码仓库并完成项目的克隆或下载过程。对于希望快速上手的新手来说,可以从这里找到最新的稳定版本发布信息: - GitHub 地址: [点击进入](https://github.com/apache/apr/releases/latest) - GitCode 备份站点: [镜像地址](https://gitcode.com/gh_mirrors/apr4/apr) 此外还附带详细的文档说明帮助理解如何配置环境变量以及编译选项等内容。 #### 使用场景举例 假设我们需要编写一个多线程服务器程序,则可以利用到如下几个方面的 API 支持: ```c #include <stdio.h> #include "apr_general.h" #include "apr_thread_proc.h" int main() { apr_pool_t *pool; // 初始化内存池 apr_initialize(); atexit(apr_terminate); apr_pool_create(&pool, NULL); printf("Initialized successfully.\n"); // 创建新线程... return 0; } ``` 上述例子展示了初始化阶段创建内存池的过程,这是任何基于 APR 构建的应用都必不可少的第一步。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值