尝试用fabric部署应用

说来惭愧,个人是最近才知道fabric的。但是一上手就觉得fabric非常不错,解决了我长久以来的部署问题。

原因我的部署方式是:

  1. 登录远程服务器
  2. svn update/git pull
  3. deploy.sh

后来觉得把未测试的代码签入代码库不是很好,想直接复制本地代码到远程服务器上再部署,于是第一步变成了:

  1. 打包本地代码文件
  2. scp到远程服务器上
  3. 在远程服务器上解压缩

Read More

linux命令使用小记5

多目录之间跳转

使用dirs, pushd, popd就可以做到。但是命令多了容易混淆,我其实只记得两个目录快速跳转方法:

使用alias快速登录服务器

把alias设置在.bashrc中,接下来就能输入serverA快速登录服务器了。
解释下命令:luit用来解决GBK服务器编码问题;sshpass用于输入密码;ssh的-t参数表示强制伪终端,screen需要;screen -RR表示有screen session就使用,否则就新建。

wordpress的webserver从apache切换到nginx

就个人经验来说,从apache切换到nginx上不是很难,关键是你需要分析好现有apache配置的内容,剩下的就是在nginx中对应配置就行。以本人的apache配置为例:

  1. 关闭服务器版本显示
  2. 单独的用户
  3. worker&event
  4. 与PHP的整合
  5. init.d脚本(个人是编译安装的)
  6. gzip
  7. expires(图片等过期时间设置)
  8. 虚拟主机
  9. wordpress的permlink
  10. 二级域名的重定向(错误的配置)

最后一个是我对apache虚拟主机配置不完全理解导致的一个失误,nginx上当然不会把错误照搬过来,但是nginx上需要做以前的链接兼容(这么快就有历史包袱了……)。

Read More

nginx和php-fpm简单优化

nginx和php-fpm安装好之后,默认配置运行是OK的,不过从长期运行考虑,必要的优化还是需要的。

gzip

gzip是一种通过压缩服务器传输内容,提高客户端响应体验的常见优化方式。gzip在nginx上默认是开启的,不过只针对html,需要我们对配置做一些调整才能对js/css等做压缩。以下是修改后的配置段:

Read More

编译安装php和nginx

最近由于某些原因把网站服务器从apache切换到nginx,也就是从LAMP到了LEMP(LNMP)。apache和php连接方式是通过模块,nginx和php的连接方式个人选择的是php-fpm(考虑到有些人可能不清楚php-fpm和php的区别,个人建议把php-fpm当作php的一个模块来看,是实现了cgi的可以与其他程序交互的模块。php-fpm更详细的资料可以查询php官网。),以下就是个人编译安装nginx和php-fpm的记录。

安装顺序如下:

  1. 编译安装nginx
  2. 确认可以显示HTML页面
  3. 在mysql已经安装的情况下,编译安装php
  4. 配置nginx和php-fpm的连接
  5. 确认基本php页面正常显示

Read More

iptables调整以及解决wordpress的dashboard打开异常慢的问题

最近把网站的服务器从apache切换到nginx,切换的一个目的是解决dashboard开启非常慢的问题。但是等我切换完之后点dashboard仍旧很慢,我的第一反应是dashboard打开异常慢的原因并不在应用服务器。联系到我之前在服务器上aptitude install less没成功,我突然明白dashboard打开慢和aptitude install失败的原因有可能是同一个,就是iptables禁止了访问外部的HTTP/HTTPS/DNS请求。

为了验证这个问题,我把iptables中的规则通过iptables -F清理掉并用iptables -L -n -v确认之后再打开dashboard,发现打开比以前快多了。知道问题所在之后,接下来就是修正iptables的规则,因为考虑到安全,服务器还是需要iptables的。

就个人经验,通过ssh修改iptables因为有可能把自己ban掉所以用非ssh比如vnc或者在物理机边上修改更好,如果实在没条件的话,可以考虑《Linux Firewall 3rd》中提到的一种方法:服务器运行定时清除iptables的任务。个人采用的就是定时任务的方法,因为最近VPS的VNC没法用。

Read More

virtualbox的save state和snapshot

在讲述snapshot之前,先说明一个小技巧,可以让客户机快速启动的技巧。一般在使用了客户机之后,你可能需要关闭机器,技巧就在于如何关闭。

virtualbox-xpcn0-close-dialog

上图中选择第一个选项的话,下次启动就很快。大部分情况下没有操作系统的启动过程,除非你在系统启动过程中关闭……

Read More

命令行控制virtualbox的客户机

今天早上突发奇想想在本地建立虚拟机做一些类似浏览器兼容测试等等的方案。

google了下,发现现在有很多种虚拟化的方案,其中适合linux宿主机的又免费的有openvz/kvm/xen/virtualbox等。这四个对我来说都不算陌生。如果你用过VPS的话,肯定比较过前三个方案的区别。openvz的特点是“软限制”,即几个虚拟机可以共享资源,但是kvm/xen不行,所以一般VPS教程都不建议选择openvz。但是openvz的这种特点个人认为对公司内部来说不算缺点,因为在很少有很多开发用机器一起达到阈值的情况下,加上基于cgroup和高性能的优势,所以个人猜测应该有很多公司使用openvz。不过,话说回来,openvz/kvm/xen都适合作为类似VPS的场景,对于我的简单需求,有点重了。所以在比较了之后,个人还是选择了最简单的virtualbox。老实说,个人以前都有virtualbox,这番调查等于是兜了一圈又回来。

个人以前都是在GUI上操作virtualbox的,如果要在开发中使用的话,估计CLI是逃不了的。查阅了一些资料之后,在自己的机器上做了以下的命令尝试:

Read More