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