自己搭建的博客系统和公司的区别:
web界面安装的本质:创建一个文件,这个文件会生成一些数据库的
连接信息,真正公司的代码,这些数据库的信息是在独立的一个机子
上不动,只需要替换新的代码就行了
这个不是真正的代码,是一个开源的项目,为了便于新手部署,
做了一个向导页面,下一步下一步,会把向导页面生成一个配置文件,
数据库的就生成数据库的文件,什么密码用户名自动帮你写到数据库里。
lnmp架构实现原理:
nginx --> fastcgi --> php-fpm
fastcgi_pass address:port;
10.0.0.8:9000; # 适合松耦合架构
unix:/tmp/php.socket # 适合nginx和php在一台机器上
关闭后端的php则会出现502错误:
如果在php程序独立的跑在一台机器上(在一个机器上一样,不能通过9000端口发送请求),那么nginx如果连接不上后台的主机,则会报502的错误
nginx+php与apache+php的区别:
nginx 是以fastcgi协议调用的php
apache是以模块的方式加载的php
用yum装完php后,会自动成为apache的一个模块,只要一重启apache,相当于把php也起动了
拆分数据库提高网站的响应(需要扩张web集群),cookie和session也需要知道
(1)备份172.16.1.7服务器上mysql的数据
mysqldump -uroot -p'Bgx123.com' --all-databases --single-transaction > mysql-all.sql
mysqldump -uroot -p'Bgx123.com' -A > mysql-all.sql
(2)传输172.16.1.7的备份数据至172.16.1.51的服务器上
[root@web01 ~]# scp mysql-all.sql [email protected]:/tmp
(3)需要先在172.16.1.51服务器上安装mysql服务,然后使用mysql命令进行还原
[root@db01 ~]# yum install mariadb-server mariadb -y
[root@db01 ~]# systemctl enable mariadb
[root@db01 ~]# systemctl start mariadb
[root@db01 ~]# mysql show databases;
(4)将web程序连接的本地数据库修改到远程数据库上
1)先在本地172.16.1.7服务器上停止本地的数据库
[root@web01 ~]# systemctl disable mariadb
[root@web01 ~]# systemctl stop mariadb
2)在172.16.1.51的服务器上授权远程主机能够能连接mysql数据库(默认是拒绝对外连接的,所以web07主机连不上远端数据库服务器,所以必须授权)
[root@db01 ~]# mysql -uroot -pBgx123.com
MariaDB [(none)]> grant all privileges on *.* to oldboy@'%' identified by 'Bgx123.com'; # *.* 授权所有库所有表 % 通过任意网段过来(取决于跟这网段通)一般授权不会这么大
3)在172.16.1.7服务器上测试远程账户能否连接172.16.1.51的数据库
[root@web01 wordpress]# yum install mariadb -y
[root@web01 wordpress]# mysql -h 172.16.1.51 -uoldboy -pBgx123.com
MariaDB [(none)]>
4)在172.16.1.7服务器上修改web程序连接数据库的配置文件
[root@web01 wordpress]# vim /code/wordpress/wp-config.php
// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');
/** MySQL数据库用户名 */
define('DB_USER', 'oldboy');
/** MySQL数据库密码 */
define('DB_PASSWORD', 'Bgx123.com');
/** MySQL主机 */
define('DB_HOST', '172.16.1.51');
(5)可以用navicat来测试是否成功拆分数据库到单独的db01数据库(可以在浏览器中输入blog.oldboy.com/wp-admin访问后台)
因为在做查分wordpress的时候,已经把数据可全部迁移过去了,所以只需要把zh和edu的远程数据库连接上就可以了。
(1)拆分172.16.1.7wecenter连接远程172.16.1.51数据库信息
[root@web01 zh]# grep -R "Bgx123.com" *
system/config/database.php: 'password' => 'Bgx123.com',
[root@web01 zh]# vim /code/zh/system/config/database.php
$config['driver'] = 'MySQLi';^M
$config['master'] = array (
'charset' => 'utf8',
'host' => '172.16.1.51',
'username' => 'oldboy',
'password' => 'Bgx123.com',
'dbname' => 'zh',
);^M
(2)拆分172.16.1.7 edusoho连接远程172.16.1.51数据库信息
[root@web01 edusoho]# vim /code/edusoho/app/config/parameters.yml
database_driver: pdo_mysql
database_host: 172.16.1.51
database_port: 3306
database_name: edusoho
database_user: oldboy
database_password: 'Bgx123.com'
必须清理缓存
[root@web01 edusoho]# rm -rf /code/edusoho/app/cache/*
(1)统一环境
0)准备对应的www用户
[root@web02 ~]# groupadd -g666 www
[root@web02 ~]# useradd -u666 -g666 www
1)拷贝web01上面的yum仓库
[root@web02 ~]# scp [email protected]:/etc/yum.repos.d/*.repo /etc/yum.repos.d/
2)安装nginx和php
[root@web02 ~]# yum -y install nginx php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
(2)统一配置(同步web01上面的配置到web02)
1)同步nginx
[root@web02 ~]# rsync -avz --delete [email protected]:/etc/nginx/ /etc/nginx/
[root@web02 ~]# nginx -t
[root@web02 ~]# systemctl enable nginx
[root@web02 ~]# systemctl start nginx
2)同步php(/etc/php-fpm.conf /etc/php-fpm.d /etc/php.ini)
[root@web02 ~]# rsync -avz --delete [email protected]:/etc/php* /etc/
[root@web02 ~]# systemctl enable php-fpm
[root@web02 ~]# systemctl start php-fpm
(3)统一代码
[root@web01 ~]# tar czf code.tar.gz /code #在web01上打包站点
[root@web01 ~]# scp code.tar.gz [email protected]:/tmp #在web01上将打包好的代码发送给web02
[root@web02 ~]# tar xf /tmp/code.tar.gz -C / #在web02上进行解压,并解压到/目录下
(4)配置解析,进行访问,测试
# 10.0.0.7 blog.oldboy.com
10.0.0.8 blog.oldboy.com
(1)准备172.16.1.31共享存储服务器,规划目录,配置好权限
0)创建用户
[root@nfs ~]# groupadd -g666 www
[root@nfs ~]# useradd -u666 -g666 www
1)安装
[root@nfs ~]# yum install nfs-utils -y
2)配置
[root@nfs ~]# cat /etc/exports
/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zh 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/edu 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
3)根据配置,创建目录,准备用户,授权等等
[root@nfs ~]# rm -rf /data/
[root@nfs ~]# mkdir /data/{blog,zh,edu} -p
[root@nfs ~]# chown -R www.www /data/
4)启动
[root@nfs ~]# systemctl enable nfs-utils
[root@nfs ~]# systemctl restart nfs-utils
(2)将图片较多的web02服务器,推送到nfs共享存储上
http://blog.oldboy.com/wp-content/uploads/2019/01/timg.jpg
[root@web02 ~]# cd /code/wordpress/wp-content
[root@web02 wp-content]# scp -r uploads/* [email protected]:/data/blog/
注意:需要上nfs服务器上进行重新的递归授权,否则会出现无法上传文件的错误
[root@nfs ~]# chown -R www.www /data/
(3)web01和web02分别都进行挂载,此时图片进行实现了共享
mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads/
内容小结:
虚拟机还原,web上,安装nginx与php,记得做快照
1.lnmp
2.拆分数据库
3.拆分静态资源
4.扩展多台web
5.研究前端用负载均衡
web01 web02 安装nginx +php
mysql 安装mariadb-server
nfs-utils 安装nfs
为什么我们再次打开页面直接就是登陆状态???
一会登录web1,一会登录web2,一直在登录的状态
第一次的时候客户端cookie给服务端,服务端会生成一个所谓的session,session会存到数据库中去
每次验证是否登录,上数据库查是否有这个id,有的话就不会退出