阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

LAMP架构实现网站动静分离及流行博客论坛安装实验

144次阅读
没有评论

共计 43180 个字符,预计需要花费 108 分钟才能阅读完成。

静分离能有效提升站点访问效率,此时 apache 工作在反向代理模式。PHP 不在作为 apache 的模块。而是以独立服务器的方式运行。两者之间通过 fcgi 机制建立通讯。

LAMP 架构实现网站动静分离及流行博客论坛安装实验

Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境  http://www.linuxidc.com/Linux/2014-10/107924.htm

Windows 7 下硬盘安装 Ubuntu 14.10 图文教程 http://www.linuxidc.com/Linux/2014-10/108430.htm

U 盘安装 Ubuntu 14.10 http://www.linuxidc.com/Linux/2014-10/108402.htm

Ubuntu 14.10 正式发布下载 http://www.linuxidc.com/Linux/2014-10/108363.htm

Ubuntu 14.04 LTS 如何升级到 Ubuntu 14.10  http://www.linuxidc.com/Linux/2014-10/108381.htm

Ubuntu 14.10 下安装 LAMP 服务图文详解  http://www.linuxidc.com/Linux/2014-12/110082.htm

. 安装 DNS 服务实现域名解析

1.安装bind

[root@www ~]# yum install bind

 

2.配置 named 主配置文件

[root@www ~]# vim /etc/named.conf

//

// named.conf

//

// Provided by Red Hat bind package toconfigure the ISC BIND named(8) DNS

// server as a caching only nameserver (asa localhost DNS resolver only).

//

// See /usr/share/doc/bind*/sample/ forexample named configuration files.

//

 

options {

//     listen-on port 53 {127.0.0.1;};

//     listen-on-v6 port 53 {::1;};

       directory      “/var/named”;

       dump-file      “/var/named/data/cache_dump.db”;

       statistics-file “/var/named/data/named_stats.txt”;

       memstatistics-file “/var/named/data/named_mem_stats.txt”;

//     allow-query    {localhost;};

       recursion yes;

 

//     dnssec-enable yes;

//     dnssec-validation yes;

//     dnssec-lookaside auto;

 

       /* Path to ISC DLV key */

       /*bindkeys-file “/etc/named.iscdlv.key”;

 

       managed-keys-directory “/var/named/dynamic”;

       */

};

 

logging {

       channel default_debug {

               file”data/named.run”;

                severity dynamic;

       };

};

 

zone “.” IN {

       type hint;

       file “named.ca”;

};

 

include”/etc/named.rfc1912.zones”;

include “/etc/named.root.key”;

 

3.配置区域配置文件

1
2
3
4
5
[root@www ~]# vim /etc/named.rfc1912.zones
zone "stu31.com" IN {
       type master;
       file "stu31.com.zone";
};

 

 

4.配置区域解析库文件(正向)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@www ~]# vim /var/named/stu31.com.zone
$TTL 600
$ORIGIN stu31.com.
@      IN      SOA     ns1.stu31.com.  root@stu31.com (
                        20141219
                        1M
                        2H
                        3D
                        6M )
@      IN      NS      ns1
       IN      MX   5 mail
ns1    IN      A       172.16.31.20
www    IN      A       172.16.31.20
bbs    IN      A       172.16.31.20
pmp    IN      A       172.16.31.20
mail   IN      A       172.16.31.20
pop3   IN      CNAME   mail
iamp4  IN      CNAME   mail

更改权限及属主属组

1
2
[root@www ~]# chmod 640/var/named/stu31.com.zone
[root@www ~]# chown :named/var/named/stu31.com.zone

 

5.检查语法

1
2
3
4
[root@www ~]# named-checkconf
[root@www ~]# named-checkzone stu31.com/var/named/stu31.com.zone
zone stu31.com/IN: loaded serial 20141219
OK

 

6.启动 named 服务

1
2
3
[root@www ~]# service named start
Generating /etc/rndc.key:                                  [OK]
Starting named:                                           [OK]

 

将本地网络的 DNS 服务器地址指向172.16.31.20

1
2
[root@www ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS=172.16.31.20

 

测试完全区域:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@www ~]# dig -t axfr stu31.com @172.16.31.20
  
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t axfr stu31.com@172.16.31.20
;; global options: +cmd
stu31.com.              600     IN     SOA     ns1.stu31.com.root\@stu31.com.stu31.com. 2014121903 60 7200 259200 360
stu31.com.              600     IN     NS      ns1.stu31.com.
stu31.com.              600     IN     MX      5 mail.stu31.com.
bbs.stu31.com.          600     IN     A       172.16.31.20
iamp4.stu31.com.        600    IN      CNAME   mail.stu31.com.
mail.stu31.com.         600    IN      A       172.16.31.20
ns1.stu31.com.          600     IN     A       172.16.31.20
pmp.stu31.com.          600     IN     A       172.16.31.20
pop3.stu31.com.         600    IN      CNAME   mail.stu31.com.
web.stu31.com.          600     IN     A       172.16.31.20
www.stu31.com.          600     IN     A       172.16.31.20
stu31.com.              600     IN     SOA     ns1.stu31.com.root\@stu31.com.stu31.com. 2014121903 60 7200 259200 360
;; Query time: 2 msec
;; SERVER: 172.16.31.20#53(172.16.31.20)
;; WHEN: Mon Dec 22 08:31:22 2014
;; XFR size: 12 records (messages 1, bytes304)

 

. 源码安装httpd-2.4.10

 

1.安装 aprapr-util

1
2
3
4
[root@www ~]# tar xf apr-1.5.0.tar.bz2
[root@www ~]# cd apr-1.5.0
[root@www apr-1.5.0]# ./configure--prefix=/usr/local/apr
[root@www apr-1.5.0]# make && makeinstall

 

1
2
3
4
5
[root@www apr-1.5.0]# cd ..
[root@www ~]# tar xf apr-util-1.5.3.tar.bz2
[root@www ~]# cd apr-util-1.5.3
[root@www apr-util-1.5.3]# ./configure--prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@www apr-util-1.5.3]# make &&make install

 

设置 aprapr-util成为系统环境变量

1
2
[root@www apr-util-1.5.3]# vim/etc/profile.d/apr.sh
exportPATH=/usr/local/apr/bin:/usr/local/apr-util/bin:$PATH

 

2.源码安装httpd

1
2
3
[root@www ~]# tar xf httpd-2.4.10.tar.bz2
[root@www ~]# cd httpd-2.4.10
[root@www httpd-2.4.10]# ./configure--prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-rewrite --with-z --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event

编译参数注释

–prefix=        #指定安装到 /usr/local/apache 路径下

–sysconfdir=    #指定配置文件安装到 /etc/httpd24

–enable=so      #支持动态装卸载模块

–enable-ssl    #支持 https 加密传输

–enable-rewrite #支持 URL 重写

–enable-cgi    #支持 cgi 格式脚本

–with-z         #支持 zlib 压缩

–with-pcre      #支持扩展正则表达式

–with-apr      #指定 apr 安装位置

–with-apr-util  #指定 apr-util 安装位置

–enable-mpms-shared  #mpm 三种模式以共享模块的方式编译进去

–enable-mpm    #httpd启动是默认是开启 event 模式

–enable-rewrite #支持反向代理

 

安装:

1
[root@www httpd-2.4.10]#make &&make install

 

3.创建 httpd 服务脚本(因为系统已安装 httpd,我们需要安装到其他路径,服务脚本也一样要更改名称,与原httpd 服务区分)

[root@www httpd-2.4.10]# cp /etc/rc.d/init.d/httpd httpd24

