Linux架构11 搭建博客wordpress, 知乎wecenter, edusoho, 扩展web服务器, 数据库拆分到新服务器, NFS共享wordpress图片

5.搭建博客wordpress

1)上传包

https://cn.wordpress.org/下载 wordpress-5.0.3-zh_CN.tar.gz

[root@web01 ~]# cd /code/
[root@web01 code]# rz wordpress-5.0.3-zh_CN.tar.gz 

2) 解压代码包

[root@web01 code]# tar xf wordpress-5.0.3-zh_CN.tar.gz

3) 授权目录

[root@web01 code]# chown -R www.www /code/

4) 配置nginx

[root@web01 conf.d]# vim wordpress.conf
---------------------------------------
server {
    listen 80;
    server_name blog.linux.com;
    
    location / {
        root /code/wordpress;
        index index.php;
    }
    
    location ~* \.php$ {
        root /code/wordpress;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

[root@web01 conf.d]# systemctl restart nginx

# 修改win10 host文件
C:\Windows\System32\drivers\etc\hosts
10.0.0.7 blog.linux.com

5) 创建数据库

在数据库中添加一个库

[root@web01 conf.d]# mysql -uroot -padmin123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database wordpress;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wordpress          |
+--------------------+
5 rows in set (0.01 sec)

 出现下图,表示成功

 登录

 博客搭建完成

 注: 插入图片,可能出现图片过大,通过改修改

[root@web01 ~]# vim /etc/php.ini
---------------------------------
post_max_size
upload_max_filesize

可以修改主题,网页上传 或者 手动下载主题,解压,赋权chown -R www.www 主题文件夹

 

6.搭建知乎wecenter

下载 https://github.com/wecenter/wecenter

1) 上传代码包

[root@web01 code]# rz WeCenter_3-2-1.zip
[root@web01 code]# unzip WeCenter_3-2-1.zip
[root@web01 code]# mv WeCenter_3-2-1 wecenter
[root@web01 code]# chown -R www.www ./*

2) 配置nginx

[root@web01 conf.d]# cp wordpress.conf zh.conf
[root@web01 conf.d]# vim zh.conf
---------------------------------------------
server {
    listen 80;
    server_name zh.linux.com;

    location / {
        root /code/wecenter;
        index index.php;
    }

    location ~* \.php$ {
        root /code/wecenter;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
------------------------------------------
# 改完重启
[root@web01 conf.d]# systemctl restart nginx

# 修改win10 host文件
C:\Windows\System32\drivers\etc\hosts
10.0.0.7 blog.linux.com zh.linux.com

3) 创建数据库

MariaDB [(none)]> create database zh;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| wordpress          |
| zh                 |
+--------------------+
6 rows in set (0.01 sec)

 安装成功

 

7. 搭建edusoho

1)上传代码包

从官网下载

[root@web01 code]# rz edusoho-8.3.36.tar.gz 

2) 解压代码包

[root@web01 code]# tar xf edusoho-8.3.36.tar.gz 
[root@web01 code]# chown -R www.www edusoho 

3) 配置nginx

[root@web01 conf.d]# vim edu.conf
----------------------------------
server {
    listen 80;
    server_name edu.linux.com;
    root /code/edusoho/web;
    client_max_body_size 200m;
    
    location / {
        index app.php;
        try_files $uri @rewriteapp;
    }
    location @rewriteapp {
        rewrite ^(.*)$ /app.php/$1 last;
    }
    location ~ ^/udisk {
        internal;
        root /var/www/edusoho/app/data/;
    }
    location ~ ^/(app|app_dev)\.php(/|$) {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS off;
        fastcgi_param HTTP_X-Sendfile-Type X-Accel-Redirect;
        fastcgi_param HTTP_X-Accel-Mapping /udisk=/code/edusoho/app/data/udisk;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 8 128k;
    }
    # 配置设置图片格式文件
    location ~* \.(jpg|jpeg|gif|png|ico|swf)$ {
        # 过期时间为3年
        expires 3y;
        # 关闭日志记录
        access_log off;
        # 关闭gzip压缩,减少CPU消耗,因为图片的压缩率不高。
        gzip off;
    }
    # 配置css/js文件
    location ~* \.(css|js)$ {
        access_log off;
        expires 3y;
    }
    # 禁止用户上传目录下所有.php文件的访问,提高安全性    
    location ~ ^/files/.*\.(php|php5)$ {
        deny all;
    }
    # 以下配置允许运行.php的程序,方便于其他第三方系统的集成。
    location ~ \.php$ {
        # [改] 请根据实际php-fpm运行的方式修改
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS off;
    }
}

