实战案例之wordpress 站点搭建

实战案例之wordpress 站点搭建

实验准备:

一台Nginx 两台Wrordpress Nginx+PHP 一台MySQL Master 一台MySQL slave

后端存储 两台NFS 相互rsync

注意:没有做负载高可用 只用了单个Nginx做的负载

部署数据库主从:

wordpress对数据库要求为最少mysql5.6 所以去MySQL官网下载

本机的mysql-5.6.34-onekey-install.tar 有一键安装mysql脚本及my.cnf的配置文件

  1. 将文件包传输到/usr/local/src下 并解压 注意两台mysql主机都做此步骤

    1. 解压:

      [root@lnmp-mysql1 src]#  tar -xvf mysql-5.6.34-onekey-install.tar.gz 
      
    2. 执行安装脚本:

      [root@lnmp-mysql1 src]# bash mysql-install.sh 
      
  2. 执行mysql确保MySQL正常运行

    [root@lnmp-mysql1 ~]# mysql
    
  3. mysql主从同步过程

    1. master上必须开启bin-log日志 因为他的同步就是基于日志的顺序执行来完成主从同步
    2. 两个server的id必须不同 master的和Slave的
    3. 主MySQL上有一个IO线程 从MySQL上有一个IO线程和一个SQL线程,MySQL主从是实现MySQL高可用,数据备份,读写分离的一种最常见的解决方案 在绝大部分公司都有使用(现在更多的是使用中间层代理 例如mycat)
      1. Slave端的IO线程连接上Master,并向Master请求指定日志文件的指定位置(新部署的master和Slave从最开始的日志)之后的日志
      2. Master接受到来自Slave的IO线程请求,负责IO辅助的IO线程 根据Slave的请求信息读取相应的日志内容,然后将本地读取的bin-log的文件名,位置,及指定位置之后的内容一起返回给Slave的IO线程处理
      3. Slave的IO线程将接收到的信息依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的bin-log的文件名和位置记录到Master-info文件中,以便在下一次读取的时候能够清除的告诉Master”我需要从哪个bin-log的哪个位置开始往后的日志内容请发给我“
      4. Slave的sql线程检查到relay-log中新增了内容后,会马上将relay-log中的内容解析为在Master端真实执行时候的可执行命令,并顺序执行,从而保证对Slave的MySQL进行响应的增加或删除等操作,最终实现和Master数据保持一致
  4. 制作主从 更改Master和Slave的my。cnf文件,主要将id改为不一样

    [root@lnmp-mysql1 ~]# vim /etc/my.cnf
    
    	[mysqld]
    	socket=/var/lib/mysql/mysql.sock
    	user=mysql
    	symbolic-links=0
    	datadir=/data/mysql
    	innodb_file_per_table=1
    	server-id=10
    	log-bin=/data/mysql/master-log
    
    [root@lnmp-mysql1 ~]# vim /etc/my.cnf
    
    	[mysqld]
    	socket=/var/lib/mysql/mysql.sock
    	user=mysql
    	symbolic-links=0
    	datadir=/data/mysql
    	innodb_file_per_table=1
    	relay-log = /data/mysql/
    	server-id=20
    
  5. 在master上创建数据库并创建用户用于测试同步

    [root@lnmp-mysql1 ~]# mysql
    mysql> create database test1;
    mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'zhangqiang'@'%' IDENTIFIED BY '123456'; 创建并授权账户
    
    
  6. [root@lnmp-mysql1 ~]# /usr/local/mysql/bin/mysqldump --all-databases --single_transaction --flush-logs --master-data=2 --lock-tables > /opt/backup.sql
    
    [root@lnmp-mysql1 ~]# scp /opt/backup.sql 192.168.31.237:/opt/
    将文件传到slave上
    

一:部署一套完整的LNMP环境:

需要使用的站点架构:

yum install -y gcc gcc-c++  make zlib zlib-devel pcre pcre-devel  libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
1.1 编译安装PHP
  1. 编译安装PHP:

    #./configure  --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/etc/conf.d --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-pear --with-curl  --with-png-dir --with-freetype-dir --with-iconv   --with-mhash   --with-zlib --with-xmlrpc --with-xsl --with-openssl  --with-mysqli --with-pdo-mysql --disable-debug --enable-zip --enable-sockets --enable-soap   --enable-inline-optimization  --enable-xml --enable-ftp --enable-exif --enable-wddx --enable-bcmath --enable-calendar   --enable-shmop --enable-dba --enable-sysvsem --enable-sysvshm --enable-sysvmsg
    
  2. 安装对应的软件包

    yum -y install wget vim pcre pcre-devel openssl openssl-devel libicu-devel gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel krb5-devel libidn libidn-devel openldap openldap-devel nss_ldap jemalloc-devel cmake boost-devel bison automake libevent libevent-devel gd gd-devel libtool* libmcrypt libmcrypt-devel mcrypt mhash libxslt libxslt-devel readline readline-devel gmp gmp-devel libcurl libcurl-devel openjpeg-devel
    
  3. make && make install
    
  4. # pwd
    /usr/local/php/etc/php-fpm.d
    # cp www.conf.default  www.conf
    # useradd  www -s /sbin/nologin  -u 1001
    