[root@www httpd-2.4.10]# vim httpd24

#!/bin/bash

#

# httpd        Startup script for the Apache HTTPServer

#

# chkconfig: – 85 15

# description: The Apache HTTP Server is anefficient and extensible  \

#              server implementing the currentHTTP standards.

# processname: httpd

# config: /etc/httpd/conf/httpd.conf

# config: /etc/sysconfig/httpd

# pidfile: /var/run/httpd/httpd.pid

#

### BEGIN INIT INFO

# Provides: httpd

# Required-Start: $local_fs $remote_fs$network $named

# Required-Stop: $local_fs $remote_fs$network

# Should-Start: distcache

# Short-Description: start and stop ApacheHTTP Server

# Description: The Apache HTTP Server is anextensible server

# implementing the current HTTP standards.

### END INIT INFO

 

# Source function library.

. /etc/rc.d/init.d/functions

 

#if [-f /etc/sysconfig/httpd]; then

#       . /etc/sysconfig/httpd

#fi

 

# Start httpd in the C locale by default.

HTTPD_LANG=${HTTPD_LANG-“C”}

 

# This will prevent initlog from swallowingup a pass-phrase prompt if

# mod_ssl needs a pass-phrase from theuser.

INITLOG_ARGS=””

 

# Set HTTPD=/usr/sbin/httpd.worker in/etc/sysconfig/httpd to use a server

# with the thread-based “worker”MPM; BE WARNED that some modules may not

# work correctly with a thread-based MPM;notably PHP will refuse to start.

 

# Path to the apachectl script, serverbinary, and short-form for messages.

apachectl=/usr/local/apache/bin/apachectl

httpd=${HTTPD-/usr/local/apache/bin/httpd}

prog=httpd

pidfile=${PIDFILE-/var/run/httpd/httpd.pid}

lockfile=${LOCKFILE-/var/lock/subsys/httpd}

RETVAL=0

STOP_TIMEOUT=${STOP_TIMEOUT-10}

 

# The semantics of these two functionsdiffer from the way apachectl does

# things — attempting to start whilerunning is a failure, and shutdown

# when not running is also a failure.  So we just do it the way init scripts

# are expected to behave here.

start() {

       echo -n $”Starting $prog: “

       LANG=$HTTPD_LANG daemon –pidfile=${pidfile} $httpd $OPTIONS

       RETVAL=$?

       echo

       [$RETVAL = 0] && touch ${lockfile}

       return $RETVAL

}

 

# When stopping httpd, a delay (of default10 second) is required

# before SIGKILLing the httpd parent; thisgives enough time for the

# httpd parent to SIGKILL any errantchildren.

stop() {

       echo -n $”Stopping $prog: “

       killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd

       RETVAL=$?

       echo

       [$RETVAL = 0] && rm -f ${lockfile} ${pidfile}

}

reload() {

   echo -n $”Reloading $prog: “

   if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then

       RETVAL=6

       echo $”not reloading due to configuration syntax error”

       failure $”not reloading $httpd due to configuration syntaxerror”

   else

       # Force LSB behaviour from killproc

       LSB=1 killproc -p ${pidfile} $httpd -HUP

       RETVAL=$?

       if [$RETVAL -eq 7]; then

           failure $”httpd shutdown”

       fi

   fi

   echo

}

 

# See how we were called.

case “$1” in

 start)

       start

       ;;

 stop)

       stop

       ;;

 status)

       status -p ${pidfile} $httpd

       RETVAL=$?

       ;;

 restart)

       stop

       start

       ;;

 condrestart|try-restart)

       if status -p ${pidfile} $httpd >&/dev/null; then

                stop

                start

       fi

        ;;

 force-reload|reload)

       reload

       ;;

 graceful|help|configtest|fullstatus)

       $apachectl $@

       RETVAL=$?

       ;;

  *)

       echo $”Usage: $prog{start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}”

       RETVAL=2

esac

 

exit $RETVAL

复制脚本到服务脚本存放路径:

[root@www httpd-2.4.10]# cp httpd24  /etc/rc.d/init.d/httpd24

httpd24 服务加入系统启动:

1
2
3
[root@www httpd-2.4.10]# chkconfig --listhttpd24
service httpd24 supports chkconfig, but isnot referenced in any runlevel (run 'chkconfig --add httpd24')
[root@www httpd-2.4.10]# chkconfig --addhttpd24

4.启动 httpd24 服务

1
2
[root@www httpd-2.4.10]# service httpd24start
Starting httpd:                                           [OK]

查看服务监听端口:

1
2
[root@www ~]# ss -tunl |grep 80
tcp   LISTEN     0      128                   :::80                   :::*

测试:

1
2
[root@www ~]# curl http://172.16.31.20
<html><body><h1>Itworks!</h1></body></html>

 httpd-2.4.10 安装完毕 

MySQL 主机本地网络的 DNS 服务器地址指向172.16.31.20

1
2
[root@mysql ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS=172.16.31.20

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-12/110940p2.htm

. 编译安装MariaDB-10.0.10

1.解压二进制安装包,创建软链接:

1
2
3
[root@MySQL ~]# tar xfmariadb-10.0.10-linux-x86_64.tar.gz -C /usr/local
[root@mysql ~]# cd /usr/local/
[root@mysql local]# ln -smariadb-10.0.10-linux-x86_64/ mysql

 

2.创建 mysql 用户运行管理 mysql 服务

1
2
3
[root@mysql ~]# useradd -M -s /sbin/nologin-d /mydata/data -r mysql
[root@mysql ~]# id mysql
uid=496(mysql) gid=493(mysql)groups=493(mysql)

 

3.创建数据库数据存放磁盘目录

格式磁盘

1
2
[root@mysql ~]# echo -n -e"n\np\n3\n\n+10G\nt\n3\n8e\n\w\n" |fdisk /dev/sda
[root@mysql ~]# partx -a /dev/sda

 

创建LVM

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@mysql ~]# pvcreate /dev/sda3
 Physical volume "/dev/sda3" successfully created
[root@mysql ~]# vgcreate myvg /dev/sda3
 Volume group "myvg" successfully created
[root@mysql ~]# lvcreate -L 10g -n mylvmyvg
 Logical volume "mylv" created
[root@mysql ~]# lvs
 LV   VG   Attr      LSize  Pool Origin Data%  Meta% Move Log Cpy%Sync Convert
 mylv myvg -wi-a----- 10.00g                                                   
 root vg0  -wi-ao---- 20.00g                                                   
 swap vg0  -wi-ao----  2.00g                                                   
 usr  vg0  -wi-ao---- 10.00g                                                   
 var  vg0  -wi-ao---- 20.00g

                                               

4.实现 xfs 文件系统支持并创建 xfs 文件系统

1
2
[root@mysql ~]# yum install xfsprogs
[root@mysql ~]# mkfs -t xfs /dev/myvg/mylv

 

5.实现文件系统自动挂载

1
2
3
4
5
6
[root@mysql ~]# mkdir /mydata
[root@mysql ~]# blkid /dev/myvg/mylv
/dev/myvg/mylv: UUID="04a307f3-6877-4142-b05e-60e4d5504b39"TYPE="xfs"
[root@mysql ~]# vim /etc/fstab
UUID="04a307f3-6877-4142-b05e-60e4d5504b39"  /mydata xfs defaults      0 0
[root@mysql ~]# mount -a

 

6.创建数据库数据文件在逻辑卷上的存放目录创建,更改目录属主属组

1
2
[root@mysql ~]# mkdir /mydata/data
[root@mysql ~]# chown mysql:mysql/mydata/data/

 

