lamp之调试lamp和ab压力测试
更新:HHH   时间:2023-1-7


LAMP:

    php和mysql建立关联:

        php-mysql


        #yum install php-mysql yum安装的时候才用,编译安装不需要


    php连接mysql测试脚本:

        #vim index.php

        <?php

        $conn = mysql_connect("HOST","USERNAME","PASSWORD") or die("connect err: ".mysql_error());

        echo "MySQL conn OK!";

        ?>


    httpd+php

        CGI

        Modules

        FastCGI/fpm


测试LAMP:

    1.测试php

        #cd /usr/local/httpd/htdocs

        #vim index.html

            <?php

            phpinfo()

            ?>        

        #mv index.html index.php


        编辑完成后打开网页,若能看到php相关信息则说明成功。


    2.测试php和mysql

        #vim index.php

        <?php

        $conn = mysql_connect("HOST","USERNAME","PASSWORD") or die("connect err: ".mysql_error());

        echo "MySQL conn OK!";

        ?>


        编辑完成后若显示conn ok则表示数据路连接正常。


    3.启用虚拟主机

        #vim /etc/httpd/httpd.conf

            #DocumentRoot /usr/local/httpd/htdocs 注释中心主机配置

            Include /etc/httpd/extra/httpd-vhost.conf 取消注释,启动虚拟主机的配置文件。

            LoadModule log_config_modules/mod_log_config.so 启动日志配置模块。


        #vim /etc/httpd/extra/httpd-vhost.conf

            <VirtualHost 192.168.123.10:80>

                ServerName www.test.com

                DocumentRoot "/www/test.com"

                ErrorLog "/var/log/httpd/test.com_error_log"

                CustomLog "/var/log/httpd/test.com_access_log" 

                combined

                <Directory "/www/test.com">

                    Options none

                    AllowOverride none

                    Require all granted

                </Directory>


            </VirualHost>


            <VirtualHost 192.168.123.10:80>

                ServerName www.apk.org

                DocumentRoot "/www/apk.org"

                ErrorLog "/var/log/httpd/apk.org_error_log"

                CustomLog "/var/log/httpd/apk.org_access_log" common

                <Directory "/www/apk.org">

                    Options none

                    AllowOverride none

                    Require all granted

                </Directory>

            </VirualHost>


        #mkdir /www/{test.com,apk.org}

        #mkdir /var/log/httpd/{test.com,apk.org}

        #chmod 755 -R /www



    3.让httpd支持https,可以对单独的虚拟主机进行设置。


        注意:一个ip地址上只能建立1个支持ssl的主机。


        #vim /etc/httpd/httpd.conf

            LoadModule ssl_module modules/mod_ssl.so

            Include /etc/httpd/extra/httpd-ssl.conf


        #vim /etc/httpd/extra/httpd-ssl.conf

            <VirtualHost * :443>

                ServerName www.apk.org

                DocumentRoot "/www/apk.org"

                ErrorLog "/var/log/httpd/apk.org_error_log"

                TransferLog "/var/log/httpd/apk.org_access_log" common

                <Directory "/www/apk.org">

                    Options none

                    AllowOverride none

                    Require all granted

                </Directory>

            </VirualHost>



        证书服务器上:

            1.生成私钥:

                #cd /etc/pki/CA

                #(umask 077;openssl genrsa -out private/cakey.pem 2048)


            2.编辑openssl配置文件:

                #vim ../tls/openssl.cnf

                    dir=/etc/pki/CA 修改CA默认目录。

                    

                    [ req_distinguished_name ]


                    修改国家、份等等信息,后续再次申请就无需输入。


                #mkdir certs crl newcerts 根据配置文件的内容创建相关的文件夹和文件

                #touch index.txt

                #echo 00 > serial


            3.生成自签证书:

                #openssl req -new -x509 -key private/cakey.pem -out    cacert.pem -days 3650

                    Common Name: ca.test.com 这里填CA的主机名。



            6.签署证书:

                #openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -dyas 3650


        httpd服务器上:

            4.生成证书请求:

                #cd /etc/httpd/

                #mkdir ssl

                #cd ssl

                #(umask 077;openssl genrsa 2048 > httpd.key ) 生成私钥。

                #openssl req -new -key httpd.key -out httpd.csr 生成证书签署请求。

                    Common Name: 虚拟主机的名称。


            5.将生成的证书请求文件复制到证书服务器:

                #scp httpd.scr root@192.168.100.4:/tmp


            7.将颁发的证书复制到本机:

                #scp 192.168.100.4:/tmp/httpd.crt ./

                #ll

                    httpd.crt

                    httpd.csr

                    httpd.key



    4.若php以fpm模式安装,则还需要对httpd进行如下配置:

        启用模块支持:

            #vim /etc/httpd/httpd.conf

                LoadModule proxy_module modules/mod_proxy.so

                LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so


        配置虚拟主机支持fpm:

            #vim /etc/httpd/extra/httpd-vhost.conf

                在每个虚拟主机内添加如下内容

                ProxyRequests Off 

                    关闭httpd的正向代理功能。


                ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/DIR/DOCUMENT_ROOT/$1

                    类似于ProxyPass URI,将请求的地址转换到另外一台主机上的地址。此行为被称为反向代理。

                    此参数支持正则表达式,把以.php结尾的文件请求发送到php-fpm进程,php-fpm至少需要知道运行的目录和URI,所以这里直接在fcgi://127.0.0.1:9000后指明了这两个参数,其它的参数的传递已经被mod_proxy_fcgi.so进行了封装,不需要手动指定。


            例如:

                <VirtualHost *:80>

                    DocumentRoot "/www/test.com"

                    ServerName test.com

                    ServerAlias www.test.com


                    ProxyRequests Off

                    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/test.com/$1


                    <Directory "/www/test.com">

                        Options none

                        AllowOverride none

                        Require all granted

                    </Directory>

                </VirtualHost>


压力测试:

    ab(apache benchmark)

        工具位置:

            httpd安装目录下的bin文件夹下。

            usr/local/httpd/bin/ab


            #ab [OPTION] HOSTNAME|IP:PORT/FILE

                [OPTION]

                    -c NUM 指定并发数,单次发起的请求个数。

                    -n NUM 请求的总个数。

                    -r 忽略错误信息



        例如:

            #ab -c 10 -n 100 http://www.test.com/index.php

            


        注意:

            测试所用的客户端会有系统限制,默认linux允许单个进程同时访问1000个文件。使用以下命令调整

            #ulimit -n NUM


    http_load

    webbench

    siege


LAMP优化:

    通过vmstat命令观察系统状况,主要注意bi bo in cs


    #vmstat 1


返回web开发教程...