第15周作业 http和lamp

1、写出 MPM multi-processing module 工作模式原理以及区别

 回答:工作模式共有三种prefork ,worker和event。

prefork模式:非线程、预派生的服务器模型。此模式在apache进程启动之前就已经提前开启一些子进程(子进程数量可以通过httpd.conf配置文件提前进行设置),每个子进程只有一个线程,每个线程只能处理一个进程,不适合处理高并发的场景。

<ifmodule mpm_prefork_module>

    StartServer   5     #默认启动的子进程数量

    MinSpareServer    10   #最少空闲进程个数

    MaxspareServer    15    #最多空闲进程个数

    MaxRequestWorkers    290     #同一时间内最大的请求数量

    MaxConnectionsPerchild     90    #一个子进程可接受的最大请求数量,如果此进程接受请求达到此值时,将会结束此子进程。

</ifmodule>

  

worker:采用了多进程和多线程的混合模式,也同样会先预派生一些子进程,然后每个子进程创建一些线程,每个请求过来会被分配到一个线程来服务。内存的占用会减少一些,在高并发的场景下会比prefork有更多可用的线程;另外,如果一个线程出现了问题也会导致同一进程下的线程出现问题,如果是多个线程出现问题,也只是影响Apache的一部分,而不是全部。

 event:此模式和worker模式很像,不同的是在于它解决了keep-alive长连接的时候占用线程资源被浪费的问题,在event工作模式中,会有一些专门的线程用来管理这些keep-alive类型的线程,当有其他请求时,将请求传递给服务器的线程,执行完毕后,又允许它释放。这增强了在高并发场景下的请求处理。

<ifmodule mpm_event_module>

    StartServer   5     #默认启动的子进程数量

    serverlimit   6

    MinSpareThreads    10   #最少空闲进程个数

    MaxspareThreads    15    #最多空闲进程个数

    ThreadsPerChild     30    #每个子进程开启的线程数量

    MaxRequestWorkers    290     #同一时间内最大的请求数量

    MaxConnectionsPerChild   1000    #一个子进程可接受的最大请求数量,如果此进程接受请求达到此值时,将会结束此子进程。

</ifmodule>

    

2、编译安装httpd 2.4 

vim install_httpd.sh

#!/bin/bash
#********************************************************************
#Author:	liuhuiran
#QQ: 112182****
#Date: 2020-09-09
#FileName:	install_http.sh
#Description:	The test script
#Copyright (C): 2020 All rights reserved
#********************************************************************
Apr=apr-1.7.0
Apru=apr-util-1.6.1
Httpd=httpd-2.4.46

#安装依赖包
yum -y install wget bzip2 gcc make pcre-devel openssl-devel expat-deve &> /dev/null
#下载源代码并解压缩
wget https://downloads.apache.org//apr/apr-1.7.0.tar.bz2
wget https://downloads.apache.org//apr/apr-util-1.6.1.tar.bz2 
wget https://downloads.apache.org//httpd/httpd-2.4.46.tar.bz2

tar xf $Apr.tar.bz2
tar xf $Apru.tar.bz2
tar xf $Httpd.tar.bz2

#编译安装apr
cd $Apr
./configure --prefix=/app/apr
make && make install

#编译安装apr-util
cd ../$Apru
./configure --prefix=/app/apr-util --with-apr=/app/apr/
make && make install

#编译安装httpd
cd ../$http
./configure --prefix=/app/httpd --enable-so --enable-ssl --enable-ssl --with-pcre --with-apr=/app/apr/ --with-apr-util=/app/apr-util/ --enable-mpms-shared=all --with-mpm=prefork
make && make install

#修改环境变量
echo 'PATH=/app/httpd/bin:$PATH' > /etc/profile.d/httpd.sh
. /etc/profile.d/httpd.sh
echo "It works!" > /app/httpd/htdocs/index.html
#开启服务
systemctl start httpd

#开启服务

systemctl start httpd

  

3、编写一个一键部署 LAMP 架构之 wordpress 脚本

#!/bin/bash
#
#********************************************************************
#Author:        liuhuiran
#QQ:            112182****
#Date:          2020-09-11
#FileName:     lamp_wordpress.sh
#Description:      The test script
#Copyright (C):     2020 All rights reserved
#********************************************************************
# 下载相关包
yum -y install wget httpd php php-json php-mysqlnd mariadb-server

# 修改httpd的mpm工作模型为prefork
sed -Ei 's/LoadModule mpm_event_module.*/#&/' /etc/httpd/conf.modules.d/00-mpm.conf
sed -Ei 's/#(LoadModule mpm_prefork_module.*)/\1/' /etc/httpd/conf.modules.d/00-mpm.conf                                                                        

# 开启相应的服务并设置为开机启动
systemctl enable --now httpd mariadb

# 下载wordpress安装包,并将解压缩的目录文件移动到html目录下,修改文件的属性
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
tar xf /latest-zh_CN.tar.gz
mv wordpress /var/www/html/wordpress
chown -R apache.apache /var/www/html/wordpress

# 创建对应的数据库和用户
echo 'create database wordpress;' | mysql
echo "grant all on wordpress.* to wpuser@'localhost' identified by '123456';" | mysql

  

 

posted @ 2020-09-11 20:18  刘六六LHR  阅读(309)  评论(0)    收藏  举报