web服务相关实验(httpd)

时间:2023-02-09 13:20:32

本文以实验为主,介绍apache服务不同维度的实验,为管理员设置web服务的不同特性提供参考。所有的实验环境均关闭了Selinux、防火墙。

实验一:对客户端设置访问WebServer的用户控制机制,对于除根目录之外(默认/var/www/html)的其他目录下的*.html文档,只有指定账户才有权限访问

  步骤:1)mkdir /var/www/html/admin    

     2)编辑主配置文件/etc/httpd/conf/httpd.conf,增加一条Directory

<Directory "/var/www/html/admin"> 指定设置的目录
Options Indexes   #选项支持索引
AllowOverride None   #不允许被覆盖
AuthType Basic   #认证类型为Basic
AuthName "some private area..."   #认证描述
AuthUserFile "/etc/httpd/conf/.htpasswd"   #被认证的用户列表,用户列表文件名最好设置为“.htpasswd”
Require user paul   #认证通过的用户
</Directory>

     3)使用命令httpd -t 检测配置文件有无语法错误,出现“Syntax OK”说明配置无误

     4)使用命令htpasswd -c(首次创建要用)-b -m(指定md5算法)/etc/httpd/conf/.htpasswd paul centos(指定用户及密码)来创建httpd授权账号

     5)在/var/www/html/admin目录下创建任意内容的*.html文件

     6)重启httpd服务后访问,控制设置生效。例:浏览器访问http://172.18.252.190/admin/admin.html会提示输入账号及密码

 实验二:实现一台web服务器提供多个站点支撑功能。httpd服务的模块中有VirtualHost(虚拟主机)功能,可以生成多个虚拟主机来实现一个httpd服务对于多个不同网站的支撑功能。有三种思路,一、若Server端有多个IP地址,可根据不同的IP地址来划分,此方法不推荐。二、Server端的一个IP地址上开放不同端口来满足需求;三、根据Server端的不同域名来划分。本实验对方法二及方法三的实现过程加以演示。

  ***在一条IP地址上增加两个非80端口,访问不同的套接字(Socket)会得到不同的页面

  步骤:1)在/etc/httpd/conf.d/下创建任意一个*.conf文件,配置相关参数如下

Listen 8080  #开启8080端口的监听
<VirtualHost "172.18.252.190:8080">  #配置指定套接字的虚拟主机

ServerName www.magedu.com  #服务名,比较重要
DocumentRoot /web/html  #httpd进程的根目录,比较重要
<Directory "/web/html/">  #对设定的根目录“/web/html”进行授权
Options None  #无选项
AllowOverride None  #不允许覆盖
Require all granted  #所有权限开放
</Directory>

</VirtualHost>

     2)httpd -t 检测有无语法错误

     3)在/web/html下创建任意内容的index.html文件,注意文件名必须为index.html,而根目录/web/html下的子目录内的html文件无此要求

     4)重启httpd服务,并通过浏览器访问172.18.252.190:8080,设置生效

**实验三:源码编译安装httpd。注意,无论做何种源码编译及安装,都需要开发包组“Development Tools”,因此需要检查当前主机是否有此包组。命令>yum grouplist查看

  步骤:1)安装devel包apr-devel、apr-util-devel、pcre-devel、openssl-devel。(这些devel包至少包含了头文件及链接信息,帮助解决依赖性关系)

     2)下载最新版httpd源码包,并解压至/usr/local/src/目录下,进入httpd-2.4.5/srclib目录,下载apr-1.6.5及apr-util-xxx两个包,解压后将两个目录更名为apr、apr-util

     3)返回httpd-2.4.5目录下,配置编译选项:./configure --prefix=/app/httpd24 --sysconfdir=/etc/httpd24  --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-included-apr

     4)编译及安装:make -j 2 && make install

     5)源码编译安装的httpd所属的用户及用户组为系统临时分配的daemon,需要管理员手工创建系统账号apache并在配置文件/etc/httpd24/httpd.conf中将daemon改为apache

命令useradd -r -u 48 -c "Apache" -d /usr/share/httpd -s /sbin/nologin apache

     6)至此,服务已经可以启动了,但为了方便根进程管理,而不是手工执行httpd的启动脚本,在centos 6以及centos 7 中分别用以下方法实现:

centos6

     执行命令cp /app/httpd24/bin/apacctl /etc/init.d/httpd,在httpd脚本中#!/bin/bash下添加两行:

#chkconfig: 2345 10 90
#description: Activates/Deactivates Apache Web Server

     保存退出后执行命令chkconfig --add httpd。若要开机自启,再执行chkconfig httpd on

centos7

     

[root@centos7(nanyibo) ~]# cd /usr/lib/systemd/system
[root@centos7(nanyibo) system]# cp sshd.service httpd24.service
[root@centos7(nanyibo) system]# vim httpd24.service
[Unit]
Description=The Apache HTTP 2.4.35 Server
After=network.target

 

[Service]
Type=forking
ExecStart=/app/httpd24/bin/apachectl start
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/app/httpd24/bin/apachectl stop
Restart=on-failure

 

