什么是LAMP:
目前最为成熟的一种企业网站应用模式,可提供动态Web站点应用及开发环境
构成组件:
Linux、Apache、MySQL、PHP/Perl/Python
LAMP的优势:
成本低廉、可定制、易于开发、方便易用、安全和稳定
实验环境:
服务端: CentOS 7.2x86_64 IP:172.16.251.138
客户端:CentOS 6.7x86_64 IP:172.16.251.164
准备工作:
[root@station138 ~]# iptables –F //关闭防火墙
[root@station138 ~]#setenforce 0 //关闭SeLinux
安装所需软件:
[root@station138 ~]#yum -y install httpd mariadb-server php php-mysql
检查是否成功安装:
[root@station138 ~]#rpm -qa httpd php php-mysql mysql-server
启动服务:
[root@station138 ~]#systemctl start httpd.service mariadb.service
创建虚拟主机:
[root@station138 conf.d]# vim/etc/httpd/conf.d/v1.conf
<VirtualHost 172.16.251.138:80>
ServerNamewww1.b.com
DocumentRoot/var/www/virt1
<Directory"/var/www/viet1">
OptionsNone
AllowOverrideNone
Requireall granted
</Directory>
</VirtualHost>
[root@station138 conf.d]# vim/etc/httpd/conf.d/v2.conf
<VirtualHost 172.16.251.138:80>
ServerNamewww2.b.com
DocumentRoot/var/www/virt2
<Directory"/var/www/viet2">
OptionsNone
AllowOverrideNone
Requireall granted
</Directory>
</VirtualHost>
部署应用:
1.部署wordpress:
[root@station138 conf.d]# mkdir -pv/var/www/virt{1,2}
[root@station138 ]# unzipwordpress-4.3.1-zh_CN.zip
[root@station138 wordpress]# vim/var/www/virt1/wordpress/wp-config.php
/** WordPress数据库的名称 */
define('DB_NAME', 'wpdb');
/** MySQL数据库用户名 */
define('DB_USER', 'wp');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'wp123');
/** MySQL主机 */
define('DB_HOST', '172.16.251.138');
/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');
2.创建数据库授权用户:
[root@station138 ~]# vim /etc/my.cnf
innodb_file_per_table = ON
skip_name_resolve = ON
[root@station138 ~]# mysql_secure_installation
[root@station138 ~]# mysql -uroot -p
MariaDB [(none)]> GRANT ALL ON wpdb.* TO 'wp'@'172.16.%.%' IDENTIFIED BY 'wp123';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> CREATE DATABASE wpdb;
3.部署phpMyAdmin:
[root@station138 ]#unzip phpMyAdmin-4.4.14.1-all-languages.zip
[root@station138 virt2]# ln -sv phpMyAdmin-4.4.14.1-all-languages/ phpMyAdmin
[root@station138 phpMyAdmin]#cp config.sample.inc.php config.inc.php
[root@station138 phpMyAdmin]# openssl rand -base64 10
DOIVpcsRTTUqsg== //生成随机数
[root@station138 phpMyAdmin]# vim config.inc.php
$cfg['blowfish_secret'] = 'DOIVpcsRTTUqsg'
[root@station138 ]# yum install php-mbstring //扩展模块
[root@station138 ]# httpd -t
4.为phpMyAdmim提供https服务:
建立私有CA:
a.生成私钥:
[root@station138 CA]#(umask 077; openssl genrsa -out private/cakey.pem 2048)
b.生成自签证书:
[root@station138 CA]#openssl req -new -x509 -key private/cakey.pem -out cacert.pem
c.提供辅助文件
[root@station138 CA]#touch index.txt
[root@station138 CA]#echo 01 > serial
d.生成私钥:
[root@station138 CA]#mkdir -pv /etc/httpd/ssl
[root@station138 CA]# (umask 077; openssl genrsa -out httpd.key 1024)
e.生成证书请求
[root@station138 ssl]# openssl req -new -key httpd.key -out httpd.csr
f.CA签发证书
[root@station138 ssl]# cp httpd.csr /tmp/
[root@station138 ssl]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt
[root@station138 ssl]# cp /etc/pki/CA/certs/httpd.crt /etc/httpd/ssl/
g.安装mod_ssl模块,及使用的证书
[root@station138 ~]# httpd -M | grep ssl
[root@station138 ~]# yum -y install mod_ssl
[root@station138 ~]# rpm -ql mod_ssl
[root@station138 ~]#vim/etc/httpd/conf.d/ssl.conf
<VirtualHost _default_:443>
DocumentRoot "/var/www/virt2"
ServerName www2.b.com:443
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
<Directory "/var/www/virt2">
SSLOptions +StdEnvVars
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
[root@station138 ~]# systemctl restart httpd
[root@station138 ~]# ss -tnl
LISTEN 0 128 :::443
为php安装xcache加速器:
[root@station138 ~]# yum install php-xcache
客户端测试:
[root@localhost ~]# cat /etc/hosts
172.16.251.138 www1.b.com www2.b.com
1.测试php:
[root@station138 virt1]# cat index.php
<?php
phpinfo();
?>
2.测试php是否连接mariadb:
<?php
$conn = mysql_connect('172.16.251.138','testuser','testpass');
if($conn)
echo "OK";
else
echo "Failure";
?>
3.测试wordpress:
4.测试phpMyAdmin:
5.测试https:
6.压力测试:
[root@station138 ~]# ab -c 100 -n 1000 www1.b.com/wordpress/index.php
Concurrency Level: 10
Time taken for tests: 69.750 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Non-2xx responses: 1000
Total transferred: 339000 bytes
HTML transferred: 0 bytes
Requests per second: 14.34 [#/sec] (mean)
Time per request: 697.503 [ms] (mean)
Time per request: 69.750 [ms] (mean, across all concurrent requests)
Transfer rate: 4.75 [Kbytes/sec] received