Apache

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。

前言

Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。


一、安装httpd

主流网站服务器软件:

   Apache:时间较早,模块化设计,几乎可以运行在所有操作系统上,性能稳定;配置相对复杂,自身无法解析动态网页。

   nginx:高性能、高并发的网站和反向代理服务器,也可做邮件代理,阿里再开发tengine应用于天猫和淘宝。

   tomcat:java应用服务器,也是servlet容器,可以认为是Apache的扩展,可以独立运行,也可以和Apache合作。

   Apache与nginx的区别:

       nginx:配置简洁、反向代理、负载均衡、静态数据处理能力是Apache3倍以上,消耗内存少。

       Apache:跨所有平台、支持通用网关接口(cgi)、支持多种动态网站语言(php,python,perl,java),模块组件比nginx多,运行稳定;配置复杂

     

Apache2.4版本



   新特性:

       1、MPM 支持在运行时装载;不过要开启这种特性,在编译安装要启用这三种功能;

           --enable-mpms-shared=all --with-mpm=event

       2、支持 event

       3、支持异步读写

       4、在每个模块及每个目录上指定日志级别

       5、增强版的表达式分析器

       6、每请求配置:<If>, <Elseif>

       7、毫秒级别的 keepalive timeout

       8、基于 FQDN 的虚拟主机不再需要 NameVirtualHost 指令

       9、支持使用自定义变量


Apache安装步骤:

1.检查是否已安装rpm包httpd

   rpm -q httpd            \\查看是否安装

   rpm -e httpd --nodeps    \\卸载已安装的程序


2.安装前提软件

把软件复制到虚拟机的/usr/src目录下或直接下载到虚拟机

如果编译安装无法执行,可能是开发软件工具没有安装,需要先安装开发软件:命令如下

   yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel

编写脚本安装前提软件:

mkdir /sh

cd /sh

vim qianti.sh

添加:

#!/bin/bash

cd /usr/src

tar zxf apr-1.5.2.tar.gz

cd apr-1.5.2

./configure --prefix=/usr/local/apr && make && make install


cd ..

tar zxf apr-util-1.5.4.tar.gz

cd apr-util-1.5.4

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install


cd ..

yum -y install zlib-*


tar zxf pcre-8.39.tar.gz

cd pcre-8.39

./configure --prefix=/usr/local/pcre && make && make install


cd ..

tar zxf openssl-1.0.1u.tar.gz

cd openssl-1.0.1u

./config -fPIC --prefix=/usr/local/openssl enable-shared && make && make install

保存退出


执行脚本:sh qianti.sh    


安装Apache主程序

cd /sh

vim httpd.sh

添加:

#!/bin/bash

cd /usr/src

tar zxf httpd-2.4.25.tar.gz

cd httpd-2.4.25

./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-cgid --enable-ssl --with-ssl=/usr/local/openssl --enable-rewrite --with-pcre=/usr/local/pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --enable-proxy --enable-proxy-fcgi --enable-expires --enable-deflate && make && make install


保存退出


优化链接

