非常惭愧的还没有抽出时间去学一学git,权且先在这里记录一下当下的比较主流的subversion(svn)的架设记录,网上已经有很多了,在这里只是整理记录一下而已。 svn目前作为服务总体上有两种常见形式svn自身协议的方式或者走http协议,svn自身协议自不待言搭建简单方便一条命令搞定: sudo svnserve -d --listen-port 1234 --listen-host scm.myhost.com --pid-file /var/run/svnserved.pid -r /scm/svn/repos/myproject 各参数大致意义: -d 指定后台daemon服务方式运行 listen-port 监听端口 1234 listen-host 监听域名 scm.myhost.com pid-file 指定运行时进程PID号记录文件路径 /var/run/svnserved.pid -r 指定项目svn库所在路径。/scm/svn/repos/myproject 一旦架设完成后面就可以用svn checkout检出源码了: svn co svn://scm.myhost.com:1234/myproject svn库创建命令 svnadmin create /scm/svn/repos/myproject 建立好基本库后一般都需要构建一下基本的源码管理layout布局: mkdir -p /tmp/layout/{trunk,branches,tags} cd /tmp/layout svn import . file:////scm/svn/repos/myproject -m 'init project layout' 然后我们以后checkout主线代码就可以: svn co svn://scm.myhost.com:1234/myproject/trunk svn的http协议方式目前还依赖于apache容器,不过你愿意的话也可以前端用varnish/nginx把请求转发到apache容器上也可以达到对外统一服务的目的。 [...]
关于thrift,可能一般情况下用到的人不多,不过在类似于facebook这样的大型系统中,需要一个统一的数据接口去连接内部的各个子系统,这个时候中间件就必不可少了,thrift主要用于rpc类的中间件,当然自己定义理论上也可以用来做异步消息处理的底层,异步消息这方面成熟的开源产品还是很多的,比如rabbitmq之类的,大公司也大多数有参考或在使用自己开发的对应产品。
网上文章很多wordpress配合nginx的文章,阿熊收集整理了一下,做了一个我的本地配置版本,支持WP Super Cache插件,修正pathinfo在nginx下的问题,当然不用说,也支持nginx下的url做rewrite功能。
关于安全其实能讲的有很多,这里只是简单的记录一下我的iptables设定, 我开有22(ssh)服务,1194(openvpn,tcp)服务,80(http)web服务,443(https)web服务, 我在实体机器上的设定: #!/bin/sh iptables -P FORWARD ACCEPT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i tap+ -j ACCEPT iptables -A INPUT -i tun+ -j ACCEPT iptables -A FORWARD -i tap+ -j [...]
以下内容为个人配置笔记,仅供参考,请勿用于生产环境 其实本人对vpn服务的搭建比较陌生,主要参考的还是这篇文章http://freshventure.wordpress.com/2009/12/22/在ubuntu上搭建openvpn服务器,并配合mac和windows的客户端/(需要翻墙) 在这里重新撰写一篇算是备份外加自己的整理,在最后还有一篇关于搭建ssh反向代理服务的简单说明。 首先安装openvpn: sudo apt-get install openvpn 然后拷贝ca证书,server证书和client证书的生成脚本到我们自己的配置路径下,还有样例的服务器配置文件也解压一份,捣鼓一番: cd /etc/openvpn/ sudo cp -af /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn gzip -d server.conf.gz 进入/etc/openvpn/easy-rsa开始生成根证书、服务器证书、和客户端证书,注意这一步最好以root身份执行,证书生成完了后把ca证书也就是根证书和你个人的客户端证书和私钥拿出来即可: 切换到root身份: cd /etc/openvpn/easy-rsa/ sudo -sH 清理环境构建配置目录: source ./vars ./clean-all 构建CA根证书,回答该回答的问题,国家代号和省一级的代号都是两个字符,中国是CN,当然你设个不存在的地方也没人来找你,不建议设置密码: ./build-ca 构建服务器证书,回答该回答的问题,不建议设置密码: ./build-key-server server 构建个人证书也就是客户端证书,建议设置密码: ./build-key client1 命令中的client1为你个人证书的名字可以随便,比如nick,axiong,chunge,lurenjia等等。 然后构建Diffie Hellman参数,这部可能要花几分钟时间生成随机数,你如果对安全比较在意可以在vars里设置为2048位的,这些主要是非对称加密算法里用来保证安全用的。 ./build-dh 在这些证书都生成完成后建议退出root身份。 在证书啥的都搞定了后可以开始搞服务器配置了: sudo vi /etc/openvpn/server.conf 服务器的配置没啥好多说的,偶这里就灰常没牙齿的拷贝一下freshventure的注释版,改改并加上收集来的资讯,适应我的配置了: # 写入你vps的公网ip地址 local 64.233.189.104 [...]
以下内容为个人配置笔记,仅供参考,请勿用于生产环境 varnish基本上是一个不错的squid替代品,个人研究和使用不多,在小型应用中出场的机率不大,不过在这里还是简单介绍一下在ubuntu下的安装配置。 sudo apt-get install varnish 软件就安装完了,配置的话需要配合你的应用服务,比如我的设置方式:让nginx监听在8081端口,而ip默认的80端口让给varnish来做第一道处理。 修改/etc/default/varnish配置文件: sudo vi /etc/default/varnish 将DAEMON_OPTS里的-a :6081改为-a :80 最后内容例如: DAEMON_OPTS="-a :80 \ -T localhost:6082 \ -f /etc/varnish/default.vcl \ -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G" 然后编辑你的varnish配置文件:/etc/varnish/default.vcl, sudo vi /etc/varnish/default.vcl 在我的应用中后端是本机的nginx监听8081端口则修改/添加: backend default { .host = "127.0.0.1"; .port = "8081"; } 我的这段backend名称为default,在后面的请求处理环节需要把指定域名的请求转发给我的backend: sub vcl_recv { if (req.request != "GET" && req.request != "HEAD" && req.request [...]
以下内容为个人配置笔记,仅供参考,请勿用于生产环境 基本上现代的web应用都离不开danga团队的这款神器级的作品了,编译安装很简单,安装前记得memcached依赖于libevent库,可以参考之前php环境搭建那一节中对libevent的描述设置。 然后开始memcached的编译安装: wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz tar zxf memcached-1.4.5.tar.gz cd memcached-1.4.5/ ./configure --with-libevent=/usr/local make sudo make install 做一些常用命令的软链接,将一些启动脚本配置到系统路径: sudo ln -s /usr/local/bin/memcached /usr/bin/ sudo mkdir -p /usr/share/memcached/scripts sudo cp -af scripts/* /usr/share/memcached/scripts/ sudo chmod +x /usr/share/memcached/scripts/start-memcached sudo cp /usr/share/memcached/scripts/memcached-init /etc/init.d/memcached sudo chmod a+x /etc/init.d/memcached sudo update-rc.d memcached defaults 系统默认会去读取/etc/memcached.conf配置文件,这里有一份默认的配置文件样例: # memcached default config file # 2003 [...]
以下内容为个人配置笔记,仅供参考,请勿用于生产环境 nginx实在是个非常出色的程序,能承担的角色也是千差万别,负载均衡,静态页面缓存,请求代理,在我这里的应用里,使用的还是它的传统方式,替代apache处理静态请求,并将动态请求转发给后端fast-cgi处理进程(php/python/java)处理。在nignx的前端使用varnish做静态缓存和请求转发。 注意:以下的安装扩展只是在我实验的测试机上做测试使用的,并不适用于通用的生产环境。 安装前准备,先准备好pcre和zlib这两个依赖。 wget http://downloads.sourceforge.net/project/pcre/pcre/8.02/pcre-8.02.tar.bz2?use_mirror=ncu tar jxf pcre-8.02.tar.bz2 wget http://www.zlib.net/zlib-1.2.4.tar.gz tar zxf zlib-1.2.4.tar.gz 预备一下安装后所需要用到的路径: sudo mkdir -p /var/log/nginx sudo mkdir -p /var/lib/nginx/tmp/client_body sudo mkdir -p /var/lib/nginx/tmp/proxy sudo mkdir -p /var/lib/nginx/tmp/fastcgi 安装的时候如果需要geoip的扩展支持的话去maxmind下载一下最新的免费数据库,安装一下libgeoip-dev开发库(http://wiki.nginx.org/NginxHttpGeoIPModule): #Get the free database of geo_city wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz #Get the free database of geo_coundty wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz sudo apt-get install libgeoip-dev #In other systems, [...]
以下内容为个人配置笔记,仅供参考,请勿用于生产环境 同mysql一样php的环境也有不少定制需求,故也是采用源码安装方式。 在安装php环境前做一些周边的准备工作: 安装libevent库: 在目前的网络开发环境而言libevent几乎是现如今的新兴网络服务所必不可少的底层组件了,在此下载编译安装一下: wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz tar zxf libevent-1.4.13-stable.tar.gz cd libevent-1.4.13-stable/ ./configure make sudo make install 如果不想编译安装也可以直接安装源里的版本: sudo apt-get install libevent-dev 安装apache 尽管在如今的场合里apache的使用频率已经不太高了,但有些特定的应用还是必须用到它,故在此先编译安装一下apache: wget http://www.apache.org/dist/httpd/httpd-2.2.15.tar.bz2 tar jxf httpd-2.2.15.tar.bz2 cd httpd-2.2.15/ ./configure --prefix=/usr/local/apache2 --enable-deflate --enable-expires --enable-headers --enable-proxy --enable-proxy-http --enable-http --enable-rewrite --enable-so --enable-mods-shared=most --with-mpm=worker --with-port=8088 make sudo make install sudo ln -s /usr/local/apache2/bin/ab /usr/bin/ sudo ln [...]
以下内容为个人配置笔记,仅供参考,请勿用于生产环境 mysql服务可以利用apt系统自动安装,不过由于后面的应用服务中定制化需求比较多在此还是选择手动下载源码安装。 1.下载源码 到http://dev.mysql.com/downloads/mysql/#downloads去下载目前的稳定版本的source源码,我用的是5.1的版本,据说5.4的版本性能更bt,等有空试试。 #美国镜像 wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.45.tar.gz/from/http://mysql.llarian.net/ #台湾镜像 wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.45.tar.gz/from/http://mysql.ntu.edu.tw/ 2.添加mysql用户和组: sudo groupadd mysql -g 48 sudo useradd -g mysql mysql -u 48 48是我本地自动安装时添加的id编号,手动安装就自己指定一下好了,通常系统服务的id都在1000以下。 3.预备一些数据路径: sudo mkdir -p /var/run/mysqld sudo chown -R mysql /var/run/mysqld sudo chmod -R g+wx /var/run/mysqld #数据路径 sudo mkdir -p /data0/mysql0 sudo mkdir -p /data0/mysql0/data0 sudo mkdir -p /data0/mysql0/innodb sudo chown -R [...]
