lamp实验作业详细过程

1、请描述一次完整的http请求处理过程;
由客户端发起请求给服务端,服务端接收到请求后解析http报文内容,把处理完成后的内容反馈给客户端,再将每次请求记录在日志中。
2、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。
prefork:多进程模型,一个进程响应一个请求;
worker:多进程多线程模型,一个线程响应一个请求;
event:事件驱动模型,一个进程响应n个请求;
3、源码编译安装LAMP环境(基于wordpress程序),并写出详细的安装、配置、测试过程。
一、编译安装httpd2.4
(1)编译安装apr-1.5.0,httpd服务依赖于apr跨平台运行环境
[[email protected] apr-1.5.0]# ./configure --prefix=/usr/local/apr
[[email protected] apr-1.5.0]# make -j 4 && make install
(2)编译安装apr-util-1.5.2工具包
[[email protected] apr-util-1.5.2]#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[[email protected] apr-util-1.5.2]# make -j 4 && make install
(3)下载安装pcre-devel包,httpd编译时依赖
(4)编译安装httpd2.4.9
./configure --prefix=/usr/local/apache --sysconfdir=/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=event
1、--prefix=/usr/local/apache (指定安装路径)
2、--sysconfdir=/etc/httpd24 (系统配置文件路径)
3、--enable-ssl (启动ssl功能)
4、--enable-cgi (启动cgi协议)
5、--enable-rewrite (启动url重写)
6、--with-zlib (启动压缩传输)
7、--with-pcre (支持pcre正则表达式)
8、--with-apr=/usr/local/apr (依赖apr指定路径)
9、-with-apr-util=/usr/local/apr-util (依赖apr-util指定路径)
10、--enable-modules=most (启用模块级别,最大)
11、--enable-mpms-shared=all (启动动态模块装载)
12、--with-mpm=event (mpm默认采用event模式)
编辑/etc/httpd/httpd.conf,添加如下行即可:
PidFile "/var/run/httpd.pid"
提供SysV服务脚本/etc/rc.d/init.d/httpd,内容如下:
#!/bin/bash
#

httpd Startup script for the Apache HTTP Server

#

chkconfig: - 85 15

description: Apache is a World Wide Web server. It is used to serve \

HTML files and CGI.

processname: httpd

config: /etc/httpd/conf/httpd.conf

config: /etc/sysconfig/httpd

pidfile: /var/run/httpd.pid

Source function library.

. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/httpd ]; then
. /etc/sysconfig/httpd
fi

Start httpd in the C locale by default.

HTTPD_LANG=${HTTPD_LANG-"C"}

This will prevent initlog from swallowing up a pass-phrase prompt if

mod_ssl needs a pass-phrase from the user.

INITLOG_ARGS=""

Set HTTPD=/usr/sbin/httpd.worker in /etc/sysconfig/httpd to use a server

with the thread-based "worker" MPM; BE WARNED that some modules may not

work correctly with a thread-based MPM; notably PHP will refuse to start.

Path to the apachectl script, server binary, and short-form for messages.

apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
prog=httpd
pidfile=${PIDFILE-/var/run/httpd.pid}
lockfile=${LOCKFILE-/var/lock/subsys/httpd}
RETVAL=0
start() {
echo -n $"Starting $prog: "
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc -p ${pidfile} -d 10 $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
RETVAL=$?
echo $"not reloading due to configuration syntax error"
failure $"not reloading $httpd due to configuration syntax error"
else
killproc -p ${pidfile} $httpd -HUP
RETVAL=$?
fi
echo
}

See how we were called.

case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p ${pidfile} $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f ${pidfile} ] ; then
stop
start
fi
;;
reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl [email protected]
RETVAL=$?
;;
)
echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
exit 1
esac
exit $RETVAL
添加执行权限
chmod +x /etc/rc.d/init.d/httpd
加入服务列表
chkconfig --add httpd
添加环境变量httpd.sh
Vim /etc/profile.d/httpd.sh
export PATH=/usr/local/apache/bin:$PATH
二、mariadb二进制格通用包安装
(1)准备数据目录:
以/mydata/data目录为例;
(2)安装配置mariadb
#useradd -r mysql (添加系统用户mysql,这样被不明用户劫持也不会得到超管权限对系统做出更大的威胁)
#tar xf mariadb-VERSION.tar.gz -C /usr/local
#cd /usr/local
#ln -sv mariadb-VERSION mysql
#cd /usr/local/mysql
#chown -R root:mysql ./

