实践作业之编译安装LAMP

题目1:httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。

(1)prefork模型:

功能:多进程模型,每个进程响应一个请求

工作方式:

①一个主进程:负责生成子进程及回收子进程(工作进程),负责创建套接字,负责接收请求,并将其派发给某子进程进行处理

②n个子进程:每个子进程一个请求

主控进程会预先生成几个空闲子进程,随时等待用于响应用户请求。根据处理过程,可能会改变空闲进程的数量,需要定义最大空闲和最小空闲

(2)worker模型:

功能:多进程多线程模型,每个线程处理一个用户请求

工作方式:

①一个主进程:负责生成子进程,负责创建套接字,负责接收请求,并将其派发给某子进程进行处理

②多个子进程:每个子进程负责生成多个线程

③每个线程:负责响应用户请求

并发响应数量:m*n (其中m表示子进程数量,n表示每个子进程所能创建的最大线程数量)

(3)event模型:

功能:事件驱动模型,多进程模型,每个进程响应多个请求

工作方式:

①一个主进程:负责生成子进程负责创建套接字负责接收请求,并将其派发给某子进程进行处理

②子进程:基于事件驱动机制直接响应多个请求

并发响应数量:m*n (其中m表示子进程数量,n表示每个进程所能响应的最大请求数量)

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

源码编译安装LAMP环境:

httpd-2.4:prefork模型

mariadb-5.5:通用二进制格式(被php5依赖,需要先编译安装)

php-5.4:编译为httpd的module

安装编译环境

# yum -y groupinstall "Development Tools" "Server Platform Development"

(1)安装httpd

# yum -y install pcre-devel apr-devel apr-util-devel openssl-devel
# tar xf httpd-2.4.23.tar.bz2
# cd httpd-2.4.23
# ./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

导出httpd程序路径:
# vim /etc/profile.d/httpd.sh
export PATH=/usr/local/apache24/bin:$PATH
# . /etc/profile.d/httpd.sh

导出httpd头文件:
# ln -sv /usr/local/apache24/include /usr/include/httpd

启动服务:
# apachectl start

(2)使用通用二进制格式安装mariadb

# useradd -r mysql
# tar xf mariadb-VERSION.tar.xz -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
# chkconfig --add mysqld

准备数据目录:
# mkdir /mydata/data

提供配置文件:
# cp support-files/my-large.cnf /etc/my.cnf
# vim /etc/my.cnf
[mysqld]
datadir = /mydata/data
innodb_file_per_table = ON
skip_name_reslove = ON

启动mysql服务:
# service mysqld start

导出mysql程序路径:
# vim /etc/profile.d/mysql.sh
export PATH=/usr/local/mysql/bin:$PATH

导出mysql库文件:
# vim /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib
# ldconfig

导出mysql头文件:
# ln -sv /usr/local/mysql/include /usr/include/mysql

(3)安装php

# yum install libxml2-devel libmcrypt-devel bzip2-devel
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl 
--with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-png-dir 
--with-jpeg-dir --with-freetype-dir --with-zlib --with-libxml-dir=/usr --enable-xml 
--enable-sockets --with-apxs2=/usr/local/apache24/bin/apxs --with-mcrypt
 --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2
# make && make install

为了使httpd能够识别php动态资源并能够提交给httpd的php模块(引擎),需要编辑httpd的配置文件
/etc/httpd24/httpd.conf,在相应位置添加AddType配置:
# cp php-5.4.45/php.ini-production /etc/php.ini
# vim /etc/httpd24/httpd.conf
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html

检查httpd配置文件语法:
# apachectl -t

重启httpd服务:
# apachectl restart

(4)部署wordpress

# tar xf wordpress-4.7-zh_CN.tar.gz -C /usr/local/apache/htdocs
# chmod -R 777 /usr/local/apache/htdocs/wordpress

创建wordpress数据库、用户名及密码:
# mysql
mysql> CREATE DATABASE wpdb;
mysql> GRANT ALL ON wpdb.* TO [email protected]‘192.168.%.%‘ IDENTIFIED BY ‘wppass‘;
mysql> FLUSH PRIVILEGES;