7.初始化安装MariaDB

1
2
3
4
5
[root@mysql mysql]#scripts/mysql_install_db --user=mysql --datadir=/mydata/data
[root@mysql mysql]# ls /mydata/data/
aria_log.00000001  ib_logfile0 mysql-bin.000001  mysql-bin.state
aria_log_control   ib_logfile1 mysql-bin.000002 performance_schema
ibdata1            mysql        mysql-bin.index   test

 

8.mariadb配置文件创建及更改,有模版

安装系统的时候,/etc/路径下有一个 my.cnf 的,这里换个路径

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@mysql mysql]# mkdir /etc/mysql
[root@mysql mysql]# cpsupport-files/my-huge.cnf /etc/mysql/my.cnf
[root@mysql mysql]# vim /etc/mysql/my.cnf
[mysqld]
datadir = /mydata/data
port            = 3306
socket          = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
innodb_file_per_table = on
# Try number of CPU's*2 forthread_concurrency
thread_concurrency = 8

 注意:

data_dir = /mydata/data     #mysql 数据文件存放目录

thread_concurrency = 8      #线程数:cpu 核心 *2

innodb_file_per_table = on  # 每个 innodb 文件一个表空间

 

 

9.mariadb服务脚本创建

因为 mariadbmysql是兼容的,直接命名成 mysql 好记忆

1
2
3
4
[root@mysql mysql]# cp  support-files/mysql.server  /etc/rc.d/init.d/mysqld
[root@mysql mysql]# chkconfig  --list  mysqld
service mysqld supports chkconfig, but isnot referenced in any runlevel (run 'chkconfig --add mysqld')
[root@mysql mysql]# chkconfig  –add  mysqld

10.启动 mysqld 服务 , 测试启动

1
2
3
4
[root@mysql mysql]# service mysqld start
Starting MySQL.                                           [OK]
[root@mysql mysql]# ss -tunl |grep 3306
tcp   LISTEN     0      128                    *:3306                  *:*

 

11.mysqld服务的一些设置

设置环境变量:

1
2
3
[root@mysql mysql]# vim/etc/profile.d/mysqld.sh
export PATH=/usr/local/mysql/bin:$PATH
[root@mysql mysql]# source/etc/profile.d/mysqld.sh

 

输出 mysql 的头文件至系统头文件路径/usr/include

1
[root@mysql mysql]# ln -sv/usr/local/mysql/include /usr/include/mysql

 

输出 mysql 的库文件给系统库查找路径,系统重新

1
2
[root@mysql mysql]# echo'/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
[root@mysql mysql]# ldconfig

 

12.测试客户端启动:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@mysql mysql]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 10.0.10-MariaDB-log MariaDBServer
  
Copyright (c) 2000, 2014, Oracle, SkySQL Aband others.
  
Type 'help;' or '\h' for help. Type '\c' toclear the current input statement.
  
MariaDB [(none)]> select version();
+---------------------+
| version()           |
+---------------------+
| 10.0.10-MariaDB-log |
+---------------------+
1 row in set (0.00 sec)

 

13.给数据库设置一个密码。

1
2
3
[root@mysql mysql]# mysqladmin -u rootpassword
New password:
Confirm new password:

 

MariaDB安装完毕

 

 

PHP 主机本地网络的 DNS 服务器地址指向172.16.31.20

1
2
[root@php~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS=172.16.31.20

 

. 编译安装PHP-5.4.26

1.源码包解压安装

1
2
3
[root@php~]# tar xf php-5.4.26.tar.bz2
[root@php~]# cd php-5.4.26
[root@phpphp-5.4.26]# ./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --with-gd --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --enable-maintainer-zts

 

参数说明:

–prefix=/usr/local/php    #指定 php 安装路径,如果不想使用php,可以之间删除

–with-mysql=mysqlnd –with-pdo-mysql=mysqlnd –with-mysqli=mysqlnd

#如果使用 PHP5.3 以上版本,为了链接 MySQL 数据库,可以指定 mysqlnd,这样在本机就不需要先安装MySQLMySQL开发包了。mysqlndphp 5.3 开始可用,可以编译时绑定到它(而不用和具体的 MySQL 客户端库绑定形成依赖),但从 PHP 5.4 开始它就是默认设置了

–with-openssl            #支持 openssl 加密 php 页面

–enable-mbstring          #启用多字节字符串支持

–with-freetype-dir        #设定到 FreeType 2 的安装路径

–with-jpeg-dir            #支持 jpg 图片

–with-png-dir            #支持 png 图片

–with-zlib                #支持 zlib 压缩传输

–with-libxml-dir=/usr    #指定 libxml2 安装目录

–enable-xml              #支持 xml 扩展

–enable-sockets          #启用套接字支持

–enable-fpm               #启用 FastCGI 模式

–with-mcrypt              #支持 mcrypt 扩展

–with-config-file-path=/etc  #指定配置文件所在目录

–with-config-file-scan-dir=/etc/php.d        #设定在哪个路径下扫描配置文件

–with-bz2                #支持 bzip2 压缩格式

–enable-maintainer-zts  #支持 apacheworkerevent 这两个MPM

–with-gd                #支持 gd 扩展

 

安装:

[root@phpphp-5.4.26]# make && make install

 

2.php 提供配置文件:

[root@phpphp-5.4.26]# vim php.ini-production /etc/php.ini 

 

 

3.php 提供 Sys 启动控制脚本,加入开机启动。

1
2
3
4
5
6
[root@phpphp-5.4.26]# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
[root@phpphp-5.4.26]# chmod +x /etc/rc.d/init.d/php-fpm
[root@phpphp-5.4.26]# chkconfig --list php-fpm
servicephp-fpm supports chkconfig, but is not referenced in any runlevel (run'chkconfig --add php-fpm')
[root@phpphp-5.4.26]# chkconfig --add php-fpm
[root@phpphp-5.4.26]# chkconfig php-fpm on

 

4.php-fpm 提供配置文件,编辑 php-fpm 配置文件,修改监听端口,默认是127.0.0.1

1
2
3
4
5
6
7
8
[root@phpphp-5.4.26]# cp /usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf
[root@phpphp-5.4.26]# vim /usr/local/php/etc/php-fpm.conf
pm.max_children= 50
pm.start_servers= 5
pm.min_spare_servers= 2
pm.max_spare_servers= 8
pid =/usr/local/php5/var/run/php-fpm.pid
listen =172.16.31.22:9000

 php 服务器的 ip 地址是 17.16.31.22,监听端口改为 php 服务器的 9000 端口哦!o(∩_∩)o 

 

5.启动 php-fpm,检查php 监听端口。

 

1
2
3
4
[root@phpphp-5.4.26]# service php-fpm start
Startingphp-fpm  done
[root@phpphp-5.4.26]# ss -tunl |grep 9000
tcp    LISTEN    0      128         172.16.31.22:9000                  *:*

 

6.环境变量设置:

1
2
3
4
5
6
7
8
9
[root@phpphp-5.4.26]# vim /etc/profile.d/php.sh
exportPATH=/usr/local/php/bin:$PATH
  
[root@phpphp-5.4.26]# source /etc/profile.d/php.sh
  
[root@phpphp-5.4.26]# php -v
PHP5.4.26 (cli) (built: Dec 21 2014 01:53:51)
Copyright(c) 1997-2014 The PHP Group
ZendEngine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

 

PHP部分配置完成。

静分离能有效提升站点访问效率,此时 apache 工作在反向代理模式。PHP 不在作为 apache 的模块。而是以独立服务器的方式运行。两者之间通过 fcgi 机制建立通讯。

LAMP 架构实现网站动静分离及流行博客论坛安装实验

Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境  http://www.linuxidc.com/Linux/2014-10/107924.htm

Windows 7 下硬盘安装 Ubuntu 14.10 图文教程 http://www.linuxidc.com/Linux/2014-10/108430.htm

U 盘安装 Ubuntu 14.10 http://www.linuxidc.com/Linux/2014-10/108402.htm

Ubuntu 14.10 正式发布下载 http://www.linuxidc.com/Linux/2014-10/108363.htm

Ubuntu 14.04 LTS 如何升级到 Ubuntu 14.10  http://www.linuxidc.com/Linux/2014-10/108381.htm

Ubuntu 14.10 下安装 LAMP 服务图文详解  http://www.linuxidc.com/Linux/2014-12/110082.htm

. 安装 DNS 服务实现域名解析

1.安装bind

[root@www ~]# yum install bind

 

2.配置 named 主配置文件

[root@www ~]# vim /etc/named.conf

//

// named.conf

//

// Provided by Red Hat bind package toconfigure the ISC BIND named(8) DNS

// server as a caching only nameserver (asa localhost DNS resolver only).

//

// See /usr/share/doc/bind*/sample/ forexample named configuration files.

//

 

options {

//     listen-on port 53 {127.0.0.1;};

//     listen-on-v6 port 53 {::1;};

       directory      “/var/named”;

       dump-file      “/var/named/data/cache_dump.db”;

       statistics-file “/var/named/data/named_stats.txt”;

       memstatistics-file “/var/named/data/named_mem_stats.txt”;

//     allow-query    {localhost;};

       recursion yes;

 

//     dnssec-enable yes;

//     dnssec-validation yes;

//     dnssec-lookaside auto;

 

       /* Path to ISC DLV key */

       /*bindkeys-file “/etc/named.iscdlv.key”;

 

       managed-keys-directory “/var/named/dynamic”;

       */

};

 

logging {

       channel default_debug {

               file”data/named.run”;

                severity dynamic;

       };

};

 

zone “.” IN {

       type hint;

       file “named.ca”;

};

 

include”/etc/named.rfc1912.zones”;

include “/etc/named.root.key”;

 

3.配置区域配置文件

1
2
3
4
5
[root@www ~]# vim /etc/named.rfc1912.zones
zone "stu31.com" IN {
       type master;
       file "stu31.com.zone";
};

 

 

4.配置区域解析库文件(正向)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@www ~]# vim /var/named/stu31.com.zone
$TTL 600
$ORIGIN stu31.com.
@      IN      SOA     ns1.stu31.com.  root@stu31.com (
                        20141219
                        1M
                        2H
                        3D
                        6M )
@      IN      NS      ns1
       IN      MX   5 mail
ns1    IN      A       172.16.31.20
www    IN      A       172.16.31.20
bbs    IN      A       172.16.31.20
pmp    IN      A       172.16.31.20
mail   IN      A       172.16.31.20
pop3   IN      CNAME   mail
iamp4  IN      CNAME   mail

更改权限及属主属组

1
2
[root@www ~]# chmod 640/var/named/stu31.com.zone
[root@www ~]# chown :named/var/named/stu31.com.zone

 

5.检查语法

1
2
3
4
[root@www ~]# named-checkconf
[root@www ~]# named-checkzone stu31.com/var/named/stu31.com.zone
zone stu31.com/IN: loaded serial 20141219
OK

 

6.启动 named 服务

1
2
3
[root@www ~]# service named start
Generating /etc/rndc.key:                                  [OK]
Starting named:                                           [OK]

 

将本地网络的 DNS 服务器地址指向172.16.31.20

1
2
[root@www ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS=172.16.31.20

 

测试完全区域:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@www ~]# dig -t axfr stu31.com @172.16.31.20
  
; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t axfr stu31.com@172.16.31.20
;; global options: +cmd
stu31.com.              600     IN     SOA     ns1.stu31.com.root\@stu31.com.stu31.com. 2014121903 60 7200 259200 360
stu31.com.              600     IN     NS      ns1.stu31.com.
stu31.com.              600     IN     MX      5 mail.stu31.com.
bbs.stu31.com.          600     IN     A       172.16.31.20
iamp4.stu31.com.        600    IN      CNAME   mail.stu31.com.
mail.stu31.com.         600    IN      A       172.16.31.20
ns1.stu31.com.          600     IN     A       172.16.31.20
pmp.stu31.com.          600     IN     A       172.16.31.20
pop3.stu31.com.         600    IN      CNAME   mail.stu31.com.
web.stu31.com.          600     IN     A       172.16.31.20
www.stu31.com.          600     IN     A       172.16.31.20
stu31.com.              600     IN     SOA     ns1.stu31.com.root\@stu31.com.stu31.com. 2014121903 60 7200 259200 360
;; Query time: 2 msec
;; SERVER: 172.16.31.20#53(172.16.31.20)
;; WHEN: Mon Dec 22 08:31:22 2014
;; XFR size: 12 records (messages 1, bytes304)

 

. 源码安装httpd-2.4.10

 

1.安装 aprapr-util

1
2
3
4
[root@www ~]# tar xf apr-1.5.0.tar.bz2
[root@www ~]# cd apr-1.5.0
[root@www apr-1.5.0]# ./configure--prefix=/usr/local/apr
[root@www apr-1.5.0]# make && makeinstall

 

1
2
3
4
5
[root@www apr-1.5.0]# cd ..
[root@www ~]# tar xf apr-util-1.5.3.tar.bz2
[root@www ~]# cd apr-util-1.5.3
[root@www apr-util-1.5.3]# ./configure--prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@www apr-util-1.5.3]# make &&make install

 

设置 aprapr-util成为系统环境变量

1
2
[root@www apr-util-1.5.3]# vim/etc/profile.d/apr.sh
exportPATH=/usr/local/apr/bin:/usr/local/apr-util/bin:$PATH

 

2.源码安装httpd

1
2
3
[root@www ~]# tar xf httpd-2.4.10.tar.bz2
[root@www ~]# cd httpd-2.4.10
[root@www httpd-2.4.10]# ./configure--prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-rewrite --with-z --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event

编译参数注释

–prefix=        #指定安装到 /usr/local/apache 路径下

–sysconfdir=    #指定配置文件安装到 /etc/httpd24

–enable=so      #支持动态装卸载模块

–enable-ssl    #支持 https 加密传输

–enable-rewrite #支持 URL 重写

–enable-cgi    #支持 cgi 格式脚本

–with-z         #支持 zlib 压缩

–with-pcre      #支持扩展正则表达式

–with-apr      #指定 apr 安装位置

–with-apr-util  #指定 apr-util 安装位置

–enable-mpms-shared  #mpm 三种模式以共享模块的方式编译进去

–enable-mpm    #httpd启动是默认是开启 event 模式

–enable-rewrite #支持反向代理

 

安装:

1
[root@www httpd-2.4.10]#make &&make install

 

3.创建 httpd 服务脚本(因为系统已安装 httpd,我们需要安装到其他路径,服务脚本也一样要更改名称,与原httpd 服务区分)

[root@www httpd-2.4.10]# cp /etc/rc.d/init.d/httpd httpd24

[root@www httpd-2.4.10]# vim httpd24

#!/bin/bash

#

# httpd        Startup script for the Apache HTTPServer

#

# chkconfig: – 85 15

# description: The Apache HTTP Server is anefficient and extensible  \

#              server implementing the currentHTTP standards.

