Gforge 迁移日志
背景: 原网站放在公司服务器上,由于备案过期被电信给封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;
CREATE OPERATOR ~~*(
PROCEDURE = of_integer_ilike_integer,
LEFTARG = integer,
RIGHTARG = integer);
问题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联系作者 点击查看Jack.shang发表过的所有文章... 本文永久链接: http://blog.retailsolution.cn/archives/3499 |
对本文的评价: