第十九节、LAMP环境搭建整合MySQL数据库主从及安装Discuz论坛

一、LAMP企业架构集群讲解

Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台.(为了提高性能也可以用Nginx代替Apache发布网页)
随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注。
目前LAMP架构是大多数中小企业最青睐的PHP架构选择,也是众多Linux SA喜欢选择的一套架构.

  • YUM安装yum install httpd httpd-devel mysql mysql-server mysql-devel php php-devel php-mysql -y安装完成后可以直接使用,源码安装的话需要整合apache和php.
二、源码安装整合LAMP
  • 检查安装环境卸载已安装的服务如httpd,mysql(利用rpm命令不带依赖关系移除)
[root@mini ~]# rpm -qa|grep httpd
httpd-tools-2.2.15-29.el6.centos.x86_64
httpd-2.2.15-29.el6.centos.x86_64
[root@mini ~]# rpm -e --nodeps  httpd-2.2.15-29.el6.centos.x86_64
[root@mini ~]# rpm -e --nodeps  httpd-tools-2.2.15-29.el6.centos.x86_64
[root@mini src]# rpm -qa|grep mysql
mysql-libs-5.1.71-1.el6.x86_64
[root@mini ~]# rpm -e --nodeps  mysql-libs-5.1.71-1.el6.x86_64
  • 切换下载目录下载所用的各种安装包,这里为了测试LAMP环境下载discuz论坛源码包作为测试或者wordpross博客论坛源码
[root@mini ~]# cd /usr/src/  #切换下载目录依次下载discuz论坛源码包,http/mysql/php源码包
[root@mini src]# wget http://download.comsenz.com/DiscuzX/3.4/Discuz_X3.4_SC_UTF8.zip
[root@mini src]# wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.2.34.tar.gz 
[root@mini src]# wget http://downloads.mysql.com/archives/mysql-5.1/mysql-5.1.63.tar.gz 
[root@mini src]# wget http://mirrors.sohu.com/php/php-5.3.28.tar.bz2
[root@mini src]# wget https://cn.wordpress.org/wordpress-4.9.1-zh_CN.tar.gz
[root@mini src]# ls
debug                    httpd-2.2.34.tar.gz  mysql-5.1.63.tar.gz  wordpress-4.9.1-zh_CN.tar.gz
Discuz_X3.4_SC_UTF8.zip  kernels              php-5.3.28.tar.bz2
  • 安装httpd服务
参考资料

源码安装apache参考文章

[root@mini src]# tar -zxvf httpd-2.2.34.tar.gz   #解压
[root@mini src]# cd httpd-2.2.34   #切换源码包
[root@mini httpd-2.2.34]# ls
ABOUT_APACHE  CHANGES        httpd.dsp       libhttpd.dep  NOTICE            server
acinclude.m4  config.layout  httpd.mak       libhttpd.dsp  NWGNUmakefile     srclib
Apache.dsw    configure      httpd.spec      libhttpd.mak  os                support
build         configure.in   include         LICENSE       README            test
BuildAll.dsp  docs           INSTALL         Makefile.in   README.platforms  VERSIONING
BuildBin.dsp  emacs-style    InstallBin.dsp  Makefile.win  README-win32.txt
buildconf     httpd.dep      LAYOUT          modules       ROADMAP
[root@mini httpd-2.2.34]# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite
#预编译指定安装目录,添加动态扩展模块,rewrite模块
[root@mini httpd-2.2.34]# make  #编译 
[root@mini httpd-2.2.34]# make install  #安装
[root@mini local]# chown -R apache.apache /usr/local/apache/
#更改apache安装目录的所有者和属组
#修改配置文件更改服务使用者,apache用户系统已创建
[root@mini local]# vim /usr/local/apache/conf/httpd.conf 
 66 User apache
 67 Group apache
启动故障排查
安装完成后检查配置文件报错如下
[root@mini ~]# /usr/local/apache/bin/apachectl -t
httpd: apr_sockaddr_info_get() failed for mini
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Syntax OK
如果不解决直接启动报错如下
[root@mini ~]# /usr/local/apache/bin/apachectl start
httpd: apr_sockaddr_info_get() failed for mini
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
解决方案:在配置文件/usr/local/apache/conf/httpd.conf中添加语句
ServerName  localhost:80

-将httpd服务加入系统服务并设置开机自启动

[root@mini ~]# cp /usr/local/apache/bin/apachectl  /etc/init.d/httpd
#将apache的启动脚本复制到/etc/rc.d/init.d这个目录下
#直接修改启动脚本在最上面添加如下两行带#的注释语句
[root@mini ~]# vi /etc/init.d/httpd 
#chkconfig: 2345 70 60
#description: apache
[root@mini ~]# chkconfig --add httpd
#添加系统服务
[root@mini ~]# chkconfig httpd on
#设置开机自启动
[root@mini local]# /etc/init.d/httpd -t
Syntax OK
#检查配置文件无问题
[root@mini local]# /etc/init.d/httpd start
[root@mini local]# ps -ef|grep httpd
root      24813      1  0 09:53 ?        00:00:00 /usr/local/apache/bin/httpd -k start
apache    24814  24813  0 09:53 ?        00:00:00 /usr/local/apache/bin/httpd -k start
apache    24815  24813  0 09:53 ?        00:00:00 /usr/local/apache/bin/httpd -k start
apache    24816  24813  0 09:53 ?        00:00:00 /usr/local/apache/bin/httpd -k start
apache    24817  24813  0 09:53 ?        00:00:00 /usr/local/apache/bin/httpd -k start
apache    24818  24813  0 09:53 ?        00:00:00 /usr/local/apache/bin/httpd -k start
root      24820   1305  0 09:53 pts/0    00:00:00 grep httpd
#启动httpd服务查看进程正常
  • 安装mysql服务
参考资料

mysql源码安装编译参数详解参考
MySQL的常见的三种方式

[root@mini src]# tar zxvf mysql-5.1.63.tar.gz 
[root@mini src]# cd mysql-5.1.63
[root@mini mysql-5.1.63]# ls
aclocal.m4      config.guess  Docs                libmysqld    mysql-test  server-tools   tests
BUILD           config.sub    extra               libmysql_r   mysys       sql            unittest
ChangeLog       configure     include             ltmain.sh    netware     sql-bench      vio
client          configure.in  install-sh          Makefile.am  plugin      sql-common     win
CMakeLists.txt  COPYING       INSTALL-SOURCE      Makefile.in  README      storage        ylwrap
cmd-line-utils  dbug          INSTALL-WIN-SOURCE  man          regex       strings        zlib
config          depcomp       libmysql            missing      scripts     support-files
[root@mini mysql-5.1.63]# ./configure --prefix=/usr/local/mysql --enable-assembler 
#预编译指定安装目录,使用汇编模式提高性能
[root@mini mysql-5.1.63]# make   #编译
[root@mini mysql-5.1.63]# make install   #安装
故障排除

mysql预编译时报错

报错信息如下(echo $?可查看命令执行结果,返回0正常,其余任何数字都是异常)
checking for tgetent in -lncursesw... no
checking for tgetent in -lncurses... no
checking for tgetent in -lcurses... no
checking for tgetent in -ltermcap... no
checking for tgetent in -ltinfo... no
checking for termcap functions library... configure: error: No curses/termcap library found
[root@mini mysql-5.1.63]# echo $?
1
故障原因:缺少ncurses安装包
解决办法:下载安装相应软件包
[root@mini mysql-5.1.63]# yum install  ncurses  ncurses-devel -y
将mysql配置为系统服务
[root@mini mysql-5.1.63]# cp /usr/local/mysql/share/mysql/my-medium.cnf  /etc/my.cnf
#拷贝源码包的配置文件到系统配置目录下
[root@mini mysql-5.1.63]# cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
#拷贝源码包的服务文件到系统启动目录下
[root@mini mysql-5.1.63]# chkconfig --add mysqld
#将mysql文件加入开机启动项列表
[root@mini mysql-5.1.63]# chkconfig --level 345 mysqld on
#设置各级别开机自启动
[root@mini mysql-5.1.63]# cd /usr/local/mysql/
#切换源码安装目录
[root@mini mysql]# useradd mysql
#创建普通用户mysql
[root@mini mysql]# chown -R mysql.mysql /usr/local/mysql/
#更改mysql目录的所有者及属组
[root@mini bin]# /usr/local/mysql/bin/mysql_install_db --user=mysql
#初始化数据库
[root@mini mysql]# chown -R mysql var
#更改安装目录下var目录的所有者,var目录是初始化以后才创建的
[root@mini mysql]# /usr/local/mysql/bin/mysqld_safe --user=mysql&
#以安全模式后台启动mysql服务
[root@mini mysql]# /usr/local/mysql/bin/mysql
#用安装包下的绝对路径进入数据库
[root@mini mysql]# ln -s /usr/local/mysql/bin/mysql /usr/bin
#创建软链接,系统默认会查找/usr/bin下的命令,这样就能直接通过mysql进入数据库
补充源码停止mysql数据库命令/usr/local/mysql/share/mysql/mysql.server stop
  • 安装PHP服务(展示动态网页)
    PHP源码编译安装参数参考