ln -s /usr/local/httpd/bin/* /usr/local/bin


添加系统服务

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

vim /etc/init.d/httpd

定位到第二行:修改为

# chkconfig: 35 85 15            \\声明服务启动级别,开机启动顺序,关机关闭顺序

# description: apache 2.4.25    \\服务声明,简要信息

保存退出

chkconfig --add httpd            \\添加httpd到系统服务

chkconfig httpd on                \\设置服务开机自启(等同于:systemctl enable httpd)

systemctl start httpd            \\开启服务(等同于:service httpd start)


查看httpd模块

httpd -V    \\查看版本和已装模块

httpd -l    \\只查看静态编译模块

httpd -M     \\查看所有模块


MPM(Multi Process Modules):多进程处理模块

   负责实现网络监听、请求的处理等功能,目的为了在不同的平台上实现最优化的性能和稳定性。

   操作系统平台            MPM

       BeOS                beos

       NetWare                mpm_netware

       OS/2                mpm_os2

       linux                prefork、worker、event

       Windows                mpm_winnt


prefork模式:

   非线程、预生成进程型MPM,一个子进程同一时间点仅能处理一个用户请求,根据并发请求数动态调整子进程

 worker模式:

   线程化、多进程型MPM,每个进程可生成多个线程,每个线程处理一个请求,缺点:长连接,资源容易被占用

 event模式:

   worker的改进版,使用监控线程处理长连接出现的资源占用问题


修改mpm配置文件

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

Include conf/extra/httpd-mpm.conf    去除#号


systemctl restart httpd    


vim /usr/local/httpd/conf/extra/httpd-mpm.conf

<IfModule mpm_event_module>

StartServers 3                 #apache 启动时候默认开始的子进程数

MinSpareThreads 75            #最小空闲数量的工作线程

MaxSpareThreads 250            #最大空闲数量的工作线程

ThreadsPerChild 25            #每个子进程产生的线程数量

MaxRequestWorkers 400        #允许同时的最大接入请求数量

MaxConnectionsPerChild 0    #每个子进程可处理的请求数

</IfModule>


#企业推荐参数

<IfModule mpm_worker_module>

StartServers          2 #推荐设置:小=默认 中=3~5 大=5~10

MaxClient

使用ab压力测s          150 #推荐设置:小=500 中=500~1500 大型=1500~3000

MinSpareThreads      25 #推荐设置:小=默认 中=50~100 大=100~200

MaxSpareThreads      75 #推荐设置:小=默认 中=80~160 大=200~400 ThreadsPerChild      25 #推荐设置:小=默认 中=50~100 大型=100~200

MaxRequestsPerChild   0 #推荐设置:小=10000 中或大=10000~50000(此外,如果MaxClients/ThreadsPerChild大于16,还需额外设置ServerLimit参数,ServerLimit必须大于等于 MaxClients/ThreadsPerChild 的值。)

</IfModule>


使用ab命令进行压力测试

yum -y install httpd-tools

ab -c 1000 -n 10000 http://192.168.1.102/index.html   试命令进行160人并发访问,发出10000个请求。


安装mysql

1.复制mysql5.6-rpm到虚拟机/root

cd /root/mysql5.6-rpm

yum -y localinstall *.rpm

systemctl start mysqld

systemctl enable mysqld


安装php

1.安装前提软件

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum -y install  libxml2-devel lzip2-devel libcurl-devel libmcrypt-devel openssl-devel bzip2-devel


2.复制libmcrpt和php包到/usr/src,安装libmcrypt加密工具

cd /usr/src

tar zxf libmcrypt-2.5.7.tar.gz

cd libmcrypt-2.5.7/

./configure --prefix=/usr/local/libmcrypt && make && make install


3.安装php

cd /usr/src

tar zxf php-5.6.27.tar.gz

cd php-5.6.27/

./configure --prefix=/usr/local/php5.6 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts && make && make install


4.提供 php 配置文件

cp /usr/src/php-5.6.27/php.ini-production /etc/php.ini


5.为 php-fpm 提供脚本

cd /usr/src/php-5.6.27/

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

chmod +x /etc/init.d/php-fpm

chkconfig --add php-fpm

chkconfig php-fpm on


6.提供 php-fpm 配置文件并编辑

cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf

7.启动php-fpm服务

systemctl start php-fpm


测试Apache与php的静/动分离

1.启用Apache服务的代理转发

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

找到下面三行,去除#号:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

Include conf/extra/httpd-vhosts.conf


找到AddType所在行,添加:

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps


定位至 DirectoryIndex,改为:

DirectoryIndex index.php index.htm

保存退出

systemctl restart httpd


2.配置虚拟主机文件

vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

改为:

<VirtualHost *:80>

ServerAdmin webmaster@benet.com

DocumentRoot "/var/www/benet"

ServerName www.benet.com

ServerAlias benet.com

ErrorLog "logs/benet.com-error_log"

CustomLog "logs/benet.com-access_log" common

ProxyRequests Off

ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/benet/$1


<Directory "/var/www/benet">

Options FollowSymLinks

AllowOverride None

Require all granted

</Directory>

</VirtualHost>

保存退出


3.测试

(1)mysql服务器,创建测试数据库用户

mysql    \\登录数据库命令

grant all on *.* to testuser@'%' identified by '123456';


(2)在 php 服务器上的/var/www/benet 目录下创建.php 的测试页:

vim  /var/www/benet/index.php

添加:

<?php

phpinfo();

?>

保存退出


(3)在mysql服务器上测试访问Apache,会出现php内容


部署Discuz论坛

(1)复制Discuz包到apache和php服务器的/var/www/benet目录,解压并重命名赋权(步骤一样)

mkdir -p /var/www/benet

unzip Discuz_X3.3_SC_UTF8.zip

mv upload/ /var/www/benet/bbs

chmod -R 777 /var/www/benet/bbs


(2)在php服务器修改配置文件,重启服务

vim /etc/php.ini

找到下行并改为:

short_open_tag = On

保存退出

service php-fpm restart


(3)在mysql服务器上创建bbs数据库及用户(下面ip为本机ip)

mysql> create database bbsdb;

mysql> grant all on bbsdb.* to runbbs@'192.168.8.10' identified by 'pwd@123';


(4)访问Apache,安装discuz论坛

http://192.168.8.10/bbs


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
存储 关系型数据库 MySQL
MySQL——数据库备份上传到阿里云OSS存储
MySQL——数据库备份上传到阿里云OSS存储
612 0
|
存储 C语言 Windows
音视频使用qt测试ffmpeg接口时无法运行
音视频使用qt测试ffmpeg接口时无法运行
339 0
|
Java 计算机视觉
Java调用opencv图片矫正
Java调用opencv图片矫正
1063 0
|
3月前
|
Ubuntu 安全 Linux
Linux系统入门指南:从零开始学习Linux
Shell脚本是一种强大的自动化工具,可以帮助您简化重复的任务或创建复杂的脚本程序。了解Shell脚本的基本语法和常用命令,以及编写和运行Shell脚本的步骤,将使您更高效地处理日常任务。
435 0
|
前端开发 API 数据库
介绍一下Flask的使用方法
介绍一下Flask的使用方法
|
Java Apache PHP
Apache
Apache
390 5
|
NoSQL 网络协议 Redis
Nomad 系列 -Nomad 网络模式
Nomad 系列 -Nomad 网络模式
|
Python
Tkinter学习笔记(一):完成文件选择和保存对话框
关于如何使用Python的Tkinter库来创建文件选择和保存对话框的教程。
350 2
|
缓存 网络协议 安全
【常见开源库的二次开发】HTTP之libcurl库——基础知识扫盲(一)
【常见开源库的二次开发】HTTP之libcurl库——基础知识扫盲(一)
645 1
|
Ubuntu 开发工具 git
在Ubuntu上部署BOA服务器的步骤
部署BOA服务器是一个涉及多个步骤的过程,包括系统更新、安装依赖、下载和编译源代码、配置服务器以及启动和验证。遵循上述步骤,可以在Ubuntu系统上成功部署BOA服务器,为开发和测试提供一个轻量级的Web服务器环境。
450 0