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 [email protected]:/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