Linux/Python学习论坛-京峰教育

 找回密码
 立即注册

一键登录:

搜索
热搜: 活动 交友 discuz
查看: 1750|回复: 1

学习笔记-LH01-LAMP架构安装discuz和wordpress

[复制链接]

20

主题

77

帖子

1043

积分

超级版主

Rank: 8Rank: 8

积分
1043
QQ
发表于 2015-4-15 15:30:55 | 显示全部楼层 |阅读模式
本帖最后由 LiuHui 于 2015-4-28 16:27 编辑

实验环境:CentOS 6.5 64bit
Apache+PHP   一台服务器192.168.70.129
MySQL Master 一台服务器192.168.70.133
MySQL Slave  一台服务器192.168.70.134
实验目的:
1.源码安装LAMP
2.配置虚拟主机分别访问discuz和blog
3.配置主从同步备份服务器,master突然down机,手动配置slave接替Master工作

实验步骤:
注:需先关闭防火墙和SELinux/etc/init.d/iptables stop
chkconfig iptables off
setenforce 0  --用于临时关闭selinux
vi /etc/selinux/config
将SELINUX=enforcing
改成SELINUX=disabled

## (一)源码安装LAMP之Apache+PHP:
1)Apache源码安装:
  1. yum install apr-devel arp-util-devel -y;
  2. cd /usr/src
  3. wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.29.tar.gz
复制代码


wget http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.29.tar.gz
新一点tar包
http://mirror.bit.edu.cn/apache/httpd/httpd-2.4.12.tar.gz
  1. tar zxf httpd-2.2.29.tar.gz
  2. ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite
复制代码


报错提示1: 执行./configure报错:
configure: error: Cannot use an external APR with the bundled APR-util
原因分析:
apache2.0.x与apache2.2.x在apr有很大区别,前者为依赖公用apr,后者依赖于自身的apr。一般前者也就是2.0.x的编译基本上没有apr方面的问题。如果是后者也出现关于apr的问题,则将安装前的apr去除后,在编译apache2.2.x自身的apr,在srclib目录中。
解决方法:
因此根据提示解决此问题:
1、安装APR:
--------------------------------------
  1. cd httpd-2.2.29
  2. cd srclib/apr
  3. ./configure  --prefix=/usr/local/apr
  4. make && make install
复制代码

--------------------------------------
2、安装APR-util
--------------------------------------
  1. cd ../apr-util/
  2. ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
  3. make && make install
复制代码

--------------------------------------
3、安装apache,加入参数(--with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util)
--------------------------------------
  1. cd /srv/soft/httpd-2.2.29
  2. ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
  3. make && make install
复制代码
--------------------------------------

错误提示2:
安装最新httpd-2.4.12 编译问题:
configure: error: APR not found.  Please read the documentation
方法:
安装apr,apr-util
http://apr.apache.org/download.cgi
--------------------------------------
错误提示3:
configure: error: pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/
解决方法:
  1. yum install pcre-devel  
复制代码


就是缺了开发包,后来查明白了
带有devel是开发包,需要编译环境才需要安装。而我查到的 .so 是动态库,所以我装apache的时候需要的是开发包,而不是已经装好的库。

#############################################################
2)PHP源码安装
1.先安装依赖包
  1. yum install libxml2 libxml2-devel -y
复制代码



## apache+php和mysql分开装论坛访问空白解决了吗?
前提php版本5.3及以上
php编译安装时用下面这个
  1. tar zxf php-5.4.39.tar.gz
  2. cd php-5.4.39
  3. ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
复制代码


如果在phpinfo输出的mysql项中发现client API Version  : mysqlnd, 说明mysqlnd驱动安装成功.
百度搜解释:
http://zhangxugg-163-com.iteye.com/blog/1894990

(二)源码安装Apache+PHP整合
1.整合apache+php环境,修改httpd.conf配置文件,然后加入如下语句:
LoadModule php5_module        modules/libphp5.so(默认已存在)
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html  (把index.php加index.html之前)

2.然后在/usr/local/apache/htdocs目录下创建index.php测试页面,执行如下命令:
[root@LiuHui conf]# cat >>/usr/local/apache/htdocs/index.php<<EOF
<?php
phpinfo();
?>
EOF

3.启动apache服务
  1. /usr/local/apache/bin/apachectl start
复制代码


