Linux入门攻坚——27、httpd2.4配置使用、lamp基础

news2024/10/8 22:17:09

CentOS 7上,httpd已经到了2.4版本,新增了很多新特性:

(1)MPM支持运行DSO机制;以模块形式按需加载
(2)支持event MPM;
(3)支持异步读写;
(4)支持每模块及每个目录分别使用各自的日志级别;
(5)每请求配置:<If>
(6)增强版的表达式分析器;
(7)支持毫秒级的KeepAlive timeout;
(8)基于FQDN的虚拟主机不再需要NameVirtualHost指令;
(9)支持用户自定义变量;

新模块:
(1)mod_proxy_fcgi
(2)mod_ratelimit
(3)mod_remoteip

修改了一些配置机制:
  不再支持使用Order,Deny,Allow来做基于IP的访问控制;

安装httpd-2.4

httpd2.4依赖于apr-1.4+,apr-util-1.4+,[apr-icon],即对版本有要求,要求1.4及以上版本
  apr:apache portable runtime,类似虚拟机,隐藏底层操作系统的差异。

CentOS 6上编译安装步骤
  1.4+版本的apr和apr-util

前提:安装开发环境,安装pcre-devel
(1)apr
  # ./configure --prefix=/usr/localapr
  # make && make install

(2)apr-util
  # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
  # make && make install

  # groupadd -r apache
  # useradd -r -g apache apache
  # ./configure --prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
  # make && make install

启动服务:apachectl

实操:
1)确保Development tools和Server Platform Development包组安装:

2)安装pcre-devel:

3)编译安装apr:
 # tar -xvf apr-1.7.4.tar.bz2 
 # ./configure --prefix=/usr/local/apr17
 # make && make install

4)编译安装apr-util:
 # tar -xvf 
 # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr17
 # make && make install


make && make install时出现错误,大致是缺少xml解析器,安装expat-devel包
yum install expat-devel -y

 重新make && make install

5)编译安装httpd2.4
增加用户和组:
 # groupadd -r apache
 # useradd -r -g apache apache
 # ./configure --prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr17 --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork
 # make && make install

安装时出现错误:

查找资料后,原因是CENTOS 是 64bit的,在编译配置中并没有指定 --with-included-apr的具体引用路径,导致找不到相应的库文件,而 --with-included-apr 默认是查找/usr/lib下的库文件,正确的引用应该是安装的apr的库文件,在第3步中安装的位置。这类情况在64bit下非常常见。

上面的方法还是不对,再次解决:
需要安装libxml2-devel
yum install -y libxml2-devel
然后删除apr-util重新编译安装,也需要重新编译安装httpd
rm -rf /usr/local/apr-util
cd ~/apr-util-1.6.3 
清缓存:make clean
然后重新配置安装
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr17
编译并安装:make && make install

然后重新安装httpd2.4成功。

6)启动服务
编译安装的服务,没有管理脚本,使用apache自己提供的管理器:
apachectl

注意,启动后测试,总也访问不到网页,需要关闭防火墙:service iptables stop

CentOS 7上安装httpd2.4

CentOS7默认的httpd就是2.4,所以使用yum安装即可
yum install httpd

配置文件多了conf.modules.d目录,用于模块的配置。