1.2 编译安装Nginx
./configure --prefix=/usr/local/nginx  --with-pcre  --with-http_stub_status_module --with-http_ssl_module
#make && make install

日志格式更改

 log_format access_json '{"@timestamp":"$time_iso8601",'
        '"host":"$server_addr",'
        '"clientip":"$remote_addr",'
        '"size":$body_bytes_sent,'
        '"responsetime":$request_time,'
        '"upstreamtime":"$upstream_response_time",'
        '"upstreamhost":"$upstream_addr",'
        '"http_host":"$host",'
        '"url":"$uri",'
        '"domain":"$host",'
        '"xff":"$http_x_forwarded_for",'
        '"referer":"$http_referer",'
        '"status":"$status"}';
    access_log  /usr/local/nginx/logs/access.log  access_json;
    client_max_body_size 10M;  #允许上传的最大文件大小

1.3:配置Nginx web目录
#mkdir /data/nginx/wordpress –p
# chown  www.www /usr/local/nginx/ /data/nginx/ -R
 location / {
            root   /data/nginx/wordpress;
            index   index.php index.html index.htm;
            if ($http_user_agent ~ "ApacheBench|WebBench|TurnitinBot|Sogou web spider|Grid Service") {
                proxy_pass http://www.baidu.com;
                return 403;
            }
        }
 location ~ \.php$ {
            root          /data/nginx/wordpress;
            fastcgi_pass   192.168.7.104:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
             include        fastcgi_params;
        }

1.4:创建php测试页:
# cat /data/nginx/wordpress/index.php 
<?php 
  phpinfo(); 
?>
1.5:启动Nginx并访问测试:
1.6:准备数据库
mysql>  CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress"@"192.168.7.%"  IDENTIFIED BY "123456";
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

1.7: 部署WordPress
[root@redis-s4 wordpress]# pwd
/data/nginx/wordpress
# tar  xvf wordpress-5.0.1-zh_CN.tar.gz
# mv wordpress-5.0.1-zh_CN.tar.gz  /opt
# cp wp-config-sample.php  wp-config.php
#vim wp-config.php #修改数据库配置
# grep "^[a-Z]" wp-config.php 
define('DB_NAME', 'wordpress');
define('DB_USER', 'wordpress');
define('DB_PASSWORD', '123456');
define('DB_HOST', '192.168.7.103');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
define('AUTH_KEY',         'zY%A)<+`Qf^68kzMC-)0+bL3m!LADP-PgJ9a~-CLtk*JnJ%-OGDEi/-v*zoJx1gP');
define('SECURE_AUTH_KEY',  '1muyi_3wR[/<}1-[2/F=Lb3`1c-+o5*!uu4-un-4!iMb!Nl|X=}Ud-<PGxkPpuse');
define('LOGGED_IN_KEY',    '*%/!SxN}FllpDe4+_Phylp>_^jD]N$Tc9/CstL )yRvLg!+9y #l}1?Da 8}sat{');
define('NONCE_KEY',        'mTY2Bio ;v4j^%#O>J&@Py[6TaYy+mLmbp7$[=c,l|qY9TPwSH+Kf(!PUmTE9J`c');
define('AUTH_SALT',        '~:wkxx83`q_+bm|{MH-|CA<`>#JJGitCsed#?a^BSsm{rVC1sg;b:&/:h$f>9D.z');
define('SECURE_AUTH_SALT', 'u%_}v`0L~#<kZ|U +st.]iNTbGq-%Bb)Ti&E<$-LMU6jtEz}X)T$MZ{@S(#DJOQp');
define('LOGGED_IN_SALT',   'QxUBuWv[GjaGx7=VR|&.i?wTsS-Jr($}p#?y})O-N1*h$gh d cj%H-g2~HV*&ki');
define('NONCE_SALT',       '>Lx7Vu=>R+O||Ks)cCDGO=+st|Ja&|+5GlR?F{1Vdng-q:f#:{[TIfY#EtP|1k8a');

1.8: 测试并启动Nginx
[root@redis-s4 wordpress]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@redis-s4 wordpress]# /usr/local/nginx/sbin/nginx
1.9: 访问web界面并修改配置信息
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值