Mecurial(hg)学习要点(团队管理)

Mecurial的基本介绍可以查看百度百科,以下知识是个人对Mecurial经验的简要说明。
Mecurial(hg)是一款分布式版本控制软件,可以称之为轻量级的git,比git和svn都要简单易学,但是在版本控制的理念上与svn有所区别。

分布式版本控制的核心理念是“分支”和“合并”,每个开发者在本地拥有很多开发分支,最常见的一个分支可以是一个功能的开发或者一个BUG的修改,每个分支有一个独立的名称,相互之间相互独立、互不影响。当分支代码开发完成之后,需要将该分支的代码“合并”到主分支,该主分支即是软件最终的分支。需要发布的功能都需要合并到该主分支,不发布的功能或修改不用合并。

Mecurial在Linux开发环境下一般使用命令行完成版本控制操作,在Windows环境下可以使用命令行或者图形界面,图形界面的话会隐藏所有的命令细节。

Continue reading "Mecurial(hg)学习要点(团队管理)"

Git学习要点(团队管理)

一、Git介绍

Git的基本介绍可以查看百度百科,以下知识是个人对Git经验的简要说明,以方便帮助大家快速学习。

分布式版本控制的核心理念是“分支”和“合并”,每个开发者在本地拥有很多开发分支,最常见的一个分支可以是一个功能的开发或者一个BUG的修改,每个分支有一个独立的名称,相互之间相互独立、互不影响。当分支代码开发完成之后,需要将该分支的代码“合并”到主分支,该主分支即是软件最终的分支。需要发布的功能都需要合并到该主分支,不发布的功能或修改不用合并。

Git在Linux开发环境下一般使用命令行完成版本控制操作,在Windows环境下可以使用命令行或者图形界面(TotoiseGit)。
图形界面的话会隐藏所有的命令细节,所以建议大家学习的时候以命令为主,这样知其然并知其所以然。

二、Git配置

• (Linux) /etc/gitconfig文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件
• (Linux) ~/.gitconfig文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件
• 当前项目的 git 目录中的配置文件(也就是工作目录中的 .git/config 文件): 这里的配置仅仅针对当前项目有效,每一个级别的配置都会覆盖上层的相同配置,所以.git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量

用户信息设置(必须)

文本编辑器(可选,默认是vim)

差异分析工具(可选,默认是vim)

输入一次后保存用户名和密码

查看已有的配置信息

Continue reading "Git学习要点(团队管理)"

PHP-Redis 中文文档

Redis中文手册文档请参考:http://redisdoc.com/ ,Redis官方命令请参考:https://redis.io/commands

基本操作

Redis::__construct构造函数
$redis = new Redis();

connect, open链接redis服务
参数
host: string,服务地址
port: int,端口号
timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
注: 在redis.conf中也有时间,默认为300

pconnect, popen不会主动关闭的链接
参考上面

setOption设置redis模式

getOption 查看redis设置的模式

ping 查看连接状态

get 得到某个key的值(string值)
如果该key不存在,return false

set 写入key 和 value(string值)
如果写入成功,return ture

setex 带生存时间的写入值
$redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.

setnx 判断是否重复的,写入值
$redis->setnx('key', 'value');
$redis->setnx('key', 'value');

delete 删除指定key的值
返回已经删除key的个数(长整数)
$redis->delete('key1', 'key2');
$redis->delete(array('key3', 'key4', 'key5'));
Continue reading "PHP-Redis 中文文档"

移动 MySQL datadir 的一个小技巧

一般来说,移动 MySQL 资料库只要修改 /etc/mysql/my.cnf 裡面的 datadir 即可…

把原本的注解掉:

 并且填上新的路径

 # 假设这是新路径

然后复制资料库资料

可是当我下指令

的时候,却发现错误,我也找不出问题在哪(权限对了,路径也对了,档案也都在)。后来才发现原来 Ubuntu 还有另一个地方的设定必须要修改,就是 apparmor :先修改 /etc/apparmor.d/usr.sbin.mysqld 这个设定档,找出裡面原本指向 /var/lib/mysql 的目录,全部改为新目录。

注意 datadir= /data/mysql 所指向的目录权限应为mysql可访问的权限,一般情况下mysql数据库目录所属用户和组为mysql和mysql;将新目录设置为如下:

然后重启动就可以了!

解决 SSH 自动掉线

在 /etc/ssh/sshd_config 文件里添加以下两行:

