`
javasee
  • 浏览: 916855 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Discuz x1.5/2.0 迁移到 Godaddy VDS 上, 开启https(ssl), 建立git版本库教程

 
阅读更多

<?php

1 Godaddy VDS设置https (ssl),并设定强制http访问重定向到为https

——你懂的,有效防止某些无法无天人的关键字过滤。

——使用山寨的ssl证书,浏览器会弹出警告说证书错误。如果想解决这个问题,又不想花钱,你可以上SmartSSL来整一个免费的SSL证书。不复杂,如果晚上整,一会就搞定了。(他们需要人工审核)

1.1 先把PHP升级到5.2.*再说:

参考:http://www.search-friendly-web-design.com/blog/update-godaddy-vds-and-ds-to-run-php-52xx

同理,也可以升级Apache/phpMyAdmin什么的。如果你愿意,因为我们的repository已经更改了。

升级完成后,要修改php.ini的内存占用等,推荐:

1.2 VDS默认启用SSL,我们只需要一点设置就行

新建一个配置文件在conf.d下面,假设为:shwforum.conf,输入以下内容:(凡是路径和域名的,自己改啊)

然后重启httpd服务/etc/init.d/httpd restart

1.3 Godaddy VDS 布置 Git服务器及本地建立Git版本库和LAMP测试服务器:

1.3.1 建议:待下面的Discuz全新安装完结束,修改完$_G['siteurl']之后再把整个站点添加到Git版本库中。要不会产生不少临时的不必要的文件影响,增加版块控制负担。

1.3.2 参考:http://ivarptr.blogspot.com/2010/12/centos-55gitgit.html

注意事项:在远程主机git init初始化之后,只有添加了文件并提交之后,本地才能clone,否则你一定会clone失败的(Fetal Error)。这与SVN不一样。

听说这个版本控制不错,比SVN的传输数据量小,我们公司已经考虑要使用了。到Godaddy的SSH服务器速度还是很慢的,最好整一个。

1.3.3 同时在本地Git上搭建LAMP测试环境(RedHat为例,yum安装)

LAMP搭建参考:http://www.sdlunzhong.cn/itres/showitnews.aspx?ID=709

上面的参考中,长长的页面最后有个: rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka 别忘了加哦

你最好在本地完全模拟远程的HTTPS环境,以RedHat为例,如果要搭建HTTPS测试环境(Godaddy的VDS是CentOS,可以理解为RedHat的升级版),参考:http://www.linuxidc.com/Linux/2010-08/27591.htm

搭建好本地Apache上的SSL之后,在conf.d里面加一个shwforum.conf, 按照ssl.conf的一些参数,添加虚拟主机。(除了复制ssl.conf里面的东西外,还需要添加DocumentRoot和Directory还有一些虚拟主机必须添加的东东)

1.3.4 如果你本地的"https:// "仍然无法访问,请尝试关闭iptable (/etc/init.d/iptables stop)或者开通443端口

1.3.5 安装Gitplugin和Trac (以下只是参考,我没试验成功)

1.3.5.0 先yum更新python为2.4并安装相关的工具

yum install python

安装python-setuptools: yum install python-setuptools

安装genshi:

http://packages.sw.be/python-genshi/

e.g:

wet http://packages.sw.be/python-genshi/python-genshi-0.6-1.el5.rf.noarch.rpm

rpm -ivh python-genshi-0.6-1.el5.rf.noarch.rpm --force --nodeps

1.3.5.1 安装Trac 1.2 (以python运行setup.py方式): http://trac.edgewall.org/

wget http://ftp.edgewall.com/pub/trac/Trac-0.12.2.tar.gz

tar zxf Trac-0.12.2.tar.gz

cd Trac-0.12.2

python setup.py install

1.3.5.2 easy_install http://github.com/hvr/trac-git-plugin/tarball/master

2 Discuz X1.5迁移及转换(域名改变,并有https支持,数据库字符集从gbk转化为utf8)

2.1 全新安装utf8版的Discuz

2.2 初步修改

2.2.1 修改超全局变量:$_G

文件位置./source/class/class_core.php (X1.5和X2.0均是在112行开始)

在$_G声明的下一行添加:

$swHttp = empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off' ? 'http' :'https';

添加和修改键值:

$_G['http'] => $swHttp; //这是添加

$_G['siteurl'] => $swHttp . ''; //这是修改(在165-168行左右, 把 'http: 换成 $swHttp . ':)

2.2.2 解决请求端口自动转成443的Bug:


文件位置:source/function/function_core.php

X1.5 (行1038)

修改为:$port=''

x2.0(行182)

修改为:$_G['siteport'] = '';

2.3 如果你在远程和本地都搭建了Git版本管理,在本地搭建了LAMP测试服务器

2.3.1 远程添加文件,本地Clone文件:参考 上面的 1.3.2。 Clone下来之后,别忘了修改相关的目录为可写——因为只是本地测试,建议全整成777吧,反正不会提交上去。

2.3.2 远程导出数据库:mysqldump -uroot -p dbname > dbname.sql,(dbname是你DZ全新安装所在的数据库)然后用tar压缩一下,再用sftp下载下来

2.3.3 本地导入数据库:解压之后,使用:mysql -uroot -p dbname < dbname.sql (其中dbname你得自己先建了,如何建数据库?用phpMyAdmin或者mysql 命令行,这里不多说了,自己Google去。另外,不要用source命令导入,这个命令太慢了)

2.3.4 然后在本地git项目下面的.git/info/exclude里添加

以排除对他们的版本管理,这个很重要 (路径搞正确了,我的例子是我的服务器的)

2.3.5 别忘了修改本地的DZ下面的

./config/config_global.php

./config/config_ucenter.php

./uc_server/data/config.inc.php

里面的数据库链接字符串及UC_API地址

如果的论坛创始人的ID不为1,请修./config/config_global.php里面修改$_config['admincp']['founder'] = '***';//你的创始人ID

2.4 在模板和PHP文件中改http为https

2.4.1 替换所有的htm模板中的http: https:

(假设当前目录为论坛的根目录,这时使用sed来批量替换,后面的第一个grep是查找文件)

sed -ir "s/http:/https:/g" `grep -rl "http:" ./ | grep \.htm$`

sed -ir "s/http:/https:/g" `grep -rl "http:" ./ | grep \.php$`

sed -ir "s/http:/https:/g" `grep -rl "http:" ./ | grep \.css$`

sed -ir "s/http:/https:/g" `grep -rl "http:" ./ | grep \.xml$`

sed -ir "s/http:/https:/g" `grep -rl "http:" ./ | grep \.js$`

sed -ir "s/http:/https:/g" `grep -rl "http:" ./ | grep \.sql$`

2.4.2 命令运行后,会产生一堆以.*r 结尾的备份文件, 如果有错,还可以修改还原。 如果你觉得烦,要删除备份文件,可以使用:

rm -rf `grep -rl "http:" ./ | grep -i \.htmr`

rm -rf `grep -rl "http:" ./ | grep -i \.phpr`

rm -rf `grep -rl "http:" ./ | grep -i \.jsr`

rm -rf `grep -rl "http:" ./ | grep -i \.cssr`

rm -rf `grep -rl "http:" ./ | grep -i \.xmlr`

rm -rf `grep -rl "http:" ./ | grep -i /.sqlr`

2.4.3 个别Bug修复

* 修改./uc_client/client.php 第479行,将.urlencode(str_replace('https://', '', UC_API)). 修改为:.urlencode(UC_API). // 这是修复上传头像出现“I/O错误”

* 修改:forum/source/language/lang_email.php,解决找回密码的邮箱链接无法点击的Bug,以下是diff结果:

-<a href="{siteurl}member.php?mod=getpasswd&amp;uid={uid}&amp;id={idstring}" target="_blank">{siteurl}member.php?mod=getpasswd&amp;uid

+<a href="member.php?mod=getpasswd&amp;uid={uid}&amp;id={idstring}" target="_blank">{siteurl}member.php?mod=getpasswd&amp;uid={uid}&am


2.5 数据库迁移

2.5.1 用mysql命令行导出旧论坛数据库为.sql文件, 参考 2.3.2

2.5.2 对旧论坛sql文件进行修改,使用VIM,命令:

2.5.2.1 修改域名

(有多少改多少,取决于曾经都为论坛使用过啥域名了。如果是从5d6d搬过来的,当然也要修改5d6d的东东):

%s#www.shwforum.net#www.shwforum.info#g

%s#www.shwforum.com#www.shwforum.info#g

%s#swjh.5d6d.com#www.shwforum.info#g

%s#http://www.shwforum.info#https://www.shwforum.info#g

2.5.2.2 修改Ucenter数据库表名(如果你原来的uc_server是升级过来的话,可以考虑此步骤):

(旧论坛的ucenter的数据表前缀为uc_,现在要改为DZX1.5默认的pre_ucenter_)

%s/`uc_/`pre_ucenter_/g

2.5.2.3 修改数据库字符集为utf8(如果原来不是utf8的话)

%s/DEFAULT CHARSET=gbk/DEFAULT CHARSET=utf8/g

%s/charset=gbk/charset=utf-8/g

%s/gbk/utf8/g

2.5.3 将数据库sql文件导入到新论坛安装的地方。参考 2.3.3

2.6 附件和头像迁移

使用FTP或者sftp命令把原论坛 ./data/attachment, ./data/avatar, ./uc_server/data/avatar/里面的文件复制过来覆盖到新论坛程序中

2.7 表情及表态等图片迁移

如果你安装了自定义表情或者添加了自定义表态,则也要迁移。参考2.6 路径是./static/image/

2.8 清空缓存

2.8.1 访问后台并清空缓存

如果因为文件夹权限而无法访问,请参考:http://www.zzbaike.com/wiki/Discuz%21_X1.5/%E5%AE%89%E8%A3%85%E8%AF%B4%E6%98%8E

如果访问不了,可以上UCenter(用新安装的论坛上的创始人密码登录)重置管理员密码。

然后确保几个config里面的UC_KEY是一致的 然后如果成功登录Discuz后台,别忘了把自动产生的ucenter地址修改一下(系统自己识别成http://hostname:443/uc_server了,无语)

差不多了,今天是耶稣受难日,愿耶稣基督的救恩临到你和你的全家。

需要帮助可以联系:lanshunfang###gmail.com,但不保证有时间回复哦

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics