64532 发表于 2016-4-27 09:11:54

LAMP基于RPM包安装详解

1.LAMP介绍    Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。本文所介绍的是Linux+Apache+MariaDB+PHP,基于RPM包安装的部署过程。
2.环境描述

操作系统IP地址系统环境用途
CentOS 7.1172.18.20.10/16最小化安装Web服务器
CentOS 7.1172.18.20.11/16最小化安装Mariadb服务器
CentOS 6.7172.18.20.20/16最小化安装私有CA
CentOS 6.7172.18.20.21/16最小化安装DNS服务器
WIN 10172.18.20.1/1-客户端主机
    为保证环境不出问题,已关闭iptables和selinuxWeb服务器    用于提供web服务,php以模块的方式安装在Web服务器上。其中一个虚拟主机用于提供phpMyAdmin,另一个虚拟主机用于提供wordpress。

数据库服务器    用于给web服务器以及其他服务器提供数据存储等相关服务。

私有CA    数字证书认证中心的简称,指发放、管理、废除数字证书的机构,在本文中的作用是给web服务器颁发证书实现https。

DNS服务器    用于提供正向解析和方向解析等相关功能。

客户端主机    主要方便于各种测试。

3.安装部署    3.1 mariadb服务器
1
2
3
4
5
6
7
8
yum -y install mariadb-server && systemctl start mariadb.service    ##安装并启动mariadb服务   
mysqladmin -uroot password '123.com'            ## 设置mysql的root用户密码为 123.com
mysql -uroot -p123.com         ## 登陆mysql数据库               
create database wp_DB;   ## 创建wp_DB数据库   
GRANT ALL ON wp_DB.* TO 'ch123'@'172.18.20.10' IDENTIFIED BY 'qwer1234';## 允许来自172.18.20.10的主机的ch123用户对wp_DB数据做各种操作   
FLUSH PRIVILEGES;   ## 刷新配置命令   
SHOW DATABASES;       ## 确定数据库是否已创建成功   
SHOW GRANTS FOR 'ch123'@'172.18.20.10';    ## 确认数据库授权是否成功





    3.2 DNS服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
yum -y install bind bind-utils   ## 安装bind程序和bind客户端工具         
vim /etc/named.rfc1912.zones      ## 修改配置文件,添加一个正向解析区域                  
zone "ch.com." IN {                  
   type master;                  
   file "ch.com.zone";                  
   };      
vim /var/named/ch.com.zone   ## 编辑区域配置文件                     
$TTL 3600                  
$ORIGIN ch.com.                  
@   IN SOA ns1.ch.com. dnsadmin.ch.com. (                        
         2016042101                        
         1H                        
         10M                     
         3D                        
         1D )                     
    IN NS ns1               