# processname: httpd

# config: /etc/httpd/conf/httpd.conf

# config: /etc/sysconfig/httpd

# pidfile: /var/run/httpd/httpd.pid

#

### BEGIN INIT INFO

# Provides: httpd

# Required-Start: $local_fs $remote_fs$network $named

# Required-Stop: $local_fs $remote_fs$network

# Should-Start: distcache

# Short-Description: start and stop ApacheHTTP Server

# Description: The Apache HTTP Server is anextensible server

# implementing the current HTTP standards.

### END INIT INFO

 

# Source function library.

. /etc/rc.d/init.d/functions

 

#if [-f /etc/sysconfig/httpd]; then

#       . /etc/sysconfig/httpd

#fi

 

# Start httpd in the C locale by default.

HTTPD_LANG=${HTTPD_LANG-“C”}

 

# This will prevent initlog from swallowingup a pass-phrase prompt if

# mod_ssl needs a pass-phrase from theuser.

INITLOG_ARGS=””

 

# Set HTTPD=/usr/sbin/httpd.worker in/etc/sysconfig/httpd to use a server

# with the thread-based “worker”MPM; BE WARNED that some modules may not

# work correctly with a thread-based MPM;notably PHP will refuse to start.

 

# Path to the apachectl script, serverbinary, and short-form for messages.

apachectl=/usr/local/apache/bin/apachectl

httpd=${HTTPD-/usr/local/apache/bin/httpd}

prog=httpd

pidfile=${PIDFILE-/var/run/httpd/httpd.pid}

lockfile=${LOCKFILE-/var/lock/subsys/httpd}

RETVAL=0

STOP_TIMEOUT=${STOP_TIMEOUT-10}

 

# The semantics of these two functionsdiffer from the way apachectl does

# things — attempting to start whilerunning is a failure, and shutdown

# when not running is also a failure.  So we just do it the way init scripts

# are expected to behave here.

start() {

       echo -n $”Starting $prog: “

       LANG=$HTTPD_LANG daemon –pidfile=${pidfile} $httpd $OPTIONS

       RETVAL=$?

       echo

       [$RETVAL = 0] && touch ${lockfile}

       return $RETVAL

}

 

# When stopping httpd, a delay (of default10 second) is required

# before SIGKILLing the httpd parent; thisgives enough time for the

# httpd parent to SIGKILL any errantchildren.

stop() {

       echo -n $”Stopping $prog: “

       killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd

       RETVAL=$?

       echo

       [$RETVAL = 0] && rm -f ${lockfile} ${pidfile}

}

reload() {

   echo -n $”Reloading $prog: “

   if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then

       RETVAL=6

       echo $”not reloading due to configuration syntax error”

       failure $”not reloading $httpd due to configuration syntaxerror”

   else

       # Force LSB behaviour from killproc

       LSB=1 killproc -p ${pidfile} $httpd -HUP

       RETVAL=$?

       if [$RETVAL -eq 7]; then

           failure $”httpd shutdown”

       fi

   fi

   echo

}

 

# See how we were called.

case “$1” in

 start)

       start

       ;;

 stop)

       stop

       ;;

 status)

       status -p ${pidfile} $httpd

       RETVAL=$?

       ;;

 restart)

       stop

       start

       ;;

 condrestart|try-restart)

       if status -p ${pidfile} $httpd >&/dev/null; then

                stop

                start

       fi

        ;;

 force-reload|reload)

       reload

       ;;

 graceful|help|configtest|fullstatus)

       $apachectl $@

       RETVAL=$?

       ;;

  *)

       echo $”Usage: $prog{start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}”

       RETVAL=2

esac

 

exit $RETVAL

复制脚本到服务脚本存放路径:

[root@www httpd-2.4.10]# cp httpd24  /etc/rc.d/init.d/httpd24

httpd24 服务加入系统启动:

1
2
3
[root@www httpd-2.4.10]# chkconfig --listhttpd24
service httpd24 supports chkconfig, but isnot referenced in any runlevel (run 'chkconfig --add httpd24')
[root@www httpd-2.4.10]# chkconfig --addhttpd24

4.启动 httpd24 服务

1
2
[root@www httpd-2.4.10]# service httpd24start
Starting httpd:                                           [OK]

查看服务监听端口:

1
2
[root@www ~]# ss -tunl |grep 80
tcp   LISTEN     0      128                   :::80                   :::*

测试:

1
2
[root@www ~]# curl http://172.16.31.20
<html><body><h1>Itworks!</h1></body></html>

 httpd-2.4.10 安装完毕 

MySQL 主机本地网络的 DNS 服务器地址指向172.16.31.20

1
2
[root@mysql ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS=172.16.31.20

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-12/110940p2.htm

. 切换到 httpd 服务器,创建虚拟主机,结合php

 

1.编辑 httpd 主配置文件:

[root@www~]# vim /etc/httpd24/httpd.conf

a.Apache httpd 2.4 以后已经专门有一个模块针对 FastCGI 的实现。

此模块为 mod_proxy_fcgi.so,它其实是作为mod_proxy.so 模块的扩充,因此,这两个模块都要加载

 

LoadModuleproxy_module modules/mod_proxy.so

LoadModuleproxy_fcgi_modulemodules/mod_proxy_fcgi.so

 

b.httpd 支持php,添加下面两行,加入index.php

 

<IfModuledir_module>

    DirectoryIndex index.php index.html

</IfModule>

AddTypeapplication/x-compress .Z

AddTypeapplication/x-gzip .gz .tgz

AddTypeapplication/x-httpd-php .php

AddTypeapplication/x-httpd-php-source .phps

 

c.开启虚拟主机,默认是注释掉的。

Include/etc/httpd24/extra/httpd-vhosts.conf

 

 

2.编辑虚拟主机配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@www~]# vim  /etc/httpd24/extra/httpd-vhosts.conf
<VirtualHost*:80>
    ServerAdmin www.stu31.com
    DocumentRoot "/web/vhosts/www1/wp"
    ServerName www.stu31.com
    ProxyRequests Off
    ProxyPassMatch  ^/(.*\.php)$ fcgi://172.16.31.22:9000/web/vhosts/www1/wp/$1
    ErrorLog"/web/vhosts/www1/logs/www-error_log"
    CustomLog"/web/vhosts/www1/logs/www-access_log" common
    <Directory"/web/vhosts/www1/wp">
        Options none
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>

注意:

 ProxyRequests Off   #这里是关闭正向代理

 ProxyPassMatch  ^/(.*\.php)$ fcgi://172.16.31.22:9000/web/vhosts/www1/wp/$1

 #这里是客户端的以.php 结尾的 URL 的请求都反向代理到 PHP 服务器运行

 

3.分别在 httpd 主机和 php 主机上创建网站目录:/web/vhosts/www1

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@www~]# mkdir -pv /web/vhosts/www1/wp
mkdir:created directory `/web'
mkdir:created directory `/web/vhosts'
mkdir:created directory `/web/vhosts/www1'
mkdir:created directory `/web/vhosts/www1/wp'
  
[root@phpphp-5.4.26]# mkdir  -pv  /web/vhosts/www1/wp
mkdir:created directory `/web'
mkdir:created directory `/web/vhosts'
mkdir:created directory `/web/vhosts/www1'
mkdir:created directory `/web/vhosts/www1/wp'
  
[root@www~]# mkdir /web/vhosts/www1/logs

 

 

4.重启 httpdphp服务,测试 httpdphp结合。

1
2
3
4
5
6
7
[root@www~]# service  httpd24  restart
Stoppinghttpd:                                           [OK]
Startinghttpd:                                           [OK]
  
