马哥教育21期网络班—第12周课程+练习—-LAMP练习

1、请描述一次完整的http请求处理过程;

http访问过程.jpeg

(1) 建立或处理连接:接收请求或拒绝请求
		(2) 接收请求:
			接收来自于网络的请求报文中对某资源的一次请求的过程;
			持久连接:接收到请求不会断开这个请求
			非持久连接:一个连接请求断开一次
			并发访问响应模型(Web I/O):
				单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应;
				多进程I/O结构:并行启动多个进程,每个进程响应一个请求;
				10000个进程--->服务器只能响应1000--->处理之后再响应
				复用I/O结构:一个进程响应n个请求;
					能够处理多路IO的连接器,一个进程响应多个用户请求
					多线程模型:一个进程生成N个线程,每个线程响应一个用户请求;
					事件驱动:event-driven
					在服务器内部基于事件回调的机制,连接IO的追踪。
					来完成客户端请求。
				复用的多进程I/O结构:启动多个(m)进程,每个进程响应n个请求;

		(3) 处理请求:对请求报文进行解析,并获取请求的资源及请求方法等相关信息

			元数据:请求报文首部
				<method> <URL> <VERSION>
				Host: www.magedu.com   请求的主机名称
				Connection:连接使用的方式

		(4) 访问资源:获取请求报文中请求的资源

			web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后生成的资源;这些资源放置于本地文件系统某路径下,此路径通常称为DocRoot

			/var/www/html/
				images/1.jpg
			http://www.magedu.com/images/1.jpg
			web服务器资源路径映射方式:
				(a) docroot:直接映射
				(b) alias:路径别名
				(c) 虚拟主机docroot
				(d) 用户家目录docroot
		(5) 构建响应报文
			资源的MIME类型:
				显式分类
				魔法分类:自行扫描
				协商分类
			URL重定向:
				web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径;
			重定向:永久重定向、临时重定向
		(6) 发送响应报文  TCP双向通道
		(7) 记录日志

2、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。

QQ截图20160924231847.png

prefork:多进程模型,每个进程响应一个请求;
一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;最大不会超过1024个;最小空闲多少,并发响应多少
prefork:最大不能超过1024个并发请求,高性能web服务器,这个差了一个数量级。10倍 c10k,这种模式很稳定,一个进程崩溃,不会影响到其他进程。---->问的性要求高的
worker:多线程模型,每个线程响应一个请求;		一个主进程:生成多个子进程,每个子进程负责生个多个线程,每个线程响应一个请求;
m进程,n线程:m*n----->	并发量稍微高点的
event:事件驱动模型,每个线程响应n个请求;		一个主进程:生成m个子进程,每个进程直接n个请求;
m*n----->高并发--->

3、源码编译安装LAMP环境(基于wordpress程序),并写出详细的安装、配置、测试过程。