[root@mini src]# tar jxf php-5.3.28.tar.bz2 
[root@mini src]# cd php-5.3.28
[root@mini php-5.3.28]# ls
acconfig.h        INSTALL              README.EXTENSIONS                 scripts
acconfig.h.in     install-sh           README.EXT_SKEL                   server-tests-config.php
acinclude.m4      LICENSE              README.GIT-RULES                  server-tests.php
aclocal.m4        ltmain.sh            README.input_filter               snapshot
build             main                 README.MAILINGLIST_RULES          stamp-h.in
buildconf         makedist             README.namespaces                 stub.c
buildconf.bat     Makefile.frag        README.PARAMETER_PARSING_API      svnclean.bat
CODING_STANDARDS  Makefile.gcov        README.PHP4-TO-PHP5-THIN-CHANGES  tests
config.guess      Makefile.global      README.REDIST.BINS                TODO
config.sub        makerpm              README.RELEASE_PROCESS            TODO-5.1
configure         missing              README.SELF-CONTAINED-EXTENSIONS  TODO-PHP5
configure.in      mkinstalldirs        README.STREAMS                    TSRM
CREDITS           netware              README.SUBMITTING_PATCH           UPGRADING
ext               NEWS                 README.TESTING                    UPGRADING.INTERNALS
EXTENSIONS        pear                 README.TESTING2                   vcsclean
footer            php5.spec.in         README.UNIX-BUILD-SYSTEM          win32
generated_lists   php.gif              README.WIN32-BUILD-SYSTEM         Zend
genfiles          php.ini-development  run-tests.php
header            php.ini-production   sapi
[root@mini php-5.3.28]# ./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql/
#预编译,指定安装目录,指定php.ini位置,整合 apache加载指定模块到 apache,要求 apache 要打开SO模块,指定mysql安装目录,对mysql的支持
[root@mini php-5.3.28]# make 
[root@mini php-5.3.28]# make install
故障排查

安装PHP模块预编译时报错信息如下

checking libxml2 install dir... no
checking for xml2-config path... 
configure: error: xml2-config not found. Please check your libxml2 installation.
[root@mini php-5.3.28]# echo $?
1
检查是否安装了libxm包
[root@mini php-5.3.28]# rpm -qa|grep libxml2
libxml2-python-2.7.6-14.el6.x86_64
libxml2-2.7.6-14.el6.x86_64
重新安装libxml2和libxml2-devel包
[root@mini php-5.3.28]# yum install libxml2 libxml2-devel -y
安装完之后查找xml2-config文件是否存在
[root@mini php-5.3.28]# find / -name "xml2-config"
/usr/bin/xml2-config
至此问题解决重新对PHP模块进行编译安装
补充:当mysql数据库服务器在其他主机时php编译参数支持mysql扩展
 ./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd

mysqlnd是php5.3以后版本加入的,5.3以下版本必须还是要编译mysql。

  • 修改配置文件整合apache及php
修改httpd.conf配置文件
[root@mini php-5.3.28]# vim /usr/local/apache/conf/httpd.conf
 54 LoadModule php5_module        modules/libphp5.so  
#PHP预编译安装参数 --with-apxs2=/usr/local/apache/bin/apxs,指定http加载模块后生成的配置语句,之前测试实验时参数--with-apxs2输入有误,写成-with-apx2导致整合失败
319     AddType application/x-compress .Z
320     AddType application/x-gzip .gz .tgz
321     AddType application/x-httpd-php .php
#319、320是已存在的,321是新增语句
169     DirectoryIndex  index.php  index.html
#指定默认访问页面优先级,添加index.php到最前面
创建index.php测试页面
[root@mini php-5.3.28]# vim /usr/local/apache/htdocs/index.php

  • 整合完成重启httpd服务,访问页面http://192.168.15.142得到php配置信息页面整合成功