配置文件:
  主配置文件:/etc/httpd/conf/httpd.conf
  模块配置文件:/etc/httpd/conf.modules.d/*.conf
  辅助配置文件:/etc/httpd/conf.d/*.conf

mpm:以DSO机制提供,配置文件00-mpm.conf

启动:systemctl start httpd.service

启动出现错误:

原因:修改了00-mpm.conf中的配置,由默认的使用prefork改为使用event,就出错了,使用prefork没有问题。
网上解决方法是在主配置中加上LoadModule php5_module modules/libphp5.so
但是语法检查提示: 

php5不支持线程安全,而worker和event都是运行在线程模式下。所以,如果需要worker和event模式,需要升级php。

CentOS 7上安装httpd2.4

CentOS7默认就是安装httpd2.4,使用yum进行安装:
yum install httpd -y
服务控制:systemctl {start | stop | restart | status | reload } httpd.service

配置:
1)切换使用MPM
  LoadModule mpm_NAME_module modules/mod_mpm_NAME.so
    NAME:prefork、event、worker
2)修改‘Main’ server 的DocumentRoot
3)基于IP的访问控制法则
  允许所有主机访问:Require all granted
  拒绝所有主机访问:Require all deny
    控制特定IP访问:
      Require ip IPADDR:授权指定来源地址的主机访问
      Require not ip IPADDR:拒绝指定来源地址的主机访问
      IPADDR:
        IP:192.168.138.2
        Network/mask:192.168.138.0/255.255.255.0
        Network/length:192.168.138.0/24
        Net:192.168.138
    控制特定主机(HOSTNAME)访问
      Require host HOSTNAME
      Require not host HOSTNAME
      HOSTNAME:
        FQDN:特定主机
        DOMAIN:指定域内的所有主机

  上述控制语句要放在一个容器中,如下拒绝192.168.138.1访问:
    <RequireAll>
        Require all granted
        Require not ip 192.168.138.1
    </RequireAll>

配置文件:一般使用模块化配置,即主配置文件中使用Include或IncludeOptional包含一些配置目录,在目录中按不同功能或用途模块化配置,便于管理。如conf.d目录和conf.modules.d目录。

  4)虚拟主机
    基于IP、Port和FQDN都支持
    基于FQDN的不再需要NameVirtualHost指令;

  5)ssl
    启用模块:LoadModule ssl_module modules/mod_ssl.so

实操:
默认配置,DocumentRoot是/var/www/html,访问控制是所有IP都可访问

修改DocumentRoot “/var/www/html”为“/www/htdocs”,在此目录下新建index.html,测试访问:

只修改DocumentRoot,没有增加<Directory "/www/htdocs">,默认就是拒绝。
修改配置文件:
  <Directory "/www/htdocs">
       Require all granted
  </Directory>
可以访问到。注意,对于CentOS7,不仅要关闭iptables,还要关闭selinux,即setenforce 0
  <RequireAll>
        Require all granted
        Require not ip 192.168.138.1
    </RequireAll>
此时,192.168.138.1就不能访问了,而其他主机依然可以访问。

  6)CentOS 6服务脚本
拷贝httpd2.2的httpd服务脚本,进行一下修改,即/etc/rc.d/init.d/httpd

脚本做好后,执行:
chkconfig --add httpd24
查看启动级别
chkconfig --list
chkconfig httpd24 on
service httpd24 start

LAMP
  L:Linux,A:Apache,M:mariadb、mysql,P:php、perl、python

  LAMMP:memcached

静态资源:静态内容,客户端从服务器获得的资源的表现形式与原文件相同;
动态资源:通常是程序文件,需要在服务器执行之后,将执行的结果返回给客户端;

CGI:Common Gateway Interface,通用网关接口
FASTCGI

HTTPD与解析器之间可以通过共享内存或是消息队列等通信,解析器功能可以单独独立出来,然后与httpd之间通过套接字通信。

安装:
yum install php php-mysql mariadb

启动mariadb服务:systemctl start mariadb.service

连接数据库:

http+php三种方式,modules最常用
  modules、  cgi、  fastcgi(fpm)

在DocumentRoot目录下新建index.php文件,内容:
<?php
    phpinfo();
?>

浏览器中访问:

php连接mariadb:

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

搭建wordpress4.5
1、下载 wordpress-4.5.31-zh_CN.tar.gz,解压:tar xf  wordpress-4.5.31-zh_CN.tar.gz
2、拷贝解压后的wordpress目录至/www/htdocs/wordpress45/  :cp -r wordpress/ /www/htdocs/wordpress45/
3、拷贝wp-config-sample.php为wp-config.php,wordpress的配置文件
4、配置数据库:使用mariadb
    create database wp45db;
    grant all on wp45db.* to 'wp45user'@'localhost' identified by '123456';
    grant all on wp45db.* to 'wp45user'@'127.0.0.1' identified by '123456';
    flush privileges;
5、配置wp-config.php
    define('DB_NAME', 'wp45db');
    define('DB_USER', 'wp45user');
    define('DB_PASSWORD', '123456');
    define('DB_HOST', 'localhost');
6、在浏览器中输入地址,进行wordpress45的安装:

    配置站点名称、站点管理用户和密码,点击安装即可
7、

问题:第一次使用的是wordpress4.9版本,输入地址总是弹出phpinfo()信息。

登录页面显示:

无法登录。

安装phpMyAdmin管理mysql,是mariadb的WebGUI

1、下载phpMyAdmin-4.4.15-all-languages.tar.bz2,解压缩,tar xf phpMyAdmin-4.4.15-all-languages.tar.bz2 -C /www/htdocs/
2、解压后形成/www/htdocs/phpMyAdmin-4.4.15-all-languages目录。
3、目录过长,创建链接文件:ln -sv phpMyAdmin-4.4.15-all-languages/ pma44
4、cp config.sample.inc.php config.inc.php ,通过配置模板文件,创建一个配置文件,修改配置文件:

5、访问:提示缺少mbstring,安装

注意,这个程序包需要CentOS-7-x86_64-Everything-光盘。
安装完毕后,重新启动httpd,再次访问

6、修改mariadb用户密码:phpMyAdmin需要密码登录。

登录后:

需要注意的是:在安装wordpress以及phpMyAdmin时,因为CentOS7默认安装的PHP以及mysql(mariadb)版本都较低,所以对应的应用系统也要低版本的,使用高版本会出现很多错误。

php解析器如何与MariaDB交互

解析器无需与MariaDB交互,那些用到数据存储系统的程序才需要与数据存储交互;
存储系统:
  文件系统:文件
  SQL:MariaDB,Oracle,MSSQL,。。。
  NoSQL:redis,mongodb,hbase,。。。
  NewSQL:

PHP简单了解

Zend Engine (PHP的解析器,新开发)—— Zend opcode (类似Java的字节码)
PHP加速器:
  APC(Alternative PHP Cache)、eAccelerator、XCache、Zend Optimizer和Zend Guard Loader、NuSphere PhpExpress

安装加速器xcache:
yum install php-xcache

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

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

相关文章

微服务+云原生:打造高效、灵活的分布式系统

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《未来已来&#xff1a;云原生之旅》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、云原生概述 2、微服务概述 二、微服务架构基础 1、…

ADS SIPro使用技巧之数据分坐标轴显示

在SIPro data display页面中显示数据时&#xff0c;逐个显示数据非常地麻烦&#xff0c;可读性也较差&#xff1b; 常规的做法&#xff0c;是将数据拖入到一个显示窗口中进行显示&#xff0c;但是&#xff0c;当数据量较多或者各数据之间的数值差异较大时&#xff0c;可视化效果…

大模型管理平台:one-api使用指南

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 大模型应用向开发路径&#xff1a;AI代理工作流大模型应用开发实用开源项目汇总大模…

想让梦想照进现实?六西格玛绿带培训为你架起桥梁

六西格玛&#xff0c;这个源自摩托罗拉的质量管理方法论&#xff0c;如今已成为全球众多企业追求卓越的秘诀。它强调以数据为基础&#xff0c;通过减少变异和浪费&#xff0c;提高流程效率和质量&#xff0c;进而提升企业整体绩效。而六西格玛绿带培训&#xff0c;则是这个强大…

书籍论坛系统

摘 要 本论文基于JavaWeb技术&#xff0c;旨在设计和实现一个功能完善的书籍论坛系统。随着互联网的快速发展&#xff0c;人们对于获取和分享知识的需求日益增加。书籍论坛系统作为一种在线交流平台&#xff0c;为用户提供了一个便捷的方式来讨论、分享和借阅书籍。通过该系统…

[leetcode]rotate-array 轮转数组

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:void reverse(vector<int>& nums, int start, int end) {while (start < end) {swap(nums[start], nums[end]);start 1;end - 1;}}void rotate(vector<int>& nums, int k) {k % num…

等保1.0与2.0:物理环境安全的演进之路

在信息安全的大厦中&#xff0c;物理环境安全是那坚实的基础&#xff0c;承载着整个信息系统的稳定与安全。随着时间的推移&#xff0c;我国的信息安全等级保护标准也在不断地进化与完善&#xff0c;从等保1.0到等保2.0&#xff0c;不仅仅是数字上的递增&#xff0c;更是对物理…

电子元器件RoHS认证:环保与质量的双重保障

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/139954415 红胖子(红模仿)的博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

openEuler离线安装nginx

目录 1.创建储存目录 2.切换到储存目录 3.首先在外网的环境下下载nginx的rpm包 4.目录打包tar包拷贝到离线路径 5.安装nginx 6.启动 nginx 7.停止 nginx 8.重新加载 nginx 配置 9.重新启动 nginx&#xff08;先停止再启动 nginx&#xff09; 10.检查 nginx 服务…

『亚马逊云科技产品测评』程序员最值得拥有的第一台专属服务器 “亚马逊EC2实例“

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 引言 自2006年8月9日&#xff0c;在搜索引擎大会&#xff08;SES San Jo…

视频智能分析平台LntonAIServer视频监控系统工业排污检测算法算法价值

LntonAIServer工业排污检测算法是一种集成了先进的人工智能、图像识别、数据分析和深度学习技术的解决方案&#xff0c;专门用于实时监测和评估工业排污情况。以下是关于该算法的详细解释&#xff1a; 1. 技术特点 实时监测&#xff1a;算法能够实时监测工业排污行为&#xff…

4_FOC之Clarke变换原理及推导_1

三相PMSM的数学模型是一个比较复杂且强耦合的多变量系统。为了便于后期控制器设计&#xff0c;必须选择合适的坐标变换对数学模型进行降阶和解耦变换。 1、什么是Clark变换 静止abc轴系与αβ轴系如上图。为满足功率不变约束&#xff0c;在图中设αβ轴系中定子绕组以及转子绕组…

并发编程理论基础——合适的线程数量和安全的局部变量(十)

多线程的提升方向 主要方向在于优化算法和将硬件的性能发挥到极致想要发挥出更多的硬件性能&#xff0c;最主要的就是提升I/O的利用率和CPU的利用率以及综合利用率操作系统已经解决了磁盘和网卡的利用率问题&#xff0c;利用中断机制还能避免 CPU 轮询 I/O 状态&#xff0c;也提…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《兼顾配电网韧性提升的电动汽车换电站容量优化配置方法 》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

土耳其-加拉太塔

加拉太塔&#xff08;Galata Tower&#xff09;是位于土耳其-伊斯坦布尔的一个著名地标&#xff0c;它提供了城市的壮丽全景。如果有计划前往这座塔楼打卡的话&#xff0c;可以先了解下这座历史悠久的塔楼&#xff0c;让自己感兴趣&#xff0c;才能体会到它的独特之处&#xff…

Linux基础 - RAID 与 LVM 磁盘阵列技术

目录 零. 简介 一. RAID 二. LVM 三. 总结 零. 简介 在 Linux 中&#xff0c;RAID&#xff08;Redundant Array of Independent Disks&#xff0c;独立磁盘冗余阵列&#xff09;和 LVM&#xff08;Logical Volume Manager&#xff0c;逻辑卷管理器&#xff09;是两种常用的…

PointCloudLib NDT3D算法实现点云配准 C++版本

0.实现效果 效果不咋好 ,参数不好调整 1.算法原理 3D NDT(Normal Distributions Transform)算法是一种用于同时定位和地图生成(SLAM)的机器人导航算法,特别适用于三维点云数据的配准。以下是关于3D NDT算法的详细解释: 算法原理 点云划分与分布计算:3D NDT算法首先将…

VS2019中解决方案里的所有项目都是 <不同选项> 的解决方案

以上等等&#xff0c;全部是 <不同选项>。。。 这样的话&#xff0c;如何还原和查看原有的值呢&#xff0c;就这么丢失掉了吗&#xff1f; 不会&#xff0c;需要解决方案里配置一下。 解决&#xff1a; 解决方案右键属性 -> 配置属性 -> 配置 -> 将所有配置改…

Qt | 子类化 QStyle(Qt自带图标大全)

01、简介 1、把绘制自定义部件外观的步骤大致分为三大板块,如下: ①、样式元素:即指定需要绘制的图形元素(比如焦点框、按钮,工具栏等)。样式元素使 用 QStyle 类中的一系列枚举(共有 11 个枚举)进行描述。 ②、样式选项:包含了需要绘制的图形元素的所有信息,比如包含…

使用AES,前端加密,后端解密,spring工具类了

学习python的时候&#xff0c;看到很多会对参数进行加密&#xff0c;于是好奇心驱使下&#xff0c;让我去了解了下AES加密如何在java中实现。 首先 npm install crypto-js 然后在你的方法中&#xff0c;给你们前端源码看看&#xff0c;因为我用的ruoyi框架做的实验&#xff…