#scripts/mysql_install_db --user=mysql --datadir=/mydata/data (执行数据库安装脚本,指定用户和数据库文件存放物理路径)
#cp support-files/mysql.server /etc/init.d/mysqld (复制服务脚本到system的环境中)
(3) #cp support-files/my-large.cnf /etc/my.cnf
添加三个选项:
datadir = /mydata/data
innodb_file_per_table = ON
skip_name_resolve = ON
(4)启动服务,添加环境变量,/etc/init.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH
执行mysql_secure_installation配置root用户和密码
三、编译安装php-5.4.26
(1) ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --with-apxs2=/usr/local/apache/bin/apxs --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
1、--prefix=/usr/local/php (指定安装路径)
2、--with-mysql=/usr/local/mysql (指定依赖的数据库指定路径)
3、--with-openssl (启动OpenSSL功能)
4、--with-mysqli=/usr/local/mysql/bin/mysql_config (指定mysqli路径)
5、--enable-mbstring (支持多位元组字串)
6、--with-freetype-dir (支持多类字体)
7、--with-jpeg-dir (支持jpeg格式)
8、--with-png-dir (支持png格式)
9、-with-zlib (支持压缩传输)
10、--with-libxml-dir=/usr (支持处理xml)
11、--enable-xml (支持xml功能)
12、--enable-sockets (使php支持sockets方式内部交互)
13、--with-apxs2=/usr/local/apache/bin/apxs (把php编译成httpd的模块)
14、--with-mcrypt (支持加密解密库)
15、--with-config-file-path=/etc (指定php配置文件存放路径)
16、--with-config-file-scan-dir=/etc/php.d (配置文件查询路径)
17、--with-bz2 (支持bz2)
18、--enable-maintainer-zts (为了支持apache的worker或event这两个MPM,编译时使用了--enable-maintainer-zts选项)
Make –j 4 && make install
(2) 为php提供配置文件

cp php.ini-production /etc/php.ini

四、httpd支援php配置

vim /etc/httpd/httpd.conf

1、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
2、定位至DirectoryIndex index.html
修改为:
DirectoryIndex index.php index.html
而后重新启动httpd,或让其重新载入配置文件即可测试php是否已经可以正常使用。
测试index.php与本地mysql的通讯链接
<?php
$conn=mysql_connect(‘127.0.0.1‘,‘root‘,‘root001‘);
if ($conn)
echo "Connect OK!";
else
echo "Failure.";
mysql_close();
?>
五、截图验证
apachectl -t -D DUMP_MODULES

数据库链接成功

PHP测试页面

六、安装wordpress




Ab压力测试,lamp同时部署在一台虚拟机上,并且使用php模块集成httpd的部署。-n 代表同时请求的资源数,-c 代表并发连接数。

4、建立httpd服务器(基于编译的方式进行),要求:
提供两个基于名称的虚拟主机:
(a)www1.stuX.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access;
(b)www2.stuX.com,页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2.err,访问日志为/var/log/httpd/www2.access;

(c)为两个虚拟主机建立各自的主页文件index.html,内容分别为其对应的主机名;
(d)通过www1.stuX.com/server-status输出httpd工作状态相关信息,且只允许提供帐号密码才能访问(status:status);

建立步骤:
1、编译安装httpd服务器
开发环境包组:Development Tools,Server Platform Development
开发程序包:pcre-devel
(1)apr-1.4+
#./configure --prefix=/usr/local/apr
#make && make install
注意:ARP类似于java虚拟机可以让httpd服务跨平台运行

(2)apr-util-1.4+
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make && make install
注意:apr-util依赖于apr-1.4

(3)http-2.4
#./configure --prefix=/usr/local/apache24 --sysconfdir=/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
注意:编译的配置内容,按顺序解释
1.定义安装目录2.定义系统目录3.开启ssl功能模块4.开启CGI模块,能够吧动态内容通过CGI协议给后台应用服务处理4.开启rewrite功能5.依赖zlib 6.依赖pcre 7.依赖apr的安装路径8.依赖apr-util的安装路径9.开启httpd多数模块功能10.开启mpms共享模块11.默认以prefork多进程模式运行
把apache的二进制文件导出到系统环境变量,如截图

导出apache的头文件到系统目录下,如截图

定义httpd服务启动配置文件,如截图

添加到服务启动列表中chkconfig –add httpd,chkconfig –level 345 httpd on,这样就可以用service启动httpd服务了,httpd编译安装完成。如截图


配置vhosts
(a)(c)(d)
1.在httpd下/etc/httpd24/extra/vhosts.conf写入虚拟主机的配置
<VirtualHost 192.168.1.109:80> (定义虚拟主机的host地址和监听端口)
ServerName www1.stuX.com (定义域名地址)
DocumentRoot "/web/vhosts/www1" (指定文件URL根文件路径)
<Directory "/web/vhosts/www1"> (定义文件访问属性)
Options None (默认选项为空)
AllowOverride None (允许基于IP访问)
AuthType Basic (基于basic认证模式访问)
AuthName "String" (认证名称类型为字符串)
AuthUserFile "/user/user1" (指定认证文件)
Require user status (允许用户名为status)
</Directory>
ErrorLog "/var/log/httpd/www1.err" (指定错误日志保存的物理路径)
CustomLog "/var/log/httpd/www1.access" common (指定访问日志保存的物理路径)
<Location /server-status> (定义主机的status查看页面)
SetHandler server-status (设定标头)
Order allow,deny (访问白名单)
Allow from 192.168 (可以访问页面的主机所在网段)
</Location>
2.配置httpd.conf
#DocumentRoot "/usr/local/apache24/htdocs" 注释默认的文件根目录路径
Include /etc/httpd24/extra/vhosts.conf 填入默认加载虚拟主机配置的文件,这样httpd就会加载vhosts.conf的配置来启动对应的虚拟主机。
3.新建basic认证指定文件