[root@web01 conf.d]# systemctl restart nginx

4) 优化参数

[root@web01 code]# vim /etc/php.ini
post_max_size = 200M
upload_max_filesize = 200M

[root@web01 conf.d]# systemctl restart php-fpm

注意:如果安装中,文件目录权限检查有问题,就创建赋权

# edusoho设置管理账号密码
用户 admin
密码 123456

 

数据库拆分

为什么要拆分?

由于单台服务器运行`LNMP`架构会导致网站访问缓慢,当内存被占满时,很容易导致系统出现`oom`,从而kill掉MySQL数据库,所以要将web和数据库进行独立部署。(一般数据占用数据库内存70%-80%)

拆分数据库解决什么问题

1、缓解web网站的压力
2、增强数据库读写性能
3、提高用户访问的速度

1.环境准备

主机搭建服务外网地址内网地址
web01 nginx+php 10.0.0.7 172.16.1.7
db01 mariadb 10.0.0.51 172.16.1.51

2.在新的服务器上部署数据库(建新房子)

[root@db01 ~]# yum install -y mariadb-server

3.启动数据库 (装修)

[root@db01 ~]# systemctl start mariadb
[root@db01 ~]# systemctl enable mariadb

4.配置数据库密码(换锁)

[root@db01 ~]# mysqladmin -uroot password 'admin123'

5.测试连接数据库(能不能住)

# web01进行远程连接db01的库
[root@web01 ~]# mysql -uroot -padmin123 -h172.16.1.51
ERROR 1130 (...): Host '172.16.1.7' is not allowed to connect to this mariaDB server

6.授权远程连接数据库(想办法进去住)

# db01的mariadb授权
# 授权172.16.1.% 这个网段 通过root 密码为admin123 可以管理所有库表操作,所有命令
MariaDB [(none)]> grant all on *.* to root@'172.16.1.%' identified by 'admin123';

# 查看授权用户
MariaDB [(none)]> select user,host from mysql.user;
+------+------------+
| user | host       |
+------+------------+
| root | 127.0.0.1  |
| root | 172.16.1.% |    # 如果有这一条说明授权成功
| root | ::1        |
|      | db01       |
| root | db01       |
|      | localhost  |
| root | localhost  |
+------+------------+
7 rows in set (0.00 sec)

7.授权后测试连接(再试试能不能住)

# web01进行远程连接db01的库
[root@web01 ~]# mysql -uroot -padmin123 -h172.16.1.51

8.导出旧数据库数据(把家具搬出来)

# -B 选择表  (如果不是导出整个库,那就一个库一个库导出。多个库导出可能会有问题)
[root@web01 ~]# mysqldump -uroot -padmin123 -B wordpress > /tmp/wordpress.sql
[root@web01 ~]# mysqldump -uroot -padmin123 -B zh > /tmp/zh.sql
[root@web01 ~]# mysqldump -uroot -padmin123 -B edusoho > /tmp/edu.sql
# 注意:
1.导出的文件名字与数据库名无关
2.导出的文件后缀无所谓 (推荐sql,vim的时候会有颜色)

9.将导出的数据传到新数据库机器(把东西运到新房子门口)

# web01导入db01
[root@web01 tmp]# scp /tmp/wordpress.sql 172.16.1.51:/tmp/
[root@web01 tmp]# scp /tmp/*.sql 172.16.1.51:/tmp/

10.把数据导入新的数据库(把家具搬进新房子)

# 方式一:在房子外面
[root@db01 tmp]# mysql -uroot -padmin123 < /tmp/wordpress.sql
[root@db01 ~]# mysql -uroot -padmin123 < /tmp/zh.sql 
[root@db01 ~]# mysql -uroot -padmin123 < /tmp/edu.sql 

# 方式二:在房子里面往里搬
MariaDB [(none)]> source /tmp/wordpress.sql;

# 方式三:传送门方式
# 在web01远端导入
[root@web01 tmp]# mysql -uroot -padmin123 -h172.16.1.51 < /tmp/wordpress.sql

# 或者远程登录在导入
[root@db01 tmp]# mysql -uroot -padmin123 < /tmp/wordpress.sql
MariaDB [(none)]> source /tmp/wordpress.sql;