检查服务是否启动成功:
  1. netstat -ntl |grep 80
  2. ps -ef |grep httpd
  3. lsof -i:80
复制代码

3.访问http://IP/测试是否整合成功

(三)MySQL主从同步配置
Master:192.168.70.133
Slave:192.168.70.134

1.安装mysql数据库
1)安装依赖包
  1. yum install ncurses-devel -y
复制代码

2)下载源码包编译安装
  1. cd /src/soft;
  2. wget http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.1/mysql-5.1.72.tar.gz
  3. tar zxf mysql-5.1.71.tar.gz
  4. cd mysql-5.1.71
  5. ./configure --prefix=/usr/local/mysql --enable-assembler
  6. make && make install
复制代码
============================================
3)配置mysql服务为系统服务:
  1. cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
  2. cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
  3. chkconfig --add mysqld
  4. chkconfig --level 345 mysqld on
  5. cd /usr/local/mysql/
  6. useradd mysql
  7. chown -R mysql.mysql /usr/local/mysql
  8. /usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/usr/local/mysql/var
  9. chown -R mysql var/
复制代码
启动Mysql:
  1. /etc/init.d/mysqld start
复制代码



  1. /usr/local/mysql/bin/mysqld_safe  --user=mysql &
复制代码



注:MySQL Slave服务器安装同Master。
------------------------------------------
mysql 主从同步原理:
1、在master主开启bin-log日志功能, 记录更新、插入、删除的语句。
2、必须开启三个线程,主上开启io线程,从上开启io线程和sql线程。
3、从上io线程去连接master,master通过io线程检查有slave过来的请求,请求日志、postsion的位置。
4、master将这些相应的日志返回给slave,slave自己去下载到本地的realy_log里面,写入一个master-info日志记录同步的点。
5、slave的sql线程检查到realy-log日志有更新,然后在本地去exec执行。
6、主从同步是属于异步方式。

将空格替换成空。
%s/^ //g
%s/ $//g

2.MySQL主从配置
1)在主上配置主要添加servier-id和log-bin:
  1. [mysqld]
  2. log-bin=mysql-bin
  3. server-id = 1
  4. auto_increment_offset=1
  5. auto_increment_increment=2
  6. [mysqld_safe]
  7. log-error=/var/log/mysqld.log
  8. pid-file=/var/run/mysqld/mysqld.pid
  9. replicate-do-db=discuz,wordpress
复制代码

保存退出,重启mysql服务:
  1. /etc/init.d/mysqld restart
复制代码


登录主数据库授权slave同步的用户,查看同步点。
  1. grant replication slave on *.* to 'tongbu'@'192.168.80.132' identified by '123456';
  2. show master status;
  3. mysql-bin.000001  348
复制代码

-------------------------------------------
scp -r /etc/my.cnf root@192.168.80.134:/etc/my.cnf
2)从slave上主要配置server-id:
  1. [mysqld]
  2. datadir=/var/lib/mysql
  3. socket=/var/lib/mysql/mysql.sock
  4. user=mysql
  5. symbolic-links=0
  6. server-id = 2
  7. auto_increment_offset=2
  8. auto_increment_increment=2

  9. [mysqld_safe]
  10. log-error=/var/log/mysqld.log
  11. pid-file=/var/run/mysqld/mysqld.pid
复制代码



3)启动mysql
  1. /etc/init.d/mysqld restart
复制代码


--------------------------------------
4)从上登录数据库change master,并开启slave
  1. change master to master_host='192.168.70.133',master_user='tongbu',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=348;
复制代码

  1. slave start;
复制代码


查看是否同步:
  1. show slave status\G;
复制代码
如有以下两个YES,代表同步成功
  1.        Slave_IO_Running: Yes
  2.       Slave_SQL_Running: Yes
复制代码


(四)LAMP配置虚拟主机搭建discuz和wordpress

1)下载discuz和wordpress主程序
Discuz_X3.2_SC_UTF8.zip
wordpress-4.1-zh_CN.tar.gz

