您的位置:首页 > 其它

如何连接开发环境和生产环境?

2016-04-21 15:51 246 查看
生产环境:Centos6.5 64bit + PostgreSQL + Liferay V6.2 CE server (Tomcat 7)

开发环境: Windows 7 Professional 64bit + MySQL + Liferay V6.2 CE server (Tomcat 7) + Eclipse Luna (Eclipse Java EE IDE for Web Developers.Version: Luna Release (4.4.0)Build id: 20140612-0600)

操作系统不一样,数据库不一样,直观的感觉有点难度。

根据一些文章,认为SVN + rsync是合适的发布方法。rsync的介绍在这儿

接下来的计划:

(1) 在租用的BCC (Centos6.5 64bit )上安装SVN,用上购买的Cloud Disk (25G)作为数据存储部分因为它的是安全性高的。这个SVN可以同时作为其他项目的库。

(2)在租用的BCC (Centos6.5 64bit )上安装rsync,并配置好。

然后再考虑进一步的行动。

===================================20160422========================================================

(1) 步的记录(缩略)如下:

先挂载Cloud Disk:



svnadmin create /dq/SVN/repos

vi passwd

usename = password (用户名和密码,具体见记录)

Others as:
http://blog.163.com/longsu2010@yeah/blog/static/173612348201202114212933/
但是:地址不能绑定

Can't bind server socket: Address already in use (因为已经用svnserve -d 启动过一次。)

killall svnserve (杀掉进程)

svnserve -d -r /opt/svn/repos (重新启动成功)

以上参考的是:http://www.th7.cn/system/lin/201411/76890.shtml



之后还是连接不上,想到了BCE的安全策略。于是更改了安全策略,增加了Tcp的3690端口,于是可以连接了。

但是又有新的问题出来了:



Turtoise SVN客户端报告说“/dq/SVN/repos/conf/svnserve.conf:12 Option expected”, VI这个文件,发现第12行的最前面多了一个空格,删掉这个空格,和这个文件中类似的其他空格。然后就可以正常运行了。差一个字符都不行啊!!!

但是Log查看时信息不完整,只有版本,没有其他信息。

svn log (no date) 问题解决办法:

svnserve.conf里:

anon-access = none

还有一个问题:服务器重启的时候,需要把SVN的服务自动启动起来。

修改/etc/rc.d/rc.local

在里面增加如下2句话:

killall svnserve

svnserve -d -r /dq/SVN/repos

SVN和rsync都可以用了。当然有许多细节问题待进一步研究。为了验证一下这套思路。先将和数据库无关的一个portlet尝试部署到生产环境:

一个Book Manager Portlet。重新用Ant Build了一下,然后从它的原始位置(C:\LRDEV2\sdk\dist)(utility tunnel 的在C:\LRDEV3\sdk\dist)拷贝到SVN的工作目录(F:\DQ\After20140218\DQW\DQWL_SVN_20151120\_repos\Tech Study\Utility Tunnel Pilot Project\History Record\1. SVN and rsync\testcheckout\trunk\1.
War),并提交到生产环境的SVN库中。

从库中checkout. 然后使用root超级用户直接把war包拷贝到部署目录(/lr62/liferay-portal-6.2-ce-ga4/deploy)中。然后发现war包消失了,说明部署了。然后登录LifeRay Portal进去把这个portlet加入到页面中,运行一下。一切正常,如下图。看来,至少和数据库无关的portlet的部署还是挺容易的。另外,在IDE里面的refactor可能后期会用到。



=================================20160422 end =============================================

=================================20160425 begin =============================================

今天继续研究了一下。其实上次在生产系统部署的Port let就是基于数据库的。看来目标已经实现。具体证据如下:



Table的位置在pgAdmin III中如下:



在这之前,简单地用 yum install pgadmin3 来安装了pgAdmin III,用于数据库的图形化查看:



所以LifeRay的ServiceBuilder可以很好的解决了不同操作系统,不同数据库的兼容问题,因为它使用了Java环境,可以跨操作系统,同时使用了Hibernate,一个通用的操作数据库的中间层。所以可以做到简单方便,赞一个!

=============================20160427===============================================

继续解决Rsync的同步问题。要同步一个目录下的War包,但是不要同步相同目录下的.svn及其下属目录及文件。重点有3个:(1)源和目的目录可以是直接路径,但是排除的目录只能是相对路径(相对源目录),(2)要同步不含目录本身的该目录下的多个文件,到目标目录(已经有的某个目录)下对应多个文件,源目录最后一个字符必须是"/", 目标目录的最后一个字符也需要是"/"。否则会达不到所设想的效果。例子如下:



更新后的portlet如何发布呢?就是把更新后的但是相同文件名的War包拷贝到同一个目录下即可。验证了一下。如下:

更新了这个Book Manager Portlet,使增加图书后点了“保存”按钮后,不必点“返回”按钮,就直接回到列出图书清单的界面。重新用Ant Build了一下,然后从它的原始位置(C:\LRDEV2\sdk\dist)(utility tunnel 的在C:\LRDEV3\sdk\dist)拷贝到SVN的工作目录(F:\DQ\After20140218\DQW\DQWL_SVN_20151120\_repos\Tech Study\Utility Tunnel Pilot Project\History
Record\1. SVN and rsync\testcheckout\trunk\1. War),并提交到生产环境的SVN库中。

从库中checkout到了/mnt/portletsource/trunk/1. War目录下. 然后使用root超级用户直接把war包拷贝到部署目录(/lr62/liferay-portal-6.2-ce-ga4/deploy)中。然后发现war包消失了,说明由成功部署了。然后登录LifeRay Portal,试着操作一下增加图书,一切和开发环境的功能表现一致,如下图。



为了方便,把部署目录(/lr62/liferay-portal-6.2-ce-ga4/deploy)的权限改成了其他用户也可以创建和删除文件。然后就可以在davidqi用户下用命令行操作同步,用Rsync。如下三个截图分别是Rsync前,刚刚Rsync后,和几秒钟portlet被部署后消失了的情形:







接下来要解决的是在Mac上使用自带svn命令行时,不能向远端服务器提交数据的问题。需要加入一个可选项重新编译一下。(这个似乎对水平的要求更高一些)


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: