专栏首页运维前线CentOS 7.2 配置Apache服务(httpd)--下篇

CentOS 7.2 配置Apache服务(httpd)--下篇

版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/52994505

一、Perl + mod_perl

  • 安装mod_perl使Perl脚本速度快
[1]  安装mod_perl
# 从EPEL安装
[root@linuxprobe ~]# yum --enablerepo=epel -y install mod_perl
[2]  配置PerlRun模式,总是将Perl解释器放在RAM上。  
[root@linuxprobe ~]# vi /etc/httpd/conf.d/perl.conf
# line 15: 取消注释 ( check codes and output warnings to logs )

PerlSwitches -w
# line 24: 取消注释

PerlSwitches -T
# line 30-36: 取消注释像下面一样

Alias /perl /var/www/perl
<Directory /var/www/perl> # the directory for mod_perl environment

    SetHandler perl-script # processes files as perl-scripts under this directory

#    AddHandler perl-script .cgi
# set specific extension if do do not want to processes all files as CGI

#    PerlResponseHandler ModPerl::Registry
    PerlResponseHandler ModPerl::PerlRun
# specify PerlRun mode

    PerlOptions +ParseHeaders
    Options +ExecCGI
</Directory>
# line 43-49: 取消注释并添加如下信息

<Location /perl-status>
    SetHandler perl-script
    PerlResponseHandler Apache2::Status
    Require ip 127.0.0.1 10.1.1.1/24
# add access permission

#    Order deny,allow
#    Deny from all
#    Allow from .example.com
</Location>
[root@linuxprobe ~]# systemctl restart httpd

[3]  创建测试脚本以确保设置不是ploblem。如果显示如下所示的结果,就可以。  
[root@linuxprobe ~]# mkdir /var/www/perl
[root@linuxprobe ~]# vi /var/www/perl/test-mod_perl.cgi

#!/usr/bin/perl

use strict;
use warnings;

print "Content-type: text/html\n\n";
print "<html>\n<body>\n";
print "<div style=\"width:100%; font-size:40px; font-weight:bold; text-align:center;\">";

my $a = 0;
&number();

print "</div>\n</body>\n</html>";

sub number {
    $a++;
    print "number \$a = $a";
}

[root@linuxprobe ~]# chmod 705 /var/www/perl/test-mod_perl.cgi 
#客户端浏览器访问:http://linuxprobe.org/perl/test-mod_perl.cgi
[4]  配置在RAM上具有代码缓存的注册表模式
[root@linuxprobe ~]# vi /etc/httpd/conf.d/perl.conf
Alias /perl /var/www/perl
<Directory /var/www/perl>
    SetHandler perl-script
    PerlResponseHandler ModPerl::Registry # uncomment

#
   PerlResponseHandler ModPerl::PerlRun # comment out

    PerlOptions +ParseHeaders
    Options +ExecCGI
</Directory>
[root@linuxprobe ~]# systemctl restart httpd 
[5] 访问作为[4]节的示例的测试脚本,然后变量通过重新加载而增加,因为变量被高速缓存在RAM上。所以有必要编辑注册表模式的代码,这里浏览器没刷新一次,$a值加一。
[root@linuxprobe ~]# vi /var/www/perl/test-mod_perl.cgi

#!/usr/bin/perl

use strict;
use warnings;

print "Content-type: text/html\n\n";
print "<html>\n<body>\n";
print "<div style=\"width:100%; font-size:40px; font-weight:bold; text-align:center;\">";

my $a = 0;

&number($a
);

print "</div>\n</body>\n</html>";

sub number {

    my($a) = @_;

    $a++;
    print "number \$a = $a";
}
[6]顺便说一下,可以看到mod_perl的状态来访问“http://(主机名或IP地址)/ perl-status”。 

二、PHP + PHP-FPM

  • 安装PHP-FPM使PHP脚本速度快
[1]安装PHP,请参考这里。     
[2]安装PHP-FPM。   
[root@linuxprobe ~]# yum -y install php-fpm
[3]     配置Apache httpd。
[root@linuxprobe ~]# vi /etc/httpd/conf.d/php.conf
# line 5: change like follows
<FilesMatch \.php$>
#
    SetHandler application/x-httpd-php
    SetHandler "proxy:fcgi://127.0.0.1:9000"

</FilesMatch>
[root@linuxprobe ~]# systemctl start php-fpm
[root@linuxprobe ~]# systemctl enable php-fpm
[root@linuxprobe ~]# systemctl restart httpd

[4]创建phpinfo并访问它,然后如果“FPM / FastCGI”显示,它是确定。    
[root@linuxprobe ~]# echo '<?php phpinfo(); ?>' > /var/www/html/info.php 

三、Python + mod_wsgi

  • 安装mod_wsgi(WSGI:Web服务器网关接口),使Python脚本更快
[1] 安装mod_wsgi  .
[root@linuxprobe ~]# yum -y install mod_wsgi
[2] 例如,将mod_wsgi配置为可以访问/ test_wsgi,后端是/var/www/html/test_wsgi.py.
[root@linuxprobe ~]# vi /etc/httpd/conf.d/wsgi.conf
# create new

WSGIScriptAlias /test_wsgi /var/www/html/test_wsgi.py
[root@linuxprobe ~]# systemctl restart httpd

[3] 创建您在上面设置的测试脚本.
[root@linuxprobe ~]# vi /var/www/html/test_wsgi.py
# create new

def application(environ,start_response):
    status = '200 OK'
    html = '<html>\n' \
           '<body>\n' \
           '<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">\n' \
           'mod_wsgi Test Page\n' \
           '</div>\n' \
           '</body>\n' \
           '</html>\n'
    response_header = [('Content-type','text/html')]
    start_response(status,response_header)
    return [html]
[4]配置如果你使用Django。 ([参考安装Django](http://blog.csdn.net/wh211212/article/details/52992413))例如,在“wang”下拥有的“/home/wang/ venv/testproject”下配置“testapp”

[root@linuxprobe ~]# vi /etc/httpd/conf.d/django.conf
# create new

WSGIDaemonProcess testapp python-path=/home/wang/venv/testproject:/home/wang/venv/lib/python2.7/site-packages
WSGIProcessGroup testapp
WSGIScriptAlias /django /home/wang/venv/testproject/testproject/wsgi.py

<Directory /home/wang/venv/testproject>
    Require all granted
</Directory>

[root@linuxprobe ~]# systemctl restart httpd 

四、访问日志分析器:AWstats

  • 安装AWstats,它报告http日志以分析对http服务器的访问。
[1] 安装AWstats。  
# install from EPEL
[root@linuxprobe ~]# yum --enablerepo=epel -y install awstats
# awstats.(hostname).conf是自动生成的
[root@linuxprobe ~]# vi /etc/awstats/awstats.linuxprobe.org.conf
# line 122: change
# if your config for log format in httpd.conf is 'combined' Set here '1'
# If log-config is 'common' set here '4', but in this case, some informations can't be get (browser info and so on)
LogFormat=1
# line 153: specify your hostname
SiteDomain="linuxprobe.org
# line 168: set IP address you'd like to exclude
HostAliases="localhost 127.0.0.1 REGEX[server\.world$] REGEX[^10\.1\.1\.]
"
[root@linuxprobe ~]# vi /etc/httpd/conf.d/awstats.conf
# line 30: IP address you permit to access
Require ip 10.1.1.0/24

[root@linuxprobe ~]# systemctl restart httpd
# generate reports ( reports are updated for hourly by Cron )

[root@linuxprobe ~]# /usr/share/awstats/linuxproberoot/cgi-bin/awstats.pl -config=linuxprobe.org -update

Create/Update database for config "/etc/awstats/awstats.linuxprobe.org.conf" by AWStats version 7.4 (build 20150714)
From data in log file "/var/log/httpd/access_log"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)...
Jumped lines in file: 0
Parsed lines in file: 165
 Found 0 dropped records,
 Found 0 comments,
 Found 0 blank records,
 Found 0 corrupted records,
 Found 0 old records,
 Found 165 new qualified records.
[2]访问“http://(您的服务器的名称或IP地址/)/awstats/awstats.pl”,然后显示以下屏幕,可以看到httpd日志报告。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • CentOS 7 设置密码规则

    版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://b...

    shaonbean
  • CentOS 7.2 配置Apache服务(httpd)--上篇

    版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog...

    shaonbean
  • CentOS 7 配置Ruby语言开发环境

    CentOS 7 配置Ruby语言开发环境 安装Ruby 2.2 CentOS7存储库中的Ruby版本为2.0,但如果需要,可以使用RPM软件包安装2.2 ...

    shaonbean
  • CentOS 7 配置Ruby语言开发环境

    CentOS 7 配置Ruby语言开发环境 安装Ruby 2.2 CentOS7存储库中的Ruby版本为2.0,但如果需要,可以使用RPM软件包安装2.2 ...

    shaonbean
  • 重磅!微软发布 Visual Studio Online:Web 版 VS Code + 云开发环境

    前天(北京时间 2019 年 11 月 4 日),在 Microsoft Ignite 2019 大会上,微软正式发布了 Visual Studio Onlin...

    张晓衡
  • 重磅!微软发布 Visual Studio Online:Web 版 VS Code + 云开发环境

    昨天(北京时间 2019 年 11 月 4 日),在 Microsoft Ignite 2019 大会上,微软正式发布了 Visual Studio Onlin...

    GitHubDaily
  • Intellij IDEA Debug 调试技巧

    F8: 跳到下一步 F7:进入到代码 Alt+shift+F7:强制进入代码 Shift+F8:跳到下一个断点 Atl+F9:运行到光标处 ctrl+shift...

    Java技术栈
  • NCL高效快速精准提取不规则区域内的格点数据

    通常情况下,要获取某个区域内的格点数据,如果要求不是很高,直接采取矩形框挑选方法——即锁定所需范围内的经纬度,就能挑选出需要的数据。而对于不规则的范围,数据的匹...

    气象学家
  • PHP 面试知识梳理

    算法与数据结构 BTree和B+tree BTree B树是为了磁盘或者其他存储设备而设计的一种多叉平衡查找树,相对于二叉树,B树的每个内节点有多个分支,即多叉...

    wangxl
  • PHP 面试知识梳理

    算法与数据结构 BTree和B+tree BTree B树是为了磁盘或者其他存储设备而设计的一种多叉平衡查找树,相对于二叉树,B树的每个内节点有多个分支,即多叉...

    程序员宝库

扫码关注云+社区

领取腾讯云代金券