重启sshd服务

ClientAliveInterval

设置一个以秒记的时长,如果超过这么长时间没有收到客户端的任何数据,sshd 将通过安全通道向客户端发送一个”alive”消息,并等候应答。
默认值 0 表示不发送”alive”消息。这个选项仅对SSH-2有效。

ClientAliveCountMax

sshd 在未收到任何客户端回应前最多允许发送多少个”alive”消息。默认值是 3 。
到达这个上限后,sshd 将强制断开连接、关闭会话。
需要注意的是,”alive”消息与 TCPKeepAlive 有很大差异。“alive”消息是通过加密连接发送的,因此不会被欺骗;而 TCPKeepAlive 却是可以被欺骗的。
如果 ClientAliveInterval 被设为 15 并且将 ClientAliveCountMax 保持为默认值, 那么无应答的客户端大约会在45秒后被强制断开。这个指令仅可以用于SSH-2协议.

Ubuntu下修改最大文件打开数

第一步:配置/etc/security/limits.conf

文件尾追加

655350可以自己设置,四列参数的设置见英文,简单讲一下:
第一列,可以是用户,也可以是组,要用@group这样的语法,也可以是通配符如*%
第二列,两个值:hard,硬限制,soft,软件限制,一般来说soft要比hard小,hard是底线,决对不能超过,超过soft报警,直到hard数
第三列,见列表,打开文件数是nofile
第四列,数量,这个也不能设置太大

  Continue reading "Ubuntu下修改最大文件打开数"

Ubuntu下安装支持Oracle的PHP扩展

Install Oracle Instant Client

Download Oracle Instant Client packages

First, select right client for your OS here(http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html),
Instant Client for Linux x86-64(http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html) in my case for my 64-bit Ubuntu 14.04.
Then Accept License Agreement and download basic & devel rpm packages for your Oracle version.
Our Oracle DB version is 11g r2, so I need to download:

oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm
oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.rpm

Install the instant client

Convert .rpm to Debian software package (.deb) using alien:

sudo apt-get install alien
sudo alien -d oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm
sudo alien -d oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.rpm

This will output oracle-instantclient11.2-basic-11.2.0.1.0-2.x86_64.deb & oracle-instantclient11.2-devel-11.2.0.1.0-2.x86_64.deb which can be installed via Ubuntu's dpkg command:

sudo dpkg -i oracle-instantclient11.2-basic_11.2.0.1.0-2_amd64.deb
sudo dpkg -i oracle-instantclient11.2-devel_11.2.0.1.0-2_amd64.deb

After successful installation, client library with be installed in /usr/share/oracle/11.2/client64, and developer header files with be in /usr/include/oracle/11.2/client64.

Continue reading "Ubuntu下安装支持Oracle的PHP扩展"

SSH远程主机挂载到本地文件目录

安装sshfs

映射到本地磁盘目录

Nginx负载均衡

注意,Nginx负载均衡都需要走反向代理走流量,因此均会有单点故障的风险。
如果和DNS解析一起使用的话,可以缓解该问题,即将一个域名指向多个IP(域名解析配置的时候多建几个A类型的IP解析即可),DNS解析默认采用轮询的方式来分发请求到不同的服务器。

一、Nginx简介

Nginx是一个高性能的HTTP服务器和反向代理服务器。它起初是俄罗斯人Igor Sysoev开发的,至今支撑者俄罗斯的很多大型的网站。

二、Nginx支持的三种负载均衡策略

轮询 : 将请求依次轮询发给每个服务器。
最少链接: 将请求发送给持有最少活动链接的服务器。
IP哈希 : 通过哈希函数决定请求发送给哪个服务器(常用对用户SESSIONID进行哈希,以便同一用户访问同一台服务器)。
权重 : 服务器的权重越高,处理请求的概率越大。

三、轮询负载均衡

在nginx.conf配置文件中添加如下配置,此配置有三台服务器提供支付服务。

需要注意以下几点
1、缺省配置就是轮询策略;
2、nginx负载均衡支持http和https协议,只需要修改 proxy_pass后协议即可;
3、nginx支持FastCGI, uwsgi, SCGI,memcached的负载均衡,只需将 proxy_pass改为fastcgi_pass, uwsgi_pass, scgi_pass,memcached_pass即可。
4、此策略适合服务器配置相当,无状态且短平快的服务使用。
Continue reading "Nginx负载均衡"