Skip to content

Latest commit

 

History

History
executable file
·
186 lines (130 loc) · 7.64 KB

ch-3-07.md

File metadata and controls

executable file
·
186 lines (130 loc) · 7.64 KB

部署前的准备

参考网页:

一、引言

本网站依赖于另外一个网站,导致很多地方束手束脚。为尽可能保持独立,采用转换数据库的方式,共享数据,尽可能保持本网站的独立。

另外一个网站,下面称为原网站。原网站是采用 ASP.NET 开发,数据库使用的是 MSSQL,运行在 Windows Server 2008 R2。本网站采用的 PHP 的 Yii2 框架,数据库为 MySQL,运行在 Centos 6.x。而且数据库结构迥异,设计风格也不一致。为了对原网站升级,而不影响已经习惯于原网站的人。决定同时运行两个网站,定时把原网站的数据更新到本网站。

基本思路:

1、没有服务器

这里有网络室,而且都是 XP 电脑,配置内存只有 2G,且无法更改系统。为了模拟这两个网站,决定选择网络室的两台电脑,安装虚拟机,分别安装不同的操作系统 win7 和 centos,通过共享文件夹,实现转换数据库。解决电脑性能不足的问题。

2、为 centos 虚拟机安装插件

centos 操作系统,安装在虚拟机中,是无法直接成功安装 VirtualBox 的插件的。看提示需要联网,安装一些文件。但是网络室不能直接连接互联网。于是配置好 centos 操作系统,然后导出 .ovf 1.0 版本的虚拟机文件,复制到网络室电脑上。

3、转换数据库

考虑到方便阅读和测试,采用 PHP 而非 C# 。采用 PHP 7.0,提高运行效率。决定定时更新的数据直接保存为 数组(array) 序列化文本形式,并设定一些信息协调读和写,而不是直接把 MSSQL 数据转换为 MySQL 数据。中间加入了数据处理部分。

4、本网站处理数据

尽可能的保持原网站不受影响。则本网站做了大量修改。但是测试需要在不联互联网的电脑上进行,中间需要 git 来回记录改动源码。正在努力更新中。

5、实际安装过程

只带有一张光盘,内有:

  • PHP 执行文件夹一个;
  • backup_mssql.php 文件,以及 readme.md 文件,用于执行数据备份功能;
  • run_everyday.bat,用于每天执行的命令;
  • run_everyhour.bat, 用于每小时执行的命令;
  • VirtualBox-5.0.26-108824-Win.exe
  • Oracle_VM_VirtualBox_Extension_Pack-5.0.26-108824.vbox-extpack
  • VBoxGuestAdditions.iso(非必需);
  • centos6.8.ova

其他工作:

  • 在 D 盘新建一个文件夹, phpwebsite
  • 把光盘所有的内容复制到该文件夹;
  • 新建文件夹 backup_data,用于存放定时命令产生的文件;
  • 安装 VirtualBox-5.0.26-108824-Win.exe
  • 安装 Oracle_VM_VirtualBox_Extension_Pack-5.0.26-108824.vbox-extpack
  • 打开 VirtualBox,导入 centos6.8.ova 文件;
  • 查看已有网站的数据库用户密码,修改 backup_mssql.php 中用户密码;
  • 在 cmd 运行 run_everyday.bat 一次,使网站可以运行;
  • 配置 Windows Server 2008 R2 每天在 02:00 执行 run_everyday.bat 命令;
  • 配置 Windows Server 2008 R2 在白天 05:00-23:00 每小时整点执行 run_everyhour.bat 命令;
  • 配置 centos 的 NAT 转发,需要申请 端口号(port) (最好可以申请到 3 个端口,一个用于前台,一个后台,一个 ssh 远程登录);
  • VirtualBox 中,centos6.8 电脑开机;
  • 确保虚拟机操作系统内部记录的 mac 地址跟虚拟机设置的 mac 地址一致,否则容易引起无法打开网络;
  • 执行读取备份数据库的命令 <后续添加>
  • 导入组织用户,其中系统自带了一个超级管理员用户;
  • 为干部科和军务科设定相应权限;
  • 在其他电脑打开本网站后台网页,点击定时命令,确保定时命令执行,能够访问网页;