[Install]
WantedBy=multi-user.target
[root@centos7(nanyibo) ~]# systemctl daemon-reload

若要开机自启,执行systectl enable httpd

 

**实验四 源码编译安装php。在此介绍两种方式,一为模块儿化安装,二为基于fast cgi接口的fpm安装

一、模块儿化

  步骤:1)下载最新版本的php源码包至/usr/local/src/目录下并解压缩。

     2)安装devel包组,libmcrypt-devel、bzip2-devel、libxml2-devel(yum -y install libmcrypt-devel libmcrypt-devel libxml2-devel)

     3)进入/usr/local/src/php-7.2.11/下,配置编译选项如下

 

./configure \
--prefix=/app/php \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-openssl \
--with-pdo-mysql=mysqlnd \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--with-apxs2=/app/httpd24/bin/apxs \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--disable-fileinfo

 

    4)编译并安装:make -j 2 && make install

    5)生成php配置文件:cp php.ini-production /etc/php.ini

    6)在httpd配置文件中添加对*.php文件的支持

 

vim /etc/httpd24/httpd.conf
DirectoryIndex index.php index.html
</IfModule>

 

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

    7)在/app/httpd24/htdocs/下创建测试ohp文件info.php

 

<?php
phpinfo();
?>

    8)浏览器访问测试通过

 配置mysql(数据库运行在centos7上,仅作为参考)

mysql

MariaDB [(none)]> create database wpdb;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all on wpdb.* to 'wpuser'@'localhost' identified by 'wppass';
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> grant all on wpdb.* to 'wpuser'@'127.0.0.1' identified by 'wppass';
Query OK, 0 rows affected (0.00 sec)

编辑测试文件vim /app/httpd24/htdocs/conn.php

<?php
$conn = mysqli_connect('127.0.0.1','wpuser','wppass');
if ($conn)
echo "OK";
else
echo "Failure";
?>

浏览器测试php与mysql连通性通过。

**实验五 以php-fpm安装php-5.6.38(centos7环境)

  tar xvf php-5.6.38.tar.bz2 -C /usr/local/src/

  cd /usr/local/src/php-5.6.38/

 

[root@centos7~ php-5.6.38]# ln -sv /usr/lib64/mysql/libmysqlclient.so /usr/lib
[root@centos7 ~]# ./configure --prefix=/app/php56 \
> --with-mysql=/usr \
> --with-openssl \
> --with-mysqli=/usr/bin/mysql_config \
> --enable-mbstring \
> --with-png-dir \
> --with-jpeg-dir \
> --with-freetype-dir \
> --with-zlib \
> --with-libxml-dir=/usr \
> --enable-xml \
> --enable-sockets \
> --enable-fpm \
> --with-mcrypt \
> --with-config-file-path=/etc/php56 \
> --with-config-file-scan-dir=/etc/php56/php.d \
> --with-bz2

 


[root@centos7 php-5.6.38]# make -j 2 && make install
[root@centos7 ~]# cd /app/php56/etc/
[root@centos7 etc]# cp php-fpm.conf.default php-fpm.conf
[root@centos7 etc]# vim php-fpm.conf
pid = run/php-fpm.pid
error_log = log/php-fpm.log
pm.status_path = /status
ping.path = /ping
ping.response = pong
pm.max_children = 50

 


[root@centos7 ~]# mkdir /etc/php56
[root@centos7 ~]# cp /usr/local/src/php-5.6.38/php.ini-production /etc/php56/php.ini
[root@centos7 ~]# cp /usr/local/src/php-5.6.38/sapi/fpm/php-fpm.service /usr/lib/systemd/system
[root@centos7 ~]# vim /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

 

[Service]
Type=simple
PIDFile=/app/php56/var/run/php-fpm.pid
ExecStart=/app/php56/sbin/php-fpm --nodaemonize --fpm-config /app/php56/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

 

[Install]
WantedBy=multi-user.target
[root@centos7 ~]# systemctl daemon-reload
[root@centos7 ~]# systemctl start php-fpm.service
[root@centos7 ~]# ss -tnl |grep -w 9000
LISTEN 0 128 127.0.0.1:9000 *:*

 


[root@centos7 ~]# vim /etc/httpd24/httpd.conf
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

 

#LoadModule php7_module modules/libphp7.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

 

ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1

 


[root@centos7 ~]# /app/httpd24/bin/httpd -t
Syntax OK
[root@centos7 ~]# systemctl restart httpd24

 

通过浏览器访问 http://192.168.153.7/info.php

 

**实验六  php加速器xcache源码包编译安装

    步骤:1)下载源码包并解压缩至/usr/local/src/目录下

       2)进入/usr/local/src/xcache/,配置编译选项./configure --enable-xcache --with-php-config=/app/php56/bin/php-config

       3)编译及安装:make && make install

       4)将xcache配置文件复制到指定路径并编辑cp /usr/local/src/xcache-3.2.0/xcache.ini /etc/php56/php.d;vim /etc/php56/php.d/xcache.ini

extension = /app/php56/lib/php/extensions/no-debug-non-zts-20131226/xcache.so

       5)执行命令systemctl restart php-fpm.service生效