首页 > 默认 > Gforge 迁移日志

Gforge 迁移日志

2014年11月14日

背景: 原网站放在公司服务器上,由于备案过期被电信给封IP了; 后找上海电信重新备案,上海电信说域名是个人注册的,但公司的公网IP属于公司,两者不一致无法在上海电信备案,因此只能转到阿里云,阿里云是可以给个人网站备案的;

需求: 把Gforge平台 从公司服务器迁移到阿里云服务器

执行过程:

1、打包原系统上的数据文件

tar -zcvf gforge_var_lib.tar.gz  /var/lib/gforge

压缩后有1.9G;  压缩前2.3G

2、打包原系统上的数据库

命令操作:
数据的导出:pg_dump -U postgres(用户名)  (-t 表名)  数据库名(缺省时同用户名)  > c:\fulldb.sql

pg_dump -U gforgece gforge5** >/d01/gforge5ce_bak_20141105.sql

tar -czvf gforge5ce_bak_20141105.sql.tar.gz gforge5ce_bak_20141105.sql

压缩前144M,压缩后12M

数据的导入:psql -U postgres(用户名)  gforge5**数据库名(缺省时同用户名) < >/d01/gforge5ce_bak_20141105.sql C:\fulldb.sql

3、打包原系统上的程序文件

tar -zcvf gforge_opt.tar.gz /opt/gforge5

有12M

4、目标机上安装Gforge

上传  install-gforge-ce-561-src.zip 解压缩

1) 执行第一步   install-gforge-1-deps.php CENTOS5  会自动下载安装依赖包;

但 wv-1.0.3-1.fc4.x86_64.rpm 会自动下载却未自动安装,提示缺少wvText, 只要手动安装一下即可:

rpm -ivh wv-1.0.3-1.fc4.x86_64.rpm

执行第二步之前,先初始化  postgresql 数据库

service postgresql initdb

然后启动服务

# service postgresql start

把PostgreSQL 服务加入到启动列表

# chkconfig postgresql-9.2 on

# chkconfig –list|grep postgres

修改PostgreSQL 数据库用户postgres的密码(注意不是linux系统帐号)

PostgreSQL 数据库默认会创建一个postgres的数据库用户作为数据库的管理员,默认密码为空,我们需要修改为指定的密码,这里设定为’postgr**’。

# su – postgres

$ psql

# ALTER USER postgres WITH PASSWORD ‘postgres’;
# select * from pg_shadow ;

2) 安装Gforge DB

php  install-gforge-2-db.php

正常完成

3) 安装第3步

这步安装其实有点搞,因为选择阿里云服务器的时候选择的是带AMP的镜像,但这个镜像的默认应用都是安装到\alidata目录下的,包括httpd.conf的配置文件等都在这个目录下,而不是标准安装包的目标目录,但Gforge 安装的时候都是去修改默认安装配置的,这样就没法装了,方法是把\alidata下的APM安装全部卸载掉(有默认的readme.doc文件可参考),然后自己手动使用yum 来安装AMP;

安装完后在执行第三步;

php  install-gforge-3.php  CENTOS5

最后重启http服务时出错,把Gforge 虚拟主机apache配置中的php_value  # 注释掉可重启。

php_value  include_path  “.:/opt/gforge5:/opt/gforge5/lib:/opt/gforge5/lib/external” 在php.ini中已经配置了,这里可以去掉。

另外报缺少 ioncube 文件   ,参考 http://zpz.name/1927/解决

备注:apache 如果使用yum remove  httpd 卸掉,然后用 yum –y install httpd 重装后,其httpd.conf中的配置便复原了,使用yum install php 后,要配置Apache 加载php  ,否则访问.php就不执行出现源码了,可参考:http://blog.sina.com.cn/s/blog_70121e200100lq0h.html

第三步成功后,应该可以正常访问Gforge了。说明相同版本的环境已经Ok了,  然后我们在进行移植;

5、  还原

改名 /var/lib/gforge  -> /var/lib/gforge_bak20141113

改名 /opt/gforge5 –>  /opt/gforge5_bak20141113

然后把原系统上打包的文件上传,然后还原;

tar -xvf gforge_var_lib.tar.gz

tar –xvf gforge_opt.tar.gz

然后倒入数据库

先创建用户和数据库:

psql -U password
postgres=# create user “gforgec*” with password ‘gforges*f’ login in role “gforge”;