二、部分代码备份

三、centos6.8.ova 内容说明

由于本人电脑限制,只能制作 32bit 的虚拟机。该文件是整个工作的核心,下面详述制作过程。

1、ssh 远程登录

要求:

  • 需密码登录,特定机器登录,不许 root 登录;
  • pub

结果:

  • 首次可以在任意连接到该计算机的电脑上登录
  • 登录用户名:phpwebsite 密码:(%$#&2016Yii2
  • 登录后立刻修改只可以从特定 IP 的地址登录该计算机

2、定时读取

由于已经设定备份程序的时间,则服务器读取备份文件的时间可以设置如下:

  • 03:00 读取每天备份的文件;
  • 05:05-23:05 的每小时 xx:05 读取每小时备份的文件,考虑到 5 分钟之内,足够备份成功。

3、重新修改 Holliday.php

内有重大错误。对于 dateAfterDateAfterDays 获得日期甲过了乙天后的日期,当乙为负数或者零的时候,会出现死循环,导致系统崩溃。应该加一条判断语句,纠正该错误。

4、个体用户的功能检测

  • 修改人员信息;(完成)
  • 提供提示消息,有多少人要申报晋职晋衔;
  • 其他待测试信息。
  • 人员在位状态信息需要大批量修改,测试难度相当大。

7、后台独立登录实现

在后台新建一个用户,直接复制自 common/models/user.php 接下来则把 backend/所有 common/models/User 修改为 backend/models/User; 这个亟需解决。 参考网页:

You have to set different cookies for frontend and backend in config/main.php file. For Eg.:

In backend:

'components' => [
        'session' => [
            'name' => 'BACKENDID',   //Set name
            'savePath' => __DIR__ . '/../tmp', //create tmp folder and set path
        ],
    ],

In Frontend:

'components' => [
        'session' => [
            'name' => 'FRONTENDID',
            'savePath' => __DIR__ . '/../tmp',
        ],
    ],

That's it.

实际做法如下

分别打开 ./frontend/config/main.php, ./backend/config/main.php

在前端 ./frontend/config/main.php 输入

'components' => [
        'session' => [
            'name' => 'FRONTENDID',
        ],
    ],

在后端 ./backend/config/main.php 输入

'components' => [
        'session' => [
            'name' => 'BACKENDID',   //Set name
        ],
    ],

8、权限设置

9、安装 git

方便测试后,查找工作异常。

10、查看虚拟机内外是否一致

虚拟机内部是指 centos 6.8 操作系统内的网卡物理地址,也即

vim /etc/sysconfig/network-scripts/ifcfg-eth0

弹出类似这样的物理地址:HWADDR=00:11:22:33:44:55

虚拟机外部地址,或者说虚拟机本身地址,通过右击选择 设置 -> 网络 -> 网卡1 -> 高级 -> MAC地址 看到的地址 001122334455

这两者除却 ‘:’ 应当一样。

11、关于定时更新的问题

前期方案,内容很杂,如果非虚拟机安装,会非常痛苦,需要安装各种驱动和软件,还要测试能否运行。不是很好用。现在发现可以直接在 centos 连接 ms sql server。考虑把定时备份代码的内容全部拿到虚拟中来,则可大幅度简化代码。但是由于原始代码已经完成,现在改版,相当于增大了工作量。 还有 32 位系统的各种问题,无法解决。但是电脑只能导出 32 位系统,无法安装64位虚拟机。还无法解决该问题。现在先凑合使用。 已经解决的问题

  • 安装成功 ms sql ODBC
  • 测试 bash 可以链接网站数据库,并输出结果,但编码混乱 未解决问题
  • PHP 链接失败
  • 编码问题没有解决
  • 由原来代码更改而来,工作量很大
  • 各种版本混乱问题,怎么解决?

12、关于代码同步问题

这个貌似只可以手工更新了。