2)创建程序目录,并解压主程序
  1. mkdir /data/{bbs,blog} -p
  2. tar -zxf wordpress-4.1-zh_CN.tar.gz -C /data/blog/
  3. unzip Discuz_X3.2_SC_UTF8.zip -d /data/bbs/
  4. cd /data/bbs/
  5. mv upload/* .
  6. chmod o+w data/ config/ uc_client/ uc_server/ -R
  7. cd ../blog/
  8. mv wordpress/* .
复制代码

3)创建存储blog和bbs数据的数据库并授权:
  1. mysql> create database wordpress charset=utf8;
  2. Query OK, 1 row affected (0.00 sec)
  3. mysql> grant all on discuz.* to discuz@'192.168.70.129' identified by '123456';
  4. Query OK, 0 rows affected (0.06 sec)
  5. mysql> grant all on wordpress.* to wordpress@'192.168.70.129' identified by '123456';
  6. Query OK, 0 rows affected (0.00 sec)
  7. mysql> flush privileges;
复制代码

4)配置虚拟主机后,访问安装测试
1.配置虚拟主机
  1. /usr/local/apache/conf/extra/httpd-vhosts.conf
  2. [root@LiuHui extra]# cat httpd-vhosts.conf
  3. NameVirtualHost *:80
  4. #
  5. <VirtualHost *:80>
  6.     ServerAdmin  dashu8@163.com
  7.     DocumentRoot "/data/bbs"
  8.     ServerAlias bbs.yhh88.com
  9. <Directory "/data/bbs">
  10.     AllowOverride All
  11.     Options -Indexes FollowSymLinks
  12.     Order allow,deny
  13.     Allow from all
  14. </Directory>
  15.     ErrorLog "logs/bbs.yhh88-error_log"
  16.     CustomLog "logs/bbs.yhh88-access_log" common
  17. </VirtualHost>

  18. #
  19. <VirtualHost *:80>
  20.     ServerAdmin  dashu8@163.com
  21.     DocumentRoot "/data/blog"
  22.     ServerAlias blog.yhh88.com
  23. <Directory "/data/blog">
  24.     AllowOverride All
  25.     Options -Indexes FollowSymLinks
  26.     Order allow,deny
  27.     Allow from all
  28. </Directory>
  29.     ErrorLog "logs/blog.yhh88-error_log"
  30.     CustomLog "logs/blog.yhh88-access_log" common
  31. </VirtualHost>
复制代码

2.在apache主配置文件httpd.conf去掉此行注释#:
Include conf/extra/httpd-vhosts.conf

3.重启apache服务
  1. /usr/local/apache/bin/apachectl restart
复制代码


4.配置本机hosts文件,设置本地域名解析
C:\Windows\System32\drivers\etc\hosts
192.168.70.129        blog.yhh88.com
192.168.70.129 bbs.yhh88.com

访问http://bbs.yhh88.com进行安装论坛
访问http://blog.yhh88.com进行安装博客


(五)Mysql主从同步,master突然down机,如何恢复:
1、slave数据库必须启动,在slave上授权网站IP对数据库的访问权限。
2、修改网站服务器config目录下:
config_global.php
config_ucenter.php 把原先master ip改成slave ip地址。
3、重启httpd服务,切换成功。

具体手动更改操作步聚:
1.在slave上授权web服务器可以访问从服务器:
  1. mysql> grant all on discuz.* to 'discuz'@'192.168.70.129' identified by '123456';
  2. Query OK, 0 rows affected (0.00 sec)
  3. mysql> grant all on wordpress.* to 'wordpress'@'192.168.70.129' identified by '123456';
  4. Query OK, 0 rows affected (0.00 sec)
  5. mysql> flush privileges;
复制代码


2.再在Apache+PHP上更改配置discuz和wordpress连接数据库IP改为slave的IP
  1. [root@LiuHui blog]# grep 192.168.70.134 wp-config.php
  2. define('DB_HOST', '192.168.70.134');
  3. [root@LiuHui blog]# cd ../bbs/config/
  4. [root@LiuHui config]# grep 192.168.70.134 config_ucenter.php
  5. define('UC_DBHOST', '192.168.70.134');
  6. [root@LiuHui config]# grep 192.168.70.134 config_global.php
  7. $_config['db']['1']['dbhost'] = '192.168.70.134';
复制代码
3.再测试访问正常



回复

使用道具 举报

63

主题

161

帖子

2628

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2628
发表于 2015-4-26 00:26:05 | 显示全部楼层
文档每一步都写得非常详细,我抽空按你写的文档再来做做看。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|京峰教育,只为有梦想的人 ( 京ICP备15013173号 )

GMT+8, 2019-10-21 16:12 , Processed in 0.023222 second(s), 10 queries , Redis On.

快速回复 返回顶部 返回列表