服务器已经搭建好,网站也开始运行了。那么如何方便地部署代码呢?

最基本的方式,就是使用 SFTP 向网站目录直接部署。这种方法的缺点是版本控制不便,在上传时也无法方便的比较代码变化。

用SVN来部署是一个很好的选择。
SVN 本身是一个服务,我的选择是使用 Apache 的 SVN 模块来访问,不必单独启用SVN服务。

第一步:确保 Apache 正确安装和配置

详情参见前文,这里假定 Apache 服务已正确安装,运行无误

第二步:安装 subversion

// 安装 subversion
yum install subversion
// 安装 apache subversion 模块
yum install mod_dav_svn
// 检查 svn 安装
svn --version

第三步: 配置 apache 上的 subversion

Apache 中 subversion 配置文件: /etc/httpd/conf.d/subversion.conf
用 vi 打开该文件,找到如下被注释掉的部分,打开

<Location /repos>
DAV svn
SVNParentPath /var/www/svn/repos
AuthType Basic
AuthName "Authorizion realm"
AuthUserFile /etc/svn-auth-conf
Require valid-user
</Location>

这一行:
SVNParentPath /var/www/svn
改成:
SVNPath /var/www/svn/repos
“/var/www/svn/repos”是你SVN库的存放位置,可根据情况修改。

<Location /repos>表示在url地址是 http://<hostname>/repos 时访问的就是库 /var/www/svn/repos 。
AuthUserFile /etc/svn-auth-conf指明了svn帐户文件是/etc/svn-auth-conf 。

注意:在默认的 subversion.conf 文件中,以上代码段是包含在如下标签中的。这个标签表示,仅对“写”操作进行权限控制。这里的SVN服务是用于内部部署代码而不是用于开源项目,显然,应该对“读”操作做同样的限制。因此,这个标签行的注释开关应保持关闭。

<LimitExcept GET PROPFIND OPTIONS REPORT>
</LimitExcept>

第四步:建立subversion帐户

subversion自己对帐户进行管理,所以要客户端要访问它必须使用subversion帐户进行登录。

// 创建第一个帐户
htpasswd -cm /etc/svn-auth-conf <username1>
// 创建更多其它帐户(注意参数)
htpasswd -m /etc/svn-auth-conf <username2>

第五步:建立subversion仓库

cd /var/www/svn
svnadmin create repos
chown -R apache.apache repos

第六步:测试Subversion工作

// 重启 apache:
service httpd restart

任何时候,改动过配置文件,均需重启服务使改变生效。
在浏览器中输入 http://<hostname>/repos 应该可以看到(会提示身份验证):

repos - Revision 0: /
--------------------------------------------------------------
Powered by Apache Subversion version 1.7.10 (r1485443).

打开本地SVN客户端(我这里用的是tortoiseSVN),输入地址,提示用户名密码时按之前的设定输入,一切无误的话应该可以列出代码库。至此Subversion服务配置完毕

第七步:配置SVN自动部署最新代码至网站目录

Subversion 的钩子脚本是一种事件触发机制,当SVN系统执行到某些预定义事件时,触发一些预定义动作。其中,post-commit 事件就可用于自动部署。简单来说,在 Web 目录 checkout 特定代码库,然后设定当 svn 提交完成时,自动更新 web 目录。我们可以这样来设置 svn 库:首先建立工作分支和发布分支,工作分支稳定后,合并最新代码至发布分支(提交前核对更改),代码提交完成后,server端的post-commit脚本从发布分支自动更新web目录。

具体来说,比如我们的网站目录在 /var/www/html/MyWeb, 首先,用如下命令 checkout 代码库:

svn checkout <repos url> /var/www/html/MyWeb --username <username> --password <password>

然后,创建脚本

cd /var/www/svn/repos/hooks
cp post-commit.tmpl post-commit
vi post-commit

将 post-commit 的内容改为:

export LANG=en_US.UTF-8
SVN=/usr/bin/svn
WEB=/var/www/html/MyWeb
${SVN} update ${WEB} --username <username> --password <password>

第一行 export … 是为了避免编码错误,可根据服务器设置调整,保持和服务器编码一致即可。
第二行是svn命令行位置
第三行是checkout的代码库位置,需要用chown将该目录权限授予apache用户
第四行是实际执行的命令。
保存post-commit, chmod a+x 使其可执行。然后手工执行进行测试。如果出现保存密码的提示,则需要修改设置避免该提示出现,否则客户端提交代码会失败(因为客户端没有当提示出现选择yes/no的机会)。首先将配置文件拷贝至apache的home目录,然后修改:

cp -r /root/.subversion/ /var/www/
vi /var/www/.subversion/servers

修改如下字段即可:

store-plaintext-passwords = no
store-passwords = no

现在一切就绪,使用客户端工具提交代码测试,检查Web目录是否同步了更改。
至此,配置工作完毕。

参考资料:

1. http://www.worldhello.net/doc/svn_hooks/svn_hooks.mm.htm
2. http://blog.csdn.net/niu_gao/article/details/7502326
3. http://www.ibm.com/developerworks/cn/java/j-lo-apache-subversion/index.html