LAMP----->2.4 模块实现
yum groupinstall "Development Tools" "Server Platform Development"------>安装包组1、编译安装Apache
httpd-2.4.9需要较新版本的apr和apr-util,因此需要事先对其进行升级
(1)、编译安装apr
tar xf apr-1.5.0.tar.bz2cd apr-1.5.0./configure --prefix=/usr/local/apr
make && make install
(2)、编译安装apr-util
tar xf apr-util-1.5.3.tar.bz2cd apr-util-1.5.3./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
(3)、编译安装httpd
groupadd -r apache
useradd -r -g apache apahce
yum -y install pcre-devel ---->安装pcre-devel支持
tar xf httpd-2.4.9.tar.bz2cd httpd-2.4.9./configure --prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --withzlib
--with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --enable-modules=most --enable-mpmsshared=
all --with-mpm=event
make && make install3、修改httpd的主配置文件,设置其Pid文件的路径
编辑vim /etc/httpd24/httpd.conf,添加如下行即可:
PidFile "/var/run/httpd/httpd24.pid"提供httpd 运行脚本cd /etc/rc.d/init.d/
cp httpd httpd24
vim httpd24
apachectl=/usr/local/apache/bin/apachectl ---------------->改的
httpd=${HTTPD-/usr/local/apache/bin/httpd} ---->查看pid路径--->/usr/local/apache/logs/httpd.pid
pidfile=${PIDFILE-/var/run/httpd/httpd24.pid}lockfile=${LOCKFILE-/var/lock/subsys/httpd24}chkconfig --add httpd24
chkconfig --list httpd24
httpd24 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
httpd -t ------------>检查语法hash -r --------------->清除缓存
vim /etc/profile.d/httpd.shexport PATH=/usr/local/apache/bin$PATH-------------->定义PATH读取
. /etc/profile.d/httpd.sh ------------->重读配置文件
编辑/etc/man.config,添加如下行即可
MANPATH /usr/local/apache/man
库文件和头文件的导出
输出apche的头文件至系统头文件路径/usr/include:
这可以通过简单的创建链接实现:
ln -sv /usr/local/apache/include /usr/include/apache
输出mysql的库文件给系统库查找路径:echo '/usr/sbin/httpd' > /etc/ld.so.conf.d/httpd24.conf
而后让系统重新载入系统库:
ldconfig
service httpd24 start
ss -tnl ---------------->查看80端口是否被监听到
ps aux | grep httpd----->查看工作模式
vim /etc/httpd24/httpd.conf ----------->配置文件
LoadModule deflate_module modules/mod_deflate.so----------->启用2、编译安装mariadb
tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local准备数据目录
mkdir -pv /mydata/data------>创建数据存放目录
配置mariadb----->
groupadd -r -g 306 mysql
useradd -r -g 306 -u 306 mysqlcd /usr/local/
ln -sv mariadb-5.5.36-linux-x86_64 mysqlcd /usr/local/mysql
chown -R root:mysql ./*
scripts/mysql_install_db --datadir=/mydata/data --user=mysql
cp supper-files/mysql.server /etc/rc.d/init.d/mysqld
chkconfig --add mysqld --->添加
chkconfig --list mysqld --->查看
mkdir /etc/mysql
cp support-files/my-large.cnf /etc/mysql/my.cnf
vim /etc/mysql/my.cnf
添加三个选项:
datadir = /mydata/data
innodb_file_per_table = on
skip_name_resolve = on
service mysqld start
/usr/local/mysql/bin/mysql_secure_installation------------>安全初始化
mysql优化
编辑/etc/man.config,添加如下行即可:
MANPATH /usr/local/mysql/man7、输出mysql的头文件至系统头文件路径/usr/include:
这可以通过简单的创建链接实现:
ln -sv /usr/local/mysql/include /usr/include/mysql8、输出mysql的库文件给系统库查找路径:echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
而后让系统重新载入系统库:
ldconfig9、修改PATH环境变量,让系统可以直接使用mysql的相关命令。
vim /etc/profile.d/mysql.shexport PATH=/usr/local/mysql/bin:$PATH. /etc/profile.d/mysql.sh
安装php
解决依赖关系
yum -y groupinstall "Desktop Platform Development"yum -y install bzip2-devel libmcrypt-devel libxml2-devel2、编译安装php-php-5.4.26php-5.4.26.tar.bz2cd php-5.4.26./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --withmysqli=/
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-configfile-
path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts
make
make testmake intall
为php提供配置文件:
cp php.ini-production /etc/php.ini3、 编辑apache配置文件httpd.conf,以apache支持php# vim /etc/httpd24/httpd.conf1、添加如下二行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps2、定位至DirectoryIndex index.html
修改为:
DirectoryIndex index.php index.html
启动httpd服务
测试页面index.php示例如下:
<?php$link = mysql_connect('127.0.0.1','root','mageedu');if ($link)echo "Success...";elseecho "Failure...";
phpinfo();
mysql_close();
?>
用 wordpress测试
unzip wordpress-4.5.3-zh_CN.zip
cp -rf wordpress /usr/local/apache/htdocs/cd /usr/local/apache/htdocs/wordpress
cp wp-config-sample.php wp-config.php
vim wp-config.php
defile ('DB_NAME', 'wpdb');
defile ('DB_USER', 'wpuser');
defile ('DB_PASSWORD', 'wppword');
连上MySQL数据库
mysql -uroot -p
GRANT ALL ON wpdb.* TO 'wpuser'@'localhost' IDENTIFIED BY 'wppword';
CREATE DATABASE wpdb;
FLUSH PRIVILEGES;
mysql -uwpuser -pwppword
SHOW DATABASES;
http://192.168.159.128/wordpress
访问---->安装

2.4模块.png

2.4模块2.png

模块www.png

1、编译安装Apache
httpd-2.4.9需要较新版本的apr和apr-util,因此需要事先对其进行升级
(1)、编译安装apr
tar xf apr-1.5.0.tar.bz2
cd apr-1.5.0
 ./configure --prefix=/usr/local/apr make && make install(2)、编译安装apr-util
tar xf apr-util-1.5.3.tar.bz2 
cd apr-util-1.5.3./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
 make && make install(3)、编译安装httpd
groupadd -r apache
useradd -r -g apache apahce
yum -y install pcre-devel ---->安装pcre-devel支持tar xf httpd-2.4.9.tar.bz2
cd httpd-2.4.9./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=event编译的时候报这个错误------------------------------------------------------------------------------------------------------------checking whether to enable mod_ssl… configure: error: mod_ssl has been requested but can not be built due to prerequisite failures
yum install openssl-devel----->解决make && make install3、修改httpd的主配置文件,设置其Pid文件的路径
编辑vim /etc/httpd24/httpd.conf,添加如下行即可:
PidFile  "/var/run/httpd/httpd24.pid"提供httpd 运行脚本
 cd /etc/rc.d/init.d/
 cp httpd httpd24 
 vim httpd24 
 apachectl=/usr/local/apache/bin/apachectl ---------------->改的
 httpd=${HTTPD-/usr/local/apache/bin/httpd}
 pidfile=${PIDFILE-/var/run/httpd/httpd24.pid}
 lockfile=${LOCKFILE-/var/lock/subsys/httpd24}
 chkconfig --add httpd24 
 chkconfig --list httpd24
 httpd24        	0:关闭	1:关闭	2:关闭	3:关闭	4:关闭	5:关闭	6:关闭
 httpd -t ------------>检查语法
 hash -r --------------->清除缓存
 vim /etc/profile.d/httpd.sh export PATH=/usr/local/apache/bin$PATH-------------->定义PATH读取
 . /etc/profile.d/httpd.sh ------------->重读配置文件
  service httpd24 start
 ss -tnl ---------------->查看80端口是否被监听到
 ps aux | grep httpd----->查看工作模式
 vim /etc/httpd24/httpd.conf ----------->配置文件
 LoadModule deflate_module modules/mod_deflate.so----------->启用
 vim /etc/httpd24/httpd.conf
 #DocumentRoot "/usr/local/apache/htdocs"
 vim /etc/httpd24/extra/httpd-vhosts.conf 
<192.168.159.128 *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/web/vhost/www1/"
    ServerName www1.stuX.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "/var/log/httpd/www1.err"
    CustomLog "/var/log/httpd/www1.access" common
<Directory "/web/vhost/www1">
 AllowOverride None
    Options None
    Require all granted
</Directory>
</VirtualHost>

<192.168.159.128 *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/web/vhosts/www2"
    ServerName www2.stuX.com
    ErrorLog "/var/log/httpd/www2.err"
    CustomLog "/var/log/httpd/www2.access" common
<Directory "/web/vhost/www2">
 AllowOverride None
    Options None
    Require all granted
</Directory>
</VirtualHost>
mkdir -pv /web/vhost/{www1,www2}
echo "www1.site" > /web/vhost/www1/index.html && echo "www2.site" > /web/vhost/www2/index.html

[root@centos ~]# curl www1.stuX.com
www1.site
[root@centos ~]# curl www2.stuX.com
www2.site
vim /etc/httpd24/extra/httpd-vhosts.conf
vim /etc/httpd24/extra/httpd-vhosts.conf
<VirtualHost 192.168.159.128 *:80>
DocumentRoot "/web/vhost/www1/"ServerName www1.stuX.com
ErrorLog "/var/log/httpd/www1.err"CustomLog "/var/log/httpd/www1.access" common
<Directory "/web/vhost/www1">
AllowOverride NoneOptions NoneRequire all granted
</Directory>
<Location /server-status>
AuthType Basic
AuthName "Only for Admin"AuthUserFile "/usr/local/apache/.htpasswd"Require valid-userSetHandler server-statusAllowOverride NoneOptions None</Location
</VirtualHost>
./htpasswd -m -c /usr/local/apache/.htpasswd admin

模块验证.png

原创文章,作者:N21_ Dominic,如若转载,请注明出处:http://www.178linux.com/48998

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-27 09:29

    统一回复下,看得出来很认真的在做练习了,写的也很好,即使一个没有经验的人也可以按照你的步骤搭建出来