ns1 IN A 172.18.20.21               
www IN A 172.18.20.10               
web IN CNAME www      
named-checkconf && systemctl start named.service   ## 检查named配置文件,如果没问题则启动named服务      
ss -anlp | grep named    ## 确保tcp/53号端口是监听状态的      
dig -t A www.ch.com @172.18.20.21    ## 测试DNS服务器是否能解析 www.ch.com





    3.3 私有CA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)    ## 创建私钥      

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655    ## 生成自签证书                     
Country Name (2 letter code) :CN    ## 国家名称                     
State or Province Name (full name) []:Beijing   ## 州或省名称                     
Locality Name (eg, city) :Beijing   ## 市区名称                     
Organization Name (eg, company) :CH   ## 组织名称                     
Organizational Unit Name (eg, section) []:Ops   ## 部门名称                     
Common Name (eg, your name or your server's hostname) []:CA22## 主机名称         
mkdir -pv /etc/pki/CA/{certs,crl,newcerts}         
touch /etc/pki/CA/{serial,index.txt}         
echo 01 > /etc/pki/CA/serial       ## 为CA提供所需的目录及文件         
openssl ca-in/tmp/httpd.csr-out/etc/pki/CA/certs/httpd.crt-days365   ## 当web服务器将证书请求发过来之后,给web服务器签署证书         
scp /etc/pki/CA/certs/httpd.crt root@172.18.20.10:/etc/httpd/ssl   ## 将证书文件回传给web服务器





    3.4 Web服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
yum -y install httpd php php-mysql mod_ssl php-xcache   ## 安装web程序包、php程序包、php-mysql驱动、ssl模块         
vim /etc/resolv.conf    ## 修改DNS指向配置文件                     
nameserver 172.18.20.11## 将DNS服务器改为上面配置的DNS服务器地址         
vim /etc/httpd/conf/httpd.conf## 修改httpd主配置文件             <Directory />               
    AllowOverride none               
    Require all granted   ## 改为允许所有主机访问             </Directory>            
#DocumentRoot "/var/www/html"    ## 禁用中心主机         
vim /etc/httpd/conf.d/vhost.conf    ## 添加一个虚拟主机的配置文件         
DirectoryIndex index.php            
<VirtualHost 172.18.20.10:80>               
    ServerName web.ch.com               
    DocumentRoot "/www/wp"         
<VirtualHost>         
mkdir /var/log/wp            
mkdir -pv /www/wp    ## 创建虚拟主机所需目录         
httpd -t    ## 检查配置文件,如果显示“Syntax OK”表示配置没有问题         
mkdir -pv /etc/httpd/ssl   ## 创建一个用来存放ssl证书的目录         
(umask077; opensslgenrsa -out/etc/httpd/ssl/httpd.key4096)    ## 生成私钥文件   
opensslreq-new-key/etc/httpd/ssl/httpd.key-out /etc/httpd/ssl/httpd.csr-days365   ## 生成证书请求,这里主机名一定要填https用到的主机名地址         
scp /etc/httpd/ssl/httpd.csr root@172.18.20.20:/tmp/    ## 用可靠的方式将证书请求传输给CA主机         
vim /etc/httpd/conf.d/ssl.conf    ## 编辑ssl配置文件            
<VirtualHost 172.18.20.10:443>               
    DocumentRoot "/www/ph"               
    ServerName web.ch.com:443                           
    SSLCertificateFile /etc/httpd/ssl/httpd.crt      ## 指明证书文件存储路径            
    SSLCertificateKeyFile /etc/httpd/ssl/httpd.key   ## 指明私钥文件存储路径         
</VirtualHost>         
mkdir /www/ph   ## 创建https所需目录





4.整合测试
1
2
3
4
5
6
7
8
9
10
vim /www/wp/index.php   ## 编写php连接mysql数据库代码         
<?php         
$conn = mysql_connect('172.18.20.11','ch123','qwer1234');   ## 此处填mariadb 授权的用户和密码         
if ($conn)         
   echo "OK";         
else         
      echo "Failure";         
?>         
cp /www/wp/index.php /www/ph/      
systemctl start httpd.service    ## 启动httpd服务器




    在客户端将DNS服务器指向为172.18.20.21,然后浏览器上分别输入http://www.ch.com 和 https://web.ch.com 显示ok 则表示测试成功
5.安装网站程序
    5.1 wordpress

    这里www.ch.com虚拟主机用于提供wordpress;官方下载地址:   
https://cn.wordpress.org/


1
2
3
4
5
6
7
8
cp wordpress-4.3.1-zh_CN.zip /www/wp    ## 复制wordpress程序到/www/wp目录下   
cp phpMyAdmin-4.4.14.1-all-languages.zip /www/ph   ## 复制phpMyAdmind到/www/ph目录下   
cd /www/wp/    ## 切换至/www/wp目录下   
unzip wordpress-4.3.1-zh_CN.zip   ## 执行解压   
chown -R root:apache wordpress      ## 修改属组为apache用户   
chmod -R g+w wordpress      ## 给apache组赋予写权限   
vim /etc/httpd/conf.d/vhost.conf       ## 修改配置 DocumentRoot "/www/wp/wordpress"   
systemctl reload httpd.service    ## 重载配置文件




    用客户端浏览器访问www.ch.com,按照说明依次下一步操作即可完成安装,需要注意填数据库信息时,填写的是之前mairadb上配置授权的用户和密码,数据库地址填写数据库服务器地址即可。    5.1 phpMyadmin    web.ch.com虚拟主机用于提供phpMyAdmin;官方下载地址:http://www.phpmyadmin.net/downloads/

1
2
3
4
5
6
7
8
9
10
11
12
13
cd /www/ph/    ## 切换至/www/ph/目录下   
unzip phpMyAdmin-4.4.14.1-all-languages.zip## 解压缩phpmyadmin   
chown -R root:apache phpMyAdmin-4.4.14.1-all-languages    ## 修改phpmyadmin目录属组为apache   
chmod -R g+w phpMyAdmin-4.4.14.1-all-languages    ## 赋予apache组对phpmyadmin有写操作   
ln -s phpMyAdmin-4.4.14.1-all-languages phpadmin   ## 对phpmyadmin创建符号链接   
yum -y install php-mbstring   ## 安装支持中文字符集程序包   
cd phpadmin/   ## 切换至phpadmin目录下   
cp config.sample.inc.php config.inc.php    ## 复制模板配置文件   
vim config.inc.php    ## 修改配置文件      
   $cfg['Servers'][$i]['host'] = '172.18.20.11';   ## 将这一项改为mariadb数据库的地址
vim /etc/httpd/conf.d/ssl.conf   ## 修改https配置文件中 DocumentRoot "/www/ph/phpadmin"
httpd -t    ## 检查配置是否正确   
systemctl reload httpd.service    ## 重载配置文件




    用客户端浏览器访问https://web.ch.com 输入用户名密码,就可以访问phpmyadmin了
6.压力测试    6.1 xcache    xcache是一个开源的 opcode 缓存器/优化器,能够提高web服务器上的 PHP 性能. 通过把编译 PHP 后的数据缓冲到共享内存从而避免重复的编译过程, 能够直接使用缓冲区已编译的代码从而提高速度. 通常能够提高页面生成速率2到5倍, 降低服务器负载。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vim /etc/php.d/xcache.ini    ## 编辑xcache 配置文件   
   
extension = xcache.so   
   
xcache.admin.enable_auth = On   
xcache.admin.user = "mOo"   
xcache.admin.pass = "md5 encrypted password"   
   
xcache.shm_scheme = "mmap"   
xcache.size = 60M   
xcache.count = 1   
xcache.slots = 8K   
xcache.ttl = 0   
xcache.gc_interval = 0   
xcache.var_size = 4M   
xcache.var_count = 1   
xcache.var_slots = 8K




    配置详情请参考 http://xcache.lighttpd.net/wiki/XcacheIni

    6.2 ab
    ab是apache自带的压力测试工具

1
2
3
ab -n 1000 -c 100 http://172.18.20.10/index.php                        
       -n表示请求总数                        
       -c表示模拟的并行数




    测试生成后,各字段的含义

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Server Software:      Apache/2.4.6         ## 平台版本   
Server Hostname:      172.18.20.10         ## 服务器主机名   
Server Port:            80                   ## 服务器端口   
Document Path:          /index.php         ## 测试页面文档   
Document Length:      8920 bytes         ## 页面文档大小   
Concurrency Level:      100                  ## 并发连接数   
Time taken for tests:   20.863 seconds       ## 整个测试持续的时间   
Complete requests:      1000               ## 完成的请求数量   
Failed requests:      0                  ## 失败的请求数量   
Write errors:         0                  ## 等待的请求数量   
Non-2xx responses:      1000               ## 请求响应数量   
Total transferred:      388000 bytes         ## 整个场景中的网络传输量   
HTML transferred:       0 bytes            ## 整个场景中的HTML内容传输量   
Requests per second:    47.93 [#/sec] (mean)   ## 吞吐率,每秒事务数 ,后面括号中的 mean 表示这是一个平均值   
Time per request:       2086.280 (mean)   ## 用户平均请求等待时间,后面括号中的 mean表示这是一个平均值   
Time per request:       20.863 (mean, across all concurrent requests)## 服务器平均请求处理时间   
Transfer rate:          18.16 received## 平均每秒网络上的流量   
Connection Times (ms)             ## 网络上消耗的时间的分解                  
               minmean[+/-sd] median   max   
Connect:      0    368.3      0   2138   
Processing:    38 2045 1472.0   1393    7854   
Waiting:       36 2042 1472.0   1392    7854   
Total:         38 2048 1475.9   1393    7854   
Percentage of the requests served within a certain time (ms)   ## 整个场景中所有请求的响应情况   
50%   1393   
66%   1654   
75%   2247   
80%   3000   
90%   4529   
95%   5331   
98%   6420   
99%   6750   
100%7854 (longest request)





7.实验中遇到的问题
    7.1 时间同步问题    主机之间时间不同步可能会导致配置不生效,所以实验前一定要确保所有主机时间同步,可以先安装yum -y install ntp;然后同步时间服务器 ntpdata NTP_SERVER_IP 。

    7.2 配置文件问题
    刚才不小心把httpd主配置文件的一行信息不小心删除,然后保存退出了,httpd服务却怎么也起不来,这个时候我才知道备份配置文件的重要性了。所以说,在安装所以的服务程序之后,一定要在配置之前做好配置。

页: [1]
查看完整版本: LAMP基于RPM包安装详解