在浏览器进行访问及部署wordpress:
http://192.168.10.101/wordpress

题目3:建立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);

创建站点目录:
# mkdir -pv /web/vhosts/{www1,www2}
# mkdir /var/log/httpd
# echo "<h1>www1.stuX.com</h1>" > /web/vhosts/www1/index.html
# echo "<h1>www2.stuX.com</h1>" > /web/vhosts/www2/index.html
# vim /etc/apache/httpd.conf

注释中心主机:
#DocumentRoot "/usr/local/apache/htdocs"

引用虚拟主机配置文件:
Include /etc/httpd24/extra/httpd-vhosts.conf

# vim /etc/httpd24/httpd.conf
配置添加如下两个虚拟主机:
<VirtualHost *:80>
    ServerName www1.stuX.com
    DocumentRoot "/web/vhosts/www1"
    ErrorLog "/var/log/httpd/www1.err"
    CustomLog "/var/log/httpd/www1.access" combined
    <Directory "/web/vhosts/www1">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
    <Location /server-status>
        SetHandler server-status
        AuthType Basic
        AuthName "server-status"
        AuthUserFile "/etc/apache/.status_pwd"
        Require valid-user
    </Location>
</VirtualHost>

<VirtualHost *:80>
    ServerName www2.stuX.com
    DocumentRoot "/web/vhosts/www2"
    ErrorLog "/var/log/httpd/www2.err"
    CustomLog "/var/log/httpd/www2.access" combined
    <Directory "/web/vhosts/www2">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>
# htpasswd -cm /etc/httpd24/.htpasswd status
# apachectl -t
# apachectl restart

测试主机:
# vim /etc/hosts
192.168.10.101 www1.stuX.com www2.stuX.com

在浏览器进行访问测试:
http://www1.stuX.com
http://www2.stuX.com

题目4:为第4题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;

(1)要求使用证书认证,证书中要求使用的国家(CN)、州(HA)、城市(ZZ)和组织(MageEdu);

(2)设置部门为Ops,主机名为www2.stuX.com,邮件为[email protected];

构建私有CA颁发SSL证书
# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.‘, the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HA
Locality Name (eg, city) [Default City]:ZZ
Organization Name (eg, company) [Default Company Ltd]:MageEdu
Organizational Unit Name (eg, section) []:Ops
Common Name (eg, your name or your server‘s hostname) []:www2.stuX.com
Email Address []:[email protected]
# mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
# touch /etc/pki/CA/{serial,index.txt}
# echo 01 > /etc/pki/CA/serial

在请求主机生成私钥,并向CA申请签署证书
# (umask 077; openssl genrsa -out /etc/apache/ssl/httpd.key 2048)
# openssl req -new -key /etc/apache/ssl/httpd.key -out /etc/apache/ssl/httpd.csr -days 365

CA签署证书
# openssl ca -in /etc/httpd24/ssl/httpd.csr -out /etc/pki/CA/certs/httpd.crt
# cp /etc/pki/CA/certs/httpd.crt /etc/apache/ssl/

# vim /etc/httpd24/httpd.conf

引用SSL配置文件:
Include /etc/apache/extra/httpd-ssl.conf

加载如下模块:
LoadModule ssl_module modules/mod_ssl.so

编辑配置文件:
# vim /etc/httpd24/extra/httpd-ssl.conf
<VirtualHost _default_:443>
DocumentRoot "/web/vhosts/www2"
ServerName www2.stuX.com
ErrorLog "/var/log/httpd/www2.ssl.err"
TransferLog "/var/log/httpd/www2.ssl.access"
<Directory "/web/vhosts/www2">
    Options None
    AllowOverride None
    Require all granted
</Directory>

SSLEngine on
SSLCertificateFile "/etc/httpd24/ssl/httpd.crt"
SSLCertificateKeyFile "/etc/httpd24/ssl/httpd.key"

</VirtualHost>

# apachectl -t
# apachectl restart

在浏览器进行访问测试:
https://www2.stuX.com

题目5:在LAMP架构中,请分别以php编译成httpd模块形式和php以fpm工作为独立守护进程的方式来支持httpd,列出详细的过程。