三、配置MySQL主从服务器

按照上述步骤192.16815.142主机已安装整合好LAMP环境,再为其配置从数据库服务器
克隆一台最小化安装的主机后源码安装mysql数据库服务
主从服务器分别登录mysql,设置root用户密码mysql> grant all on *.* to root@'localhost' identified by '123456';,刷新授权mysql> flush privileges;
修改master配置文件

[root@mini ~]# vim /etc/my.cnf
18 [client]
 20 port            = 3306
 21 socket          = /tmp/mysql.sock
 22 default-character-set=utf8
#22行为新增修改客户端字符集
 27 [mysqld]
50 log-bin=mysql-bin
#50行默认打开bin-log日志
 58 server-id       = 1
 59 character-set-server=utf8
#58行默认,但是slave的id必须改掉不能一样,59行也是新增修改字符集
133 [mysql]
137 default-character-set=utf8
#137行新增修改字符集

修改slave配置文件配置字符集,修改id号
主从服务器分别重启mysqld服务/etc/init.d/mysqld restart
master服务器授权slave同步自己mysql> grant replication slave on *.* to 'tongbu'@'%' identified by '123456';
查看同步点

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000006 |      256 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

slave服务器

#设置同步主服务器
mysql> change master to master_host='192.168.15.143',master_user='tongbu',master_password='123456',master_log_file='mysql-bin.000006',master_log_pos=256;  
Query OK, 0 rows affected (0.39 sec)
#开启同步
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
#查看I/O线程、SQL线程已开启
mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.15.143  #master的IP地址
                  Master_User: tongbu               #同步使用的用户名(mysql数据库里的用户)
                  Master_Port: 3306                   #使用的端口号
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000006   #开始同步的bin-log日志
          Read_Master_Log_Pos: 256                  #开始的同步点
               Relay_Log_File: mini-relay-bin.000002
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000006
             Slave_IO_Running: Yes       ####I/O线程开启
            Slave_SQL_Running: Yes    ####SQL线程开启
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 256
              Relay_Log_Space: 405
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
1 row in set (0.00 sec)

至此mysql服务器主从配置完成

四、在已配置好的LAMP环境下搭建discuz论坛
[root@mini data]# cd /usr/src/  #切换下载目录
[root@mini src]# unzip Discuz_X3.4_SC_UTF8.zip #解压论坛源码包
[root@mini src]# mv upload/ /data/ #把内容主目录移动到/data下
[root@mini data]# mv /data/upload/  /data/discuz #重命名目录
[root@mini data]# ln -s /data/discuz/ /usr/local/apache/htdocs/
#创建链接到apache的发布目录

至此可通过http://192.168.15.143/discuz访问论坛创建向导页面

[root@mini discuz]# cd /usr/local/apache/htdocs/discuz/
#切换网站发布目录
[root@mini discuz]# chmod -R 777 config/ data/ uc_client/ uc_server/
#更改相关目录的权限
[root@mini data]# mysql -uroot -p
Enter password: 
#进入mysql数据库
mysql> create database discuz charset=utf8;
Query OK, 1 row affected (0.00 sec)
#创建论坛数据库并指定字符集
mysql> grant all on discuz.* to root@'localhost' identified by "123456";
Query OK, 0 rows affected (0.00 sec)
#授权

进入向导页面根据提示设置管理员密码完成安装

五、优化数据库连接

当LAMP主机master上的数据库出故障时候,可以通过修改discuz源码配置文件将数据库的链接IP指向slave服务器的数据库(slave同样要对master授权访问)来快速的恢复故障.
discuz论坛配置文件位置/usr/local/apache/htdocs/discuz/conf/config_ucenter.php修改UC_DBHOST把原本的localhost换成slave_ip或者域名
但以上方法每次都需要改动配置文件比较麻烦,换思路在创建论坛时,数据库的IP地址用域名代替,这样即时有问题只需要改动主机的host文件修改数据库域名对应的IP即可.

你可能感兴趣的:(第十九节、LAMP环境搭建整合MySQL数据库主从及安装Discuz论坛)