在 Amazon AWS 搭建及部署网站:(三)开发及部署环境的更多相关文章

  1. Django搭建博客网站(三)

    Django搭建博客网站(三) 第三篇主要记录view层的逻辑和template. Django搭建博客网站(一) Django搭建博客网站(二) 结构 网站结构决定我要实现什么view. 我主要要用 ...

  2. 在 Amazon AWS 搭建及部署网站:序

    最近玩了把 AWS,实现了服务器的创建.PHP+MySql运行环境.代码部署等.一方面,后面的项目会反复重复这个流程,需要一份手册,另一方面,也给自己一个记录.于是把整个过程和要点整理一下,发到自己的 ...

  3. 在 Amazon AWS 搭建及部署网站:(二)安装、配置软件,启动网站

    现在,我们已经有了一台EC2主机,具备了基本的硬件环境.下面,开始软件环境的配置. 第一步:连接服务器 后面所有的一切,都需要在SSH终端窗口操作.首先,我们需要一个SSH客户端.PuTTY是很常用的 ...

  4. 白嫖永久免费云服务器教程,永久免费虚拟主机、永久免费云数据库、搭建FTP服务器、服务器安装Linux / windows操作系统、服务器部署网站、宝塔一键部署多网站、独立ip、永久国内高速云服务器

    一.准备工作 1. 注册账号 声明:切记不可用服务器做违法的事情 申请地址:https://www.sanfengyun.com/ 图文教程地址:https://www.cnblogs.com/zwn ...

  5. Tomcat 环境部署网站. 帆软平台部署.

    主要内容. 需要使用Tomcat 部署 帆软报表平台(以下简称报表平台). 报表平台可以集成到网站, 也可独立部署. 此处是独立部署.即通过 网址:域名 独立访问这个报表平台. -- 技术要点 Tom ...

  6. linux服务器环境部署(三、docker部署nginx)

    一.下载nginx镜像 官网地址:https://hub.docker.com/_/nginx #下载镜像 默认为最新版本 docker pull nginx#下载指定版本 docker pull n ...

  7. 在 Amazon AWS 搭建及部署网站:(一)申请、设置 AWS 服务

    亚马逊 AWS 介绍 简单来说,AWS (Amazon Web Service) 提供了一整套基础设施和服务,使"建站"这件事变得轻松愉快. 你可以利用AWS构建博客主机,云存储( ...

  8. openstack(Pike 版)集群部署(三)--- Glance 部署

    一.介绍 参照官网部署:https://docs.openstack.org/glance/queens/install/ 继续上一博客进行部署:http://www.cnblogs.com/weij ...

  9. openKM部署二次开发,eclipse环境

    1.下载openKM_install_forwin安装包,配置jdk环境,start openKM,访问localhost\OpenKM,用户:okmAdmin 密码:admin.查看是否启动成功.安 ...

随机推荐

  1. Bootstrap插件-carousel(轮播图)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. nmon 工具的使用

    原文链接:https://www.ibm.com/developerworks/cn/aix/library/analyze_aix/ 引言 nmon 工具可以为 AIX 和 Linux 性能专家提供 ...

  3. 入口类和@SpringBootApplication

    SpringBoot通常有一个名为*Application的入口类,入口类里有一个标准的Java应用的入口方法,main方法,在该方法中使用SpringApplication.run(xxxxxApp ...

  4. 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:11.定制化Log输出

    欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 前言 在<迷你微信>服务器中,我们用了Log4J来进行输出,这可以在我们程序出现异常的时候找到错误发生时 ...

  5. pta数据结构编程题

    编程题6 树的同构 编程题7 List Leaves 编程题8 Tree Traversals Again 编程题10 Root of AVL Tree 编程题12 堆中的路径 编程题13 File ...

  6. 一个SAP顾问在美国的这些年

    今天的文章来自我的老乡宋浩,之前作为SAP顾问在美国工作多年.如今即将加入SAP成都研究院S4CRM开发团队.我们都是大邑人. 大邑县隶属于四川省成都市,位于成都平原西部,与邛崃山脉接壤.东与崇州市交 ...

  7. linux网卡的配置(解决刚刚安装linux,Xshell连接不上问题)

    1.输入用户名和密码 2.cd到网卡文件夹 3.对网卡文件进行编辑 vi ifcfg-eth0 然后 a 进行编辑 然后esc退出,shift+zz保存 4.重启网卡 /etc/init.d/netw ...

  8. Codeforces Round #327 590B Chip 'n Dale Rescue Rangers(等效转换,二分)

    t和可到达具有单调性,二分就不多说了.下面说下O(1)的做法,实际上是等效转换,因为答案一定存在,如果在t0之前,那么分解一下 直接按照只有v计算就可以了.反过来如果计算的结果大于t0,那么表示答案在 ...

  9. CSS3 - - Media(css3媒介查询) 属性

    语法结构及用法: @media 设备名 only (选取条件) not (选取条件) and(设备选取条件),设备二{sRules}  实际应用一 判断设备横竖屏: /* 这是匹配横屏的状态,横屏时的 ...

  10. 转:Python集合(set)类型的操作

    转自:http://blog.csdn.net/business122/article/details/7541486 python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系 ...