[root@php~]# service  php-fpm  restart
Gracefullyshutting down php-fpm . done
Startingphp-fpm  done

 

. 在数据库添加库,授权,添加授权密码,安装wordpress

 

1.回到数据库主机 , 创建 wordpress 数据库wpdb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@MySQLmysql]# mysql  -u  root  -p
Enterpassword:
Welcometo the MariaDB monitor.  Commands endwith ; or \g.
YourMariaDB connection id is 6
Serverversion: 10.0.10-MariaDB-log MariaDB Server
  
Copyright(c) 2000, 2014, Oracle, SkySQL Ab and others.
  
Type'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 创建 wordpress 数据库
MariaDB[(none)]> create schema wpdb;
Query OK,1 row affected (0.00 sec)
# 设置 wordpress 权限
MariaDB[(none)]> grant all on wpdb.* to 'wpadmin'@'172.16.%.%' identified by'oracle';
Query OK,0 rows affected (0.00 sec)
# 刷新权限
MariaDB[(none)]> flush privileges;
Query OK,0 rows affected (0.00 sec)
# 推出
MariaDB[(none)]> \q
Bye

 

2.wpdb数据库创建好了,回到 php 主机

解压 wordpress 并将其移动到所在目录:

[root@php~]# tar xf wordpress-4.0.1-zh_CN.tar.gz

[root@php~]# mv wordpress/* /web/vhosts/www1/wp/

 

3.编辑 wordpress 配置文件,加入wpdb,授权帐号,密码等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@php~]# cd /web/vhosts/www1/wp/
[root@phpwp]# cp wp-config-sample.php wp-config.php
[root@phpwp]# vim wp-config.php
/**WordPress 数据库的名称 */
define('DB_NAME','wpdb');
  
/** MySQL 数据库用户名 */
define('DB_USER','wpadmin');
  
/** MySQL 数据库密码 */
define('DB_PASSWORD','oracle');
  
/** MySQL 主机 */
define('DB_HOST','172.16.31.21');
  
/** 创建数据表时默认的文字编码 */
define('DB_CHARSET','utf8');
  
/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE','');

 

4.重新启动服务:

使用 windowsXP 客户端测试:将客户端 ipdns设置好:

LAMP 架构实现网站动静分离及流行博客论坛安装实验

安装完成后输入地址访问博客。

LAMP 架构实现网站动静分离及流行博客论坛安装实验

 

这时候图片是显示不出来的,图片是静态的,需要放到 httpd 主机上。

我们先设置好博客:

 

 

LAMP 架构实现网站动静分离及流行博客论坛安装实验

LAMP 架构实现网站动静分离及流行博客论坛安装实验

 

登录博客:

LAMP 架构实现网站动静分离及流行博客论坛安装实验

 

5.php 主机 wordpress 目录 scphttpd主机。

[root@php~]# scp -r /web/vhosts/www1/wp/ root@172.16.31.20:/web/vhosts/www1/wp/

 

再次刷新页面。

wKiom1SYGhHS_DgZAAJelhAfH60758.jpg

. 接下来安装Discuz

本地 DNS 服务器添加两个域名:

pmp.stu31.com

bbs.stu31.com

上面的 DNS 服务已经配置好了。

 

1.回到 httpd 主机,创建想对应的网站根目录,创建两个虚拟主机。

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
[root@www~]# vim /etc/httpd24/extra/httpd-vhosts.conf
<VirtualHost*:80>
    ServerAdmin admin.stu31.com
    DocumentRoot"/web/vhosts/www1/pmp"
    ServerName pmp.stu31.com
    ProxyRequests Off
    ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.31.22:9000/web/vhosts/www1/pmp/$1
    ErrorLog"/web/vhosts/www1/logs/pmp-error_log"
    CustomLog"/web/vhosts/www1/logs/pmp-access_log" common
    <Directory "/web/vhosts/www1/pmp">
        Options none
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>
<VirtualHost*:80>
    ServerAdmin bbs.stu31.com
    DocumentRoot"/web/vhosts/www1/bbs"
    ServerName bbs.stu31.com
    ProxyRequests Off
    ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.31.22:9000/web/vhosts/www1/bbs/$1
    ErrorLog"/web/vhosts/www1/logs/bbs-error_log"
    CustomLog"/web/vhosts/www1/logs/bbs-access_log" common
    <Directory"/web/vhosts/www1/bbs">
        Options none
        AllowOverride none
        Require all granted
    </Directory>
</VirtualHost>

 

 

2.httpd 主机和 php 主机上创建 pmpbbs两个网站目录

1
2
3
4
5
6
7
[root@www~]# mkdir /web/vhosts/www1/{pmp,bbs} -pv
mkdir:created directory `/web/vhosts/www1/pmp'
mkdir:created directory `/web/vhosts/www1/bbs'
  
[root@php~]# mkdir /web/vhosts/www1/{pmp,bbs} -pv
mkdir:created directory `/web/vhosts/www1/pmp'
mkdir:created directory `/web/vhosts/www1/bbs'

 

3.重启 httpd 服务,或者重新载入配置文件。

1
2
3
[root@www~]# service httpd24 restart
Stoppinghttpd:                                           [OK]
Startinghttpd:                                           [OK]

 

 

4.安装 Discuz 论坛

[root@php~]# unzip Discuz_X3.2_SC_UTF8.zip

将解压出来的三个目录移动到 /var/www/php/Discuz 目录下。

[root@php~]# mv readme/ upload/ utility/ /web/vhosts/www1/bbs/

[root@php~]# ls /web/vhosts/www1/bbs/

readme  upload utility

 

scp 一份到 httpd 主机。

1
2
[root@php~]# cd /web/vhosts/www1/bbs/
[root@phpbbs]# scp -r readme/ upload/ utility/ root@172.16.31.20:/web/vhosts/www1/bbs/

httpd 主机检查:

1
2
[root@www~]# ls /web/vhosts/www1/bbs/
readme  upload utility

 

5.切换到数据库主机,添加 Discuz 论坛的管理帐号,密码,库。

 

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
34
[root@MySQLmysql]# mysql -u root -p
Enterpassword:
Welcometo the MariaDB monitor.  Commands endwith ; or \g.
YourMariaDB connection id is 55
Serverversion: 10.0.10-MariaDB-log MariaDB Server
  
Copyright(c) 2000, 2014, Oracle, SkySQL Ab and others.
  
Type'help;' or '\h' for help. Type '\c' to clear the current input statement.
  
MariaDB[(none)]> create schema bbsdb;
Query OK,1 row affected (0.00 sec)
  
MariaDB[(none)]> grant all on bbsdb.* to 'bbsadmin'@'172.16.%.%' identified by'oracle';
Query OK,0 rows affected (0.00 sec)
  
MariaDB[(none)]> flush privileges;
Query OK,0 rows affected (0.00 sec)
  
MariaDB[(none)]> show databases;
+--------------------+
|Database           |
+--------------------+
|bbsdb              |
|information_schema |
|mysql              |
|performance_schema |
|test               |
|wpdb               |
+--------------------+
6 rows inset (0.00 sec)
  
MariaDB[(none)]> \q
Bye

 

打开浏览器,输入对应域名地址。

LAMP 架构实现网站动静分离及流行博客论坛安装实验

同意继续:

全新安装

LAMP 架构实现网站动静分离及流行博客论坛安装实验

继续安装:

LAMP 架构实现网站动静分离及流行博客论坛安装实验

 

6.出来一大推权限问题,回到 php 主机,给上面这些文件可写权限。

[root@phpbbs]# chmod -R go+w /web/vhosts/www1/bbs/upload/config/

[root@phpbbs]# chmod -R go+w /web/vhosts/www1/bbs/upload/data/

[root@phpbbs]# chmod -R go+w /web/vhosts/www1/bbs/upload/uc_*

 

继续安装

LAMP 架构实现网站动静分离及流行博客论坛安装实验

 

 

输入上面创建的针对 bbs 的数据库服务器 ip 地址,数据库名称和密码以及新建管理员用户和密码:

LAMP 架构实现网站动静分离及流行博客论坛安装实验

 

安装完成

LAMP 架构实现网站动静分离及流行博客论坛安装实验

安装完成访问:注意地址哦!o(∩_∩)o

LAMP 架构实现网站动静分离及流行博客论坛安装实验

 

这时候还是图片出不来,需要再次将 readme upload  utility 拷贝到 httpd 主机。

[root@phpbbs]# scp -r readme/ upload/ utility/ root@172.16.31.20:/web/vhosts/www1/bbs/

 

再次刷新下页面,就正常了。

wKiom1SYGxuDlzIWAAOese20J_w846.jpg

. 接下来开始安装phpMyadmin

 

1.虚拟主机已经创建完成,phpMyAdmin不需要在数据库中加入库,账户密码

解压程序包

[root@php~]# unzip phpMyAdmin-4.3.2-all-languages.zip

移动到特定网站目录:

[root@php~]# mv phpMyAdmin-4.3.2-all-languages/* /web/vhosts/www1/pmp/     

创建配置文件:

[root@php~]# cd /web/vhosts/www1/pmp/

[root@phppmp]# cp config.sample.inc.php config.inc.php

 

2.设置配置文件:

设置随机数,为了安全吧!

[root@phppmp]# openssl rand -hex 8 | md5sum

80912828243ccf7033298368628ad07d  –

[root@phppmp]# vim config.inc.php

$cfg[‘blowfish_secret’]= ‘80912828243ccf7033298368628ad07d’; /* YOU MUST FILL IN THIS FOR COOKIE AUTH!*/ 

# 将数据库 IP 更改为数据库地址:

$cfg[‘Servers’][$i][‘host’]= ‘172.16.31.21’;

 

 

3.同样的,将 phpMyAdmin 数据复制一份到 httpd 主机。

[root@php~]# scp -r /web/vhosts/www1/pmp/* root@172.16.31.20:/web/vhosts/www1/pmp/

安装 phpMyamin 完成!!!

 

.phpMyAdmin 传输是明文的,不是很可靠,现在给转换成以 https 加密传输访问。

 

1.找到 httpd-ssl.conf 的配置,默认是注释掉的。

开启模块及开启 ssl 配置文件:

1
2
3
4
5
[root@www~]# vim /etc/httpd24/httpd.conf
LoadModulesocache_shmcb_modulemodules/mod_socache_shmcb.so
LoadModulessl_module modules/mod_ssl.so
# Secure(SSL/TLS) connections
Include/etc/httpd24/extra/httpd-ssl.conf

 

 

2.现在把数据库的主机做为 CA 服务器。

a.生成密钥。

1
2
3
4
5
[root@MySQLCA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)
GeneratingRSA private key, 2048 bit long modulus
....+++
............................................+++
e is65537 (0x10001)

 

b.生成自签署证书

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@mysqlCA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
You areabout to be asked to enter information that will be incorporated
into yourcertificate request.
What youare about to enter is what is called a Distinguished Name or a DN.
There arequite a few fields but you can leave some blank
For somefields there will be a default value,
If youenter '.', the field will be left blank.
-----
CountryName (2 letter code) [XX]:CN
State orProvince Name (full name) []:HA
LocalityName (eg, city) [Default City]:ZZ
OrganizationName (eg, company) [Default Company Ltd]:stu31
OrganizationalUnit Name (eg, section) []:ops
CommonName (eg, your name or your server's hostname) []:mysql.stu31.com
EmailAddress []:mysql@stu31.com

 

c.创建索引库及序列号文件

[root@mysqlCA]# touch index.txt serial

[root@mysqlCA]# echo 01 >serial

 

 

3.httpd主机设置证书

a.生成密钥

1
2
3
4
5
6
7
8
9
10
[root@www~]# cd /etc/httpd24/
[root@wwwhttpd24]# ls
extra  httpd.conf magic  mime.types  original
[root@wwwhttpd24]# mkdir certs
[root@wwwhttpd24]# cd certs
[root@wwwcerts]# (umask 077 ; openssl genrsa -out httpd.key 2048)
GeneratingRSA private key, 2048 bit long modulus
...........................................................................................................................................................................................................................................................................................................................+++
.............................................+++
e is65537 (0x10001)

 

b.生成证书签署申请

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@wwwcerts]# openssl req -new -key httpd.key -out httpd.csr 
You areabout to be asked to enter information that will be incorporated
into yourcertificate request.
What youare about to enter is what is called a Distinguished Name or a DN.
There arequite a few fields but you can leave some blank
For somefields there will be a default value,
If youenter '.', the field will be left blank.
-----
CountryName (2 letter code) [XX]:CN
State orProvince Name (full name) []:HA
LocalityName (eg, city) [Default City]:ZZ
OrganizationName (eg, company) [Default Company Ltd]:stu31
OrganizationalUnit Name (eg, section) []:ops
CommonName (eg, your name or your server's hostname) []:pmp.stu31.com                   
EmailAddress []:pmp@stu31.com
  
Pleaseenter the following 'extra' attributes
to besent with your certificate request
Achallenge password []:
Anoptional company name []:

 

c.https.csr 复制到证书服务器主机。

1
2
3
[root@wwwcerts]# scp httpd.csr root@172.16.31.21:/etc/pki/CA
root@172.16.31.21'spassword:
httpd.csr                                      100%1029     1.0KB/s   00:00

 

 

4.证书服务器签署证书

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
[root@mysqlCA]# openssl ca -in httpd.csr -out https.crt -days 3650
Usingconfiguration from /etc/pki/tls/openssl.cnf
Checkthat the request matches the signature
Signatureok
CertificateDetails:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Dec 20 20:20:17 2014GMT
            Not After : Dec 17 20:20:17 2024GMT
        Subject:
            countryName               = CN
            stateOrProvinceName       = HA
            organizationName          = stu31
            organizationalUnitName    = ops
            commonName                = pmp.stu31.com
            emailAddress              = pmp@stu31.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
               81:56:C1:E9:31:EB:31:40:1C:A1:FE:19:6F:A8:14:59:AF:9B:80:97
            X509v3 Authority Key Identifier:
                keyid:3A:65:60:42:6A:F7:C6:7B:C5:60:29:DC:BF:F8:39:AD:4F:54:52:01
  
Certificateis to be certified until Dec 17 20:20:17 2024 GMT (3650 days)
Sign thecertificate? [y/n]:y
  
  
1 out of1 certificate requests certified, commit? [y/n]y
Write outdatabase with 1 new entries
Data BaseUpdated

 

5.签署完成后还有将证书发送到 http 主机。

 

1
2
3
4
5
6
7
[root@mysqlCA]# scp https.crt root@172.16.31.20:/etc/httpd24/certs/
Theauthenticity of host '172.16.31.20 (172.16.31.20)' can't be established.
RSA keyfingerprint is b8:a4:da:03:91:67:32:2f:d5:72:0b:77:3b:6f:ba:30.
Are yousure you want to continue connecting (yes/no)? yes
Warning:Permanently added '172.16.31.20' (RSA) to the list of known hosts.
root@172.16.31.20'spassword:
https.crt                                      100%4555     4.5KB/s   00:00

 

 

6.编辑httpd-ssl.conf,定义主机,指定密钥文件等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@wwwhttpd24]# vim extra/httpd-ssl.conf
<VirtualHost_default_:443>
DocumentRoot"/web/vhosts/www1/pmp"
ServerNamebbs.stu31.com:443
ProxyRequestsOff
ProxyPassMatch^/(.*\.php)$ fcgi://172.16.31.22:9000/web/vhosts/www1/pmp/$1
       <Directory"/web/vhosts/www1/pmp">
               Options none
               AllowOverride none
               Require all granted
       </Directory>