详见《编译安装PHP》

时间: 2024-10-21 00:19:48

实践作业之编译安装LAMP的相关文章

编译安装LAMP[两种结合方式]

本文旨在实践编译安装LAMP环境,搭建Zblog系统,使用Xcache为PHP加速,分离PHP与Apache Server LAMP基础知识 Linux + Apache + MySQL[MariaDB] + PHP[Perl|Pyton] 是一套基础的web环境: Apache有2.2版本,和最新的2.4版本,2.4版本支持Event MPM可用作生产环境,在http2.2中有3种MPM,为不同的进程文件,切换需要重启Apache服务:而2.4中MPM做成了DSO,可动态加载切换: Apach

编译安装LAMP及分离式LAMP平台构建

前言 LAMP网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网站服务器,MySQL数据库,Perl.PHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,和Java/J2EE架构相比,LAMP具有Web资源丰富.轻量.快速开发等特点,与微软的.NET架构相比,LAMP具有通用.跨平台.高性能.低价格的优势,因此LAMP无论是性能.质量还是价格都是企业搭建网站的首选平台.但由于MySQL作为SUN公司

编译安装LAMP之一

环境:CentOS-6.5-i386-minimal httpd-2.2.27.tar.gz mysql-5.5.38-linux2.6-i686.tar.gz php-5.5.14.tar.gz 编译安装的原则:对于我们来说,需要定制的就直接编译,其余的一切皆yum / apt-get搞定 1.关闭iptables和SELinux [[email protected] ~]# service iptables stop [[email protected] ~]# setenforce 0 2

Centos 7.0 编译安装LAMP(Linxu+apache+mysql+php)之源码安装Mysql (二)

mysql 简介: MySQL是一个关系型数据库管理系统,关系数据库将数据保存在不同的表中,这样就增加了速度并提高了灵活性.目前其属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件.MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言. 安装环境: 系统: centos 7.0 最小化安装 软件

ubuntu10.04编译安装LAMP

ubuntu10.04编译安装LAMP以及简单wordpress的使用 : http://linuxme.blog.51cto.com/1850814/971631 一.源码安装LAMP 网上有一堆关于介绍lamp的在这里我就不罗嗦了,直接上配置过程 1.apr包的安装 apr简介: The mission of the Apache Portable Runtime (APR) project is to create and maintain software libraries that

编译安装LAMP(两种场景)

编译安装LAMP 场景一:AP组合以模块方式结合(编译PHP作为httpd的模块):进而完成虚拟主机PMA(phpmyadmin)和discuz论坛 场景二:AP组合以fpm方式,PHP独立守护进程运行:进而完成虚拟主机PMA(phpmyadmin)和discuz论坛 ==========================场景一============================ 拓扑结构: 主机一 网卡1IP为172.20.1.100 网卡2IP为192.168.217.219 在此计算机上

编译安装 LAMP 平台

> 一.软件包 Linux:CentOS-6.4     Apache:httpd-2.4.9     MySQL:mysql-5.6.19     PHP:php-5.4.30 二.编译安装 httpd 在安装 httpd 之前,首先要安装两个依赖包:apr 和 apr-util.apr 是 apache portable runtime 的缩写,是 apache 提供的一个可以跨平台使用的 API.安装方法很简单,就是编译安装的三步骤: # apr tar xf apr-1.5.1.tar.

Centos 7.0 编译安装LAMP(Linxu+apache+mysql+php)之源码安装Apache (一)

Apache 简介: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中. 安装环境: 系统: centos 7.0 最小化安装 软件:httpd-2.4.26 依赖包:apr .apr-util .pcre .gcc .gcc-c++ .perl-dvel.perl.openssl .openssl-

编译安装LAMP平台环境_xcache

基于Linux.Apache.Mysql.Php编译安装LAMP环境平台,并使用xcache加速php 编译安装LAMP平台: 1.下载软件包, 安装依赖包 # yum install -y pcre-devel 2.解包安装apache 2.1 编译安装apr-1.5.0 # tar xvf apr-1.5.0.tar.bz2 # cd apr-1.5.0 && ./configure --prefix=/usr/local/apr # make && make inst