zoukankan      html  css  js  c++  java
  • web服务相关实验(httpd)

    本文以实验为主,介绍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生效

  • 相关阅读:
    ILMerge将源DLL合并到目标EXE
    Nginx+redis的Asp.net
    JwtBearer认证
    Token认证登录以及权限控制
    ES索引
    Linux文本编辑器vim
    集群 安装 配置FastDFS
    When to use next() and return next() in Node.js
    spring-boot-starter-druid
    nodejs express
  • 原文地址:https://www.cnblogs.com/centos-Paul/p/9813038.html
Copyright © 2011-2022 走看看