ErrorLog"/web/vhosts/www1/logs/https-error_log"
TransferLog"/web/vhosts/www1/logs/https-access_log"
  
SSLEngineon
SSLCertificateFile"/etc/httpd24/certs/https.crt"
SSLCertificateKeyFile"/etc/httpd24/certs/httpd.key"

 

重启 httpd 服务。

 

7.CA 服务器里的证书拷贝到 windowsXP 里面安装测试

拷贝的是 CA 服务器的证书哦!别拷贝错误啦!

LAMP 架构实现网站动静分离及流行博客论坛安装实验

安装证书在客户端:

LAMP 架构实现网站动静分离及流行博客论坛安装实验

 

安装完成后进行测试:

LAMP 架构实现网站动静分离及流行博客论坛安装实验

 

这样 phpMyadmin 加密 传输就完成啦!!!!!o(∩_∩)o 

 

使用 ab 测试网站速度:

先缓存一些:

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
34
35
36
37
38
39
40
41
42
43
44
[root@www~]# ab -c 10 -n 100 http://pmp.stu31.com/index.php
This isApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensedto The Apache Software Foundation, http://www.apache.org/
  
Benchmarkingpmp.stu31.com (be patient).....done
  
  
ServerSoftware:        Apache/2.4.10
ServerHostname:        pmp.stu31.com
ServerPort:            80
  
DocumentPath:          /index.php
DocumentLength:        8993 bytes
  
ConcurrencyLevel:      10
Timetaken for tests:   5.495 seconds
Completerequests:      100
Failedrequests:        0
Totaltransferred:      1026300 bytes
HTMLtransferred:       899300 bytes
Requestsper second:    18.20 [#/sec] (mean)
# 我们注重的是平均每秒处理的请求数!!!才 18.2 个请求每秒!!!
Time perrequest:       549.503 [ms] (mean)
Time perrequest:       54.950 [ms] (mean, acrossall concurrent requests)
Transferrate:          182.39 [Kbytes/sec]received
  
ConnectionTimes (ms)
              min  mean[+/-sd] median   max
Connect:        0   0   1.6      0      9
Processing:   271 537 149.9    538    1502
Waiting:      263 502 146.9    497    1462
Total:        271 537 150.1    538    1503
  
Percentageof the requests served within a certain time (ms)
  50%   538
  66%   556
  75%   572
  80%   586
  90%   703
  95%   728
  98%   849
  99%  1503
 100%  1503 (longest request)

再进行大型并发测试:

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
[root@www~]# ab -c 100 -n 1000 http://pmp.stu31.com/index.php
This isApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensedto The Apache Software Foundation, http://www.apache.org/
  
Benchmarkingpmp.stu31.com (be patient)
Completed100 requests
Completed200 requests
Completed300 requests
Completed400 requests
Completed500 requests
Completed600 requests
Completed700 requests
Completed800 requests
Completed900 requests
Completed1000 requests
Finished1000 requests
  
  
ServerSoftware:        Apache/2.4.10
ServerHostname:        pmp.stu31.com
ServerPort:            80
  
DocumentPath:          /index.php
DocumentLength:        8993 bytes
  
ConcurrencyLevel:      100
Timetaken for tests:   56.817 seconds
Completerequests:      1000
Failedrequests:        0
Totaltransferred:      10263000 bytes
HTMLtransferred:       8993000 bytes
Requestsper second:    17.60 [#/sec] (mean)
Time perrequest:       5681.702 [ms] (mean)
Time perrequest:       56.817 [ms] (mean, acrossall concurrent requests)
Transferrate:          176.40 [Kbytes/sec]received
  
ConnectionTimes (ms)
              min  mean[+/-sd] median   max
Connect:        0   4  15.0      0     81
Processing:   473 5505 979.8   5709   6616
Waiting:      441 5363 953.4   5547   6444
Total:        482 5510 973.2   5711   6616
  
Percentageof the requests served within a certain time (ms)
  50%  5711
  66%  5794
  75%  5870
  80%  5936
  90%  6100
  95%  6209
  98%  6404
  99%  6456
 100%  6616 (longest request)

. 安装 xcache 实现加速

1.解压安装xcache

使用 phpize 附加模块哦!

什么时候需要用到 phpize 呢?当我们需要再加些模块,又不想重新编译 php,这些我们就可以用 phpize 了。

1
2
3
4
5
6
7
8
9
10
[root@php~]# tar xf xcache-3.1.0.tar.bz2
[root@php~]# cd xcache-3.1.0
[root@phpxcache-3.1.0]# /usr/local/php/bin/phpize --clean && phpize
Cleaning..
Configuringfor:
PHP ApiVersion:         20100412
ZendModule Api No:      20100525
ZendExtension Api No:   220100525
[root@phpxcache-3.1.0]# ./configure --with-php-config=/usr/local/php/bin/php-config
[root@phpxcache-3.1.0]# make && make install

注意这条安装完成后提示的信息:

Installingshared extensions:    /usr/local/php/lib/php/extensions/no-debug-zts-20100525/

 

2.将其写入 xcache.ini 文件中:

先将 xcache.ini 复制到 /etc/php.d/ 目录下:

[root@phpxcache-3.1.0]# cp xcache.ini /etc/php.d/

添加上面安装完成后提示的信息进去:

[root@php ~]# vim /etc/php.d/xcache.ini 

extension= /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

 

重启 php 服务器:

1
2
3
[root@php~]# service php-fpm restart
Gracefullyshutting down php-fpm . done
Startingphp-fpm  done

 

3. 再次 pmp.stu31.com进行了测试:

 

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
[root@www ~]# ab -c 100 -n 1000 http://pmp.stu31.com/index.php
This is ApacheBench, Version 2.3 <$Revision: 1604373 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking pmp.stu31.com (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software:        Apache/2.4.10
Server Hostname:        pmp.stu31.com
Server Port:            80
Document Path:          /index.php
Document Length:        8993 bytes
Concurrency Level:      100
Time taken for tests:   17.669 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      10232000 bytes
HTML transferred:       8993000 bytes
Requests per second:    56.60 [#/sec] (mean)
# 使用 xcache 后对网站的加速是 3 倍左右哦!!!结果在此!!
Time per request:       1766.879 [ms] (mean)
Time per request:       17.669 [ms] (mean, across all concurrent requests)
Transfer rate:          565.53 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    5  17.9      0     104
Processing:   180 1701 301.1   1775    2159
Waiting:      159 1653 293.2   1721    2057
Total:        187 1706 293.7   1777    2159
Percentage of the requests served within a certain time (ms)
  50%   1777
  66%   1814
  75%   1838
  80%   1849
  90%   1875
  95%   1897
  98%   1938
  99%   1964
 100%   2159 (longest request)

 

到这里,LAMP的动静分离实验正式完成了!中途可能会出现错误,如果你出现错误可以给我说说哦!

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计43180字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中