Linux架构11 搭建博客wordpress, 知乎wecenter, edusoho, 扩展web服务器, 数据库拆分到新服务器, NFS共享wordpress图片
[root@web01 ~]# cd /code/ [root@web01 code]# rz wordpress-5.0.3-zh_CN.tar.gz
[root@web01 code]# tar xf wordpress-5.0.3-zh_CN.tar.gz
[root@web01 code]# chown -R www.www /code/
[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
在数据库中添加一个库
[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 主题文件夹
[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 ./*
[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
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)
安装成功
[root@web01 code]# rz edusoho-8.3.36.tar.gz
[root@web01 code]# tar xf edusoho-8.3.36.tar.gz [root@web01 code]# chown -R www.www edusoho
[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
[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、提高用户访问的速度
主机 | 搭建服务 | 外网地址 | 内网地址 |
---|---|---|---|
web01 | nginx+php | 10.0.0.7 | 172.16.1.7 |
db01 | 10.0.0.51 | 172.16.1.51 |
[root@db01 ~]# yum install -y mariadb-server
[root@db01 ~]# systemctl start mariadb [root@db01 ~]# systemctl enable mariadb
[root@db01 ~]# mysqladmin -uroot password 'admin123'
# 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
# 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)
# web01进行远程连接db01的库 [root@web01 ~]# mysql -uroot -padmin123 -h172.16.1.51
# -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的时候会有颜色)
# 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/
# 方式一:在房子外面 [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;
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| edusoho |
| mysql |
| performance_schema |
| test |
| wordpress |
| zh |
+--------------------+
[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');
[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', );
[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/*
[root@web01 ~]# systemctl stop mariadb
1. 安装nginx
2.安装PHP
3. 安装mariadb
# 在web01上把服务打包到web02上 [root@web01 code]# tar zcf code.tar.gz /code/wordpress [root@web01 code]# scp code.tar.gz 172.16.1.8:/code/
[root@web01 code]# scp /etc/nginx/con.d/* 172.16.1.8:/etc/nginx/con.d/
[root@web02 conf.d]# systemctl restart nginx
[root@web02 conf.d]# tar xf code.tar.gz [root@web02 conf.d]# chown -R www.www /code/
[root@nfs ~]# yum install -y nfs-utils rpcbind
[root@nfs ~]# groupadd www -g 666 [root@nfs ~]# useradd www -u 666 -g 666
[root@nfs ~]# mkdir /data/wordpress -p [root@nfs data]# chown -R www.www /data/
[root@nfs data]# vim /etc/exports /data/wordpress 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[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.
[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)
[root@web01 ~]# yum install -y nfs-utils rpcbind [root@web02 ~]# yum install -y nfs-utils rpcbind
3) 查看挂载点
[root@web02 ~]# showmount -e 172.16.1.31 Export list for 172.16.1.31: /data/wordpress 172.16.1.0/24
[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
[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拆分在两个服务器上。