create database “gfoXXXXX”
with owner = gfoXXX
encoding =’UTF8′
tablespace = pg_default
connection limit = -1;

然后 上传 gforge5ce_bak_20141105.sql

导入:

psql -U gfoXXX  gfoXXX<  /gforge5ce_bak_20141105.sql

倒入完成后更新数据库连接配置:

/etc/gforge5-db-conf.php

使用新创建的用户名和倒入的数据库名。

6、测试

发现问题

问题1、用户登录时报错: ERROR: text search configuration “default” does not exist

解决方法:

切换到Gforge所用数据库:

psql -U gfoXXX -d gfoXXX

CREATE TEXT SEARCH CONFIGURATION public.default ( COPY = english)

测试全文检索配置default 可用

gforXXXX=> select to_tsvector(‘default’,’hellobaby’);
to_tsvector
—————
‘hellobabi’:1
(1 row)

再次登录正常了;

参考: http://www.postgresql.org/docs/devel/static/sql-createtsconfig.html

问题2:站长管理,搜寻用户时报错:

Could not execute query [Native Error: ERROR: operator does not exist: integer ~~* integer LINE 5: AND (user_id ILIKE 0 ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.] [User Info: SELECT DISTINCT COUNT(*) FROM “user” WHERE is_group=false AND (user_id ILIKE 0 OR unix_name ILIKE ‘%%’ OR email ILIKE ‘%%’ OR firstname ILIKE ‘%%’)]

原因:8.4版本不支持整数到字符串的隐式转换,详情参见:

http://www.postgresql.org/docs/8.3/static/release-8-3.html#AEN85667

解决方案1:

更改SQL:SELECT DISTINCT COUNT(*) FROM “user” WHERE is_group=false AND (user_id::text ILIKE ‘0’ OR unix_name ILIKE ‘%%’ OR email ILIKE ‘%%’ OR firstname ILIKE ‘%%’)

但每次碰到这样的老SQL 都要改,比较麻烦;

解决方案2:

创建一个函数,再添加整数 ilike 整数的操作符,一次性解决所有类似问题。

CREATE OR REPLACE FUNCTION of_integer_ilike_text(prm_integer integer,
prm_intege2 integer)   RETURNS boolean AS

declare
BEGIN
RETURN prm_integer::text ~~* prm_integer2::text;
END;

image

CREATE OPERATOR ~~*(
PROCEDURE = of_integer_ilike_integer,
LEFTARG = integer,
RIGHTARG = integer);

image

问题3:

发现TO-Do任务,在没有关闭的情况下不发提醒邮件:

原因:Cron 脚本未加到crontab中去。

解决方案:把需要cron运行的php脚本加到crontab中去:

>crontab -e

#########################
# GFORGE CRONJOBS
#########################
*/10 * * * *    cd /opt/gforge5 && /usr/bin/php -d include_path=”.:/opt/gforge5:/opt/gforge5/lib:/opt/gforge5/plugins:/opt/gforge5/lib/external” /opt/gforge5/bin/gforge cronjob  /opt/gforge5/cronjobs/send_notification_queue.php
*/15 * * * *    cd /opt/gforge5 && /usr/bin/php -d include_path=”.:/opt/gforge5:/opt/gforge5/lib:/opt/gforge5/plugins:/opt/gforge5/lib/external” /opt/gforge5/cron15.php
15 3 * * *      cd /opt/gforge5 && /usr/bin/php -d include_path=”.:/opt/gforge5:/opt/gforge5/lib:/opt/gforge5/plugins:/opt/gforge5/lib/external” /opt/gforge5/crondaily.php
#########################
# GFORGE SPHINX Job Index
#########################
15 1 * * *      . /usr/local/sphinx/index_gf_main_rotate.sh
*/15 * * * *    . /usr/local/sphinx/index_gf_delta_rotate.sh

后记:

这个迁移完成后 把 mysql 安装一下,然后把Blog迁移过来

安装mysql可以参考: http://www.2cto.com/database/201207/141878.html

 

 

关于作者:

昵称:Jack.shang
档案信息:jack.shang 一位从技术走向管理,再从管理走向市场的普通行者
联系方式:你可以通过syfvb@hotmail.com联系作者
点击查看发表过的所有文章...
本文永久链接: http://blog.retailsolution.cn/archives/3499

 

 

对本文的评价:

 

 

分类: 默认 标签:
本文的评论功能被关闭了.