11.查看数据库(查看摆放)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| edusoho            |
| mysql              |
| performance_schema |
| test               |
| wordpress          |
| zh                 |
+--------------------+

12. 修改wordpress连接新的数据库(告诉亲戚新的住址)

[root@web01 wordpress]# vim /code/wordpress/wp-config.php
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');

/** MySQL数据库用户名 */
define('DB_USER', 'root');

/** MySQL数据库密码 */
define('DB_PASSWORD', 'admin123');

/** MySQL主机 */
define('DB_HOST', '172.16.1.51');

13.修改zh连接数据库配置

[root@web01 ~]# vim /code/wecenter/system/config/database.php
$config['master'] = array (
  'charset' => 'utf8',
  'host' => '172.16.1.51',
  'username' => 'root',
  'password' => 'admin123',
  'dbname' => 'zh',
);

14.修改edusoho连接数据库配置

[root@web01 ~]# vim /code/edusoho/app/config/parameters.yml
    database_host: 172.16.1.51
    database_port: 3306
    database_name: edusoho
    database_user: root
    database_password: 'admin123'
    
# 如果白屏,就删下下面的缓存(edusoho自带的缓存,不删下次还会走原来的数据库)
[root@web01 ~]# rm -rf  /code/edusoho/app/cache/*

15.访问页面测试

16.停掉旧的数据库(旧房子拆迁,卖掉)

[root@web01 ~]# systemctl stop mariadb

 

扩展web服务器

1. 安装nginx

2.安装PHP

3. 安装mariadb

4.同步web01所有内容

1)同步站点目录

# 在web01上把服务打包到web02上
[root@web01 code]# tar zcf code.tar.gz /code/wordpress
[root@web01 code]# scp code.tar.gz 172.16.1.8:/code/

2)同步nginx配置文件

[root@web01 code]# scp /etc/nginx/con.d/* 172.16.1.8:/etc/nginx/con.d/

3) 重启nginx

[root@web02 conf.d]# systemctl restart nginx

4) 授权站点目录

[root@web02 conf.d]# tar xf code.tar.gz
[root@web02 conf.d]# chown -R www.www /code/

 

文件共享

因为wordpress的图片是存在本地的,并不是存在服务器,需要共享,保证web01和web02都能看到上传的图片

1.搭建NFS服务端

1) 安装NFS、rpcbind

[root@nfs ~]# yum install -y nfs-utils rpcbind

2) 创建用户和用户组

[root@nfs ~]# groupadd www -g 666
[root@nfs ~]# useradd www -u 666 -g 666

3) 创建目录

[root@nfs ~]# mkdir /data/wordpress -p
[root@nfs data]# chown -R www.www /data/

4) 配置nfs

[root@nfs data]# vim /etc/exports
/data/wordpress 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

5)启动服务

[root@nfs data]# systemctl start rpcbind nfs
[root@nfs data]# systemctl enable rpcbind nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

6) 查看配置是否正确

[root@nfs data]# cat /var/lib/nfs/etab
/data/wordpress    172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)

 

2. 搭建客户端(web01/web02)

1)安装nfs

[root@web01 ~]# yum install -y nfs-utils rpcbind
[root@web02 ~]# yum install -y nfs-utils rpcbind

2) 启动rpcbind(centos7自启动,centos6需要手动启动)

3) 查看挂载点

[root@web02 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data/wordpress 172.16.1.0/24

4) 找到文件目录,先推送

[root@web01 uploads]# scp -r /code/wordpress/wp-content/uploads/* 172.16.1.31:/data/wordpress
[root@web02 uploads]# scp -r /code/wordpress/wp-content/uploads/* 172.16.1.31:/data/wordpress

5) 挂载

[root@web01 ~]# mount -t nfs 172.16.1.31:/data/wordpress /code/wordpress/wp-content/uploads/
[root@web02 ~]# mount -t nfs 172.16.1.31:/data/wordpress /code/wordpress/wp-content/uploads/

 

注:php服务一般和nginx放在同一个服务器,不推荐拆分在两个服务器。如果拆分,站点目录也要放到php服务器上,且要修改php服务的配置 /etc/php-fpm.d/www.conf中 listen = ...  监听端口ip  和 listen.allowed_clients = ... (可以用逗号分隔写多个) 允许访问的client用户ip。

如果java, 用的tomcat服务,一般和nginx拆分在两个服务器上。

posted @ 2023-08-18 20:24  战斗小人  阅读(165)  评论(0编辑  收藏  举报