(b)(c)
定义虚拟主机2的配置
<VirtualHost 192.168.1.109:80>
ServerName www2.stuX.com
DocumentRoot "/web/vhosts/www2"
<Directory "/web/vhosts/www2">
Options None
AllowOverride None
Require all granted
</Directory>
ErrorLog "/var/log/httpd/www2.err"
CustomLog "/var/log/httpd/www2.access" commonbr/>测试验证截图
日志文件
![](http://i2.51cto.com/images/blog/201803/08/f1ee64e1120bc5131746b6479f2c29c9.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
主机1页面访问
![](http://i2.51cto.com/images/blog/201803/08/024cb33f2aff9695ee51cb39d82615b1.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201803/08/25c2a9e15cc0c898d86ec26b1eb81c37.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
![](http://i2.51cto.com/images/blog/201803/08/c4b2737f4f088ed89355173f7d08f418.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
主机2页面访问
![](http://i2.51cto.com/images/blog/201803/08/d43d7b0c27388589889c33cb65826563.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
5、为第4题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
(1)要求使用证书认证,证书中要求使用的国家(CN)、州(HA)、城市(ZZ)和组织(MageEdu);
(2)设置部门为Ops,主机名为www2.stuX.com,邮件为[email protected];
在CA服务器下签证
1.在系统CA目录下创建私钥

2.创建私钥密码长度为2048,导出到/etc/pki/CA/private/cakey.pem

3.自签证书
openssl req -new -x509 -key private/cakey.pem -out cacert.pem 自签证书以x509方式加密,导出为cacert.pem
认证信息

在指定路径下创建serial index.txt

在httpd服务器下创建ssl目录创建签证文件和认证请求
新增httpd.key私钥文件

新增认证请求文件

对httpd的认证请求做签署,httpd.crt签证成功后放回httpd下的ssl目录

#yum -y install mod_ssl 安装ssl模块
配置httpd关于ssl的文件

指定httpd的ca签署文件,和自身的私钥文件

在httpd.conf下开启ssl模块,指定ssl所在的配置文件


启动ssl服务

测试openssl效果
openssl s_client -connect www2.stuX.com:443 -CAfile /etc/pki/CA/cacert.pem

6、在LAMP架构中,请分别以php编译成httpd模块形式和php以fpm工作为独立守护进程的方式来支持httpd,列出详细的过程。
注意:php编译成httpd模块形式请参考第三题
PHP-FPM工作模式部署
1、 编译安装PHP-FPM
(1)./configure --prefix=/usr/local/php5 --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --w
ith-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt=/usr/local/libmcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
注意:本次编译和之前的php编译安装的内容有重复,重复的内容我就不再描述,只描述新增的内容。
--enable-fpm (启动php-fpm,fastcgi传输协议)
make -j 4 && make install
(2) 为php提供配置文件:

cp php.ini-production /etc/php.ini

(3) 配置php-fpm
为php-fpm提供SysV init脚本,并将其添加至服务列表:

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

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

chkconfig --add php-fpm

chkconfig php-fpm on

为php-fpm提供配置文件:

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

编辑php-fpm的配置文件:

vim /usr/local/php5/etc/php-fpm.conf

配置fpm的相关选项为你所需要的值,并启用pid文件(如下最后一行):
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pid = /usr/local/php5/var/run/php-fpm.pid
接下来就可以启动php-fpm了:

service php-fpm start

二、配置httpd
1、启用httpd的相关模块
在Apache httpd 2.4以后已经专门有一个模块针对FastCGI的实现,此模块为mod_proxy_fcgi.so,它其实是作为mod_proxy.so模块的扩充,因此,这两个模块都要加载
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
2、 配置主机支持fcgi
ProxyRequests Off
ProxyPassMatch ^/(.*.php)$ fcgi://192.168.1.216:9000/www/magedu.com/$1
ProxyRequests Off:关闭正向代理
ProxyPassMatch:把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://192.168.1.216:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。
3、编辑apache配置文件httpd.conf,让apache能识别php格式的页面,并支持php格式的主页

vim /etc/httpd/httpd.conf

1、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
2、定位至DirectoryIndex index.html
修改为:
DirectoryIndex index.php index.html
三、截图验证

lamp实验作业详细过程

原文地址:http://blog.51cto.com/11412301/2084355

时间: 2024-10-13 00:23:22

lamp实验作业详细过程的相关文章

在CentOS6.4中安装配置LAMP环境的详细步骤

原文:在CentOS6.4中安装配置LAMP环境的详细步骤 本文详细介绍了CentOS6.4系统中安装LAMP服务并对其进行配置的过程,即安装Apache+PHP+Mysql,参照了网上大神的设置,其他Linux发行系统可以参考~ 在本文中部分命令操作需要root权限,输入‘su -’命令后输入密码即可切换root身份. 一.修改设置对安装做准备 1. 防火墙设置 设置/etc/sysconfig/iptables文件允许80端口和3306端口.因为80端口是http协议所使用的端口,如果防火墙

Lamp环境的详细安装教程

原文:Lamp环境的详细安装教程 架构LAMP环境 1.布置LAMP环境之前的准备工作 在架构LAMP环境时,确保你的Linux系统已经安装了make.gcc.gcc-c++(使用rpm -q xxx 查看系统是否已经安装软件) 解压Lamp压缩包 下载地址:http://pan.baidu.com/s/1hq4hI5m 如果解麻烦的话,可以写一个自动解压脚本 1 cd /lamp #你解压的目录 2 3 ls *.tar.gz > ls.list 4 5 for tar in ‘cat ls.

实验作业:使gdb跟踪分析一个系统调用内核函数

实验作业:使gdb跟踪分析一个系统调用内核函数(我使用的是getuid) 20135313吴子怡.北京电子科技学院 [第一部分] 根据视频演示的步骤,先做第一部分,步骤如下 ①更新menu代码到最新版 ②在代码中加入C函数.汇编函数 ③在main函数中加入makeconfig ④make rootfs ⑤可以看到qemu中增加了我们先前添加的命令: ⑥分别执行新增的命令 [第二部分]gdb跟踪分析一个系统调用内核函数 ①进入gdb调试 ②设置断点,继续执行: ③相对应的得到这样的结果: ④查看我

Spark源码系列(三)作业运行过程

导读 看这篇文章的时候,最好是能够跟着代码一起看,我是边看代码边写的,所以这篇文章的前进过程也就是我看代码的推进过程. 作业执行 上一章讲了RDD的转换,但是没讲作业的运行,它和Driver Program的关系是啥,和RDD的关系是啥? 官方给的例子里面,一执行collect方法就能出结果,那我们就从collect开始看吧,进入RDD,找到collect方法. def collect(): Array[T] = { val results = sc.runJob(this, (iter: It

库存物资管理系统代码,详细过程和总结

库存物资管理系统实验要求如下: 1.背景资料 1.有一个存放商品的仓库,每天都有商品出库和入库.2.每种商品都有名称.生产厂家.型号.规格等.3.出入库时必须填写出入库单据,单据包括商品名称.生产厂家.型号.规格.数量.日期.时间.入库单位(或出库单位)名称.送货(或提货)人姓名.2.系统要求与功能设计2.1页面要求(1)能够在Tomcat服务器中正确部署,并通过浏览器查看:(1分)(2)网站页面整体风格统一:2.2设计要求1.设计出入库单据的录入.2.实现按商品名称.出入库日期的查询. 3.评

Linux下WebSphereV8.5.5.0 安装详细过程

Linux下WebSphereV8.5.5.0 安装详细过程 自WAS8以后安装包不再区别OS,一份介质可以安装到多个平台.只针对Installation Manager 进行了操作系统的区分 ,Websphere产品介质必须通过专门的工具Install Managere安装.进入IBM的官网http://www.ibm.com/us/en/进行下载.在云盘http://yun.baidu.com/share/linkshareid=2515770728&uk=4252782771 中是Linu

网站渗透测试原理及详细过程

网站渗透测试原理及详细过程 渗透测试(Penetration Testing)目录 零.前言一.简介二.制定实施方案三.具体操作过程四.生成报告五.测试过程中的风险及规避参考资料FAQ集 零.前言 渗透测试在未得到被测试方授权之前依据某些地区法律规定是违法行为. 这里我们提供的所有渗透测试方法均为(假设为)合法的评估服务,也就是通常所说的道德黑客行为(Ethical hacking),因此我们这里的所有读者应当都是Ethical Hackers,如果您还不是,那么我希望您到过这里后会成为他们中的

UCOS2_STM32F1移植详细过程(二)

Ⅰ.概述 打开上一篇文章新建的工程,是提取的ST标准库里面源代码文件和UCOS工程包源代码文件.下载过的朋友可能会知道,直接编译那个工程会有大片的错误和警告,原因在于那个工程是没有经过修改源代码的工程,接下来就是讲述一步一步修改源代码的过程(也就是所谓的移植过程). 该文接着上一篇文章来讲述“UCOS移植详细过程”,上一篇文章是讲述准备工作.文件提取并整理.新建UCOS工程等工作.该文讲述UCOS移植过程中修改源代码(底层代码.系统配置等)工作. 笔者将“UCOS移植详细过程”分为多篇文章来讲述

UCOS2_STM32F1移植详细过程(一)

Ⅰ.概述 该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统.UCOS移植相关平台: 系统平台:µC/OS-II  (最新V2.92版) 硬件平台:STM32F1   (适合F1所以系列) 开发平台:Keil(MDK-ARM) V5 1.为什么是µC/OS-II? 原因在于µC/OS-II是一个比较成熟.稳定的系统,与µC/OS-III比较有些机制相对简单很多.当你掌握了µC/OS-II,µC/OS-III很容易就理解了. 2.为什么是STM32F1? 硬件平台是