Linux虚拟内存学习笔记

2012年3月20日 没有评论

最近学习了一下关于虚拟内存方面知识,记录几个比较有价值的网址。

Linux虚拟内存实现原理

http://blog.nosqlfan.com/html/2956.html

Linux环境进程间通信(五): 共享内存(上)

http://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html

分类: Linux 标签:

nginx include 指令

2012年3月8日 没有评论

当一个nginx服务器中运行着多个虚拟主机,如果把这些虚拟主机的配置都放在主配置文件(nginx.conf)中,造成主配置文件很大,对日后的维护带来不便。其实可以把每个虚拟主机的配置信息存放在一个单独文件,然后使用include指令把该文件嵌入到主配置文件中即可。

假设有两个虚拟主机:www.netingcn.com和www.netingcn.net,分别为其创建配置文件为www_netingcn_com.conf和www_netingcn_net.conf,在nginx默认存放配置文件的目录下(/usr/local/nginx/conf/)建立一个vhost目录,把上述创建的两个文件存放在此目录中,并把虚拟主机相应的配置移到配置文件中。然后在nginx的主配置文件中添加如下配置即可:

    include /usr/local/nginx/conf/vhost/www_netingcn_com.conf;

    include /usr/local/nginx/conf/vhost/www_netingcn_net.conf;
分类: Linux, nginx 标签:

使用nslookup查询域名服务器

2012年2月29日 没有评论

nslookup最简单的用法就是能够查询出域名对应的IP地址,适用于A记录或CNAME记录。如果需要知道域名的解析服务器是谁,也可以使用nslookup,但是需要加参数,这个命令是window、linux自带的,但是在参数的表述上有些不相同,例如:

//用法:
nslookup 参数 域名

//window 用法
nslookup -qt=ns netingcn.com

//linux 用法
nslookup -type=ns netingcn.com

注意:如果不带参数,就是查询域名对应的IP,查询域名解析服务器的域名是自己顶级域名,不要加www。

Centos中配置NFS

2012年2月20日 没有评论

NFS服务器端需要安装nfs-utils和portmap这两个安装包,同时要确保nfs、portmap服务启动。把需要共享出去的目录添加在/etc/exports文件中,格式为:

服务器上共享的目录  客户端主机名称1或IP1(参数1,参数2) 客户端主机名称2或IP2(参数3,参数4)

注意:可以在一条中设置多个客户端,也可以使用字码的方式来确定某一个网段的客户机,例如:192.168.1.0/24,参数和前面的ip之间没有空格,可以指定多个参数,可用的参数如下:

  • rw:可读写的权限;
  • ro:只读权限
  • no_root_squash:客户端登陆 NFS 主机使用共享目录的使用者,如果是 root 的话,那么对于这个共享的目录来说,他就具有 root 的权限,这个参数可能造成安全隐患
  • root_squash:客户端登陆 NFS 主机使用共享目录的使用者,如果是 root 的话,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份;
  • all_squash:不论客户端登陆 NFS 的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是 nobody ;
  • anonuid:前面关于 *_squash 提到的匿名使用者的 UID 设定值,通常为 nobody,但是您可以自行设定这个 UID 的值,当然,这个 UID 必需要存在于您的 /etc/passwd 中;
  • anongid:同 anonuid ,但是变成 group ID 就是了;
  • sync:数据同步写入到内存与硬盘当中;
  • async:数据会先暂存于内存当中,而非直接写入硬盘。

需要说明的是通过rw设置的读写权限还需要根据当前登录的用户来判断,例如使用参数(rw,root_squash),假设服务器的上的目录owner是用户 test ,且目录权限是744,这样的话,客户端mount上的共享文件还是没有写的权限。对于权限这一块比较搞人,最简单的办法是使用参数(rw,no_root_squash),这样,只要客户端是使用root登陆的,那么它mount上的共享目的就有一切权限了。

例如把服务器端目录/data/nfs-dir-192.168.1.211共享给ip为192.168.1.211的客户端,配置如下:

/data/nfs-dir-192.168.1.211     192.168.1.211(rw,sync,no_root_squash)

这样就配置完成了,启动portmap和nfs服务(service port start、service nfs start 或 /etc/init.d/portmap start、/etc/init.d/nfs start),可以通过命令exportfs -v查看共享的目录。修改了配置文件后,在不重启nfs服务的情况下也可以使用exportfs -r来使新的配置生效。

客户端使用mount命令就可以把服务器端的共享目录mount到本地,例如把上述服务器端的目录mount到本地的/data目录上:

mount -t nfs 192.168.1.68:/data/nfs-dir-192.168.1.211/ /data

可以把上述命令加入到/etc/rc.local中,这样重启后会自动挂载服务器的共享目录到本地。

分类: Linux 标签: ,

linux下MongoDB开机自启动的问题

2012年2月17日 没有评论

按照常理,把如下命令

/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/log/m.log --directoryperdb

放在/etc/rc.local文件中就可以实现开机自启动了,第一次重启机器发现mongodb顺利启动了,再次重启机器后,通过ps没有查看到相应mongod进程,也就是启动失败了。原因是由于重启机器,导致非正常停止mongod服务,mongod.lock中还记录了上次运行的进程号,为了数据的安全需要执行 /usr/local/mongodb/bin/mongod –repair,当然如果直接把mongod.lock文件删除也可以重新启动了,例如:

/usr/local/mongodb/bin/mongod --repair
/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/log/m.log --directoryperdb

或
rm -rf /data/db/mongod.lock
/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/log/m.log --directoryperdb

注意上述启动Mongodb都是没有增加journal参数,如果带了此参数就不会那么麻烦了,例如

/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/log/m.log --directoryperdb --journal

就可以了,就算是非正常重启机器,mongodb也会根据日志去修复数据库的。

另外,如果mongodb的数据目录是通过mount的NFS文件夹,自启动好像有问题的。

分类: Linux, MongoDB 标签:

centos上安装git

2012年2月15日 没有评论

由于软件源中没有,就不能使用yum来安装,不过通过源码安装也很简单。
git下载地址:http://code.google.com/p/git-core/downloads/list,我下载的是git-1.7.9.tar.gz ,下载命令:

wget http://git-core.googlecode.com/files/git-1.7.9.tar.gz

然后执行:

tar -xvf git-1.7.9.tar.gz 
cd git-1.7.9/
./configure 
make && make install

就可以了,git依赖zlib-devel,openssl-devel,perl,cpio,expat-devel,gettext-devel这些包,如果configure报错,通过yum安装缺失的依赖包即可。

分类: Linux 标签:

linux 主机的免密码登陆

2012年2月14日 1 条评论

假设有两台linux主机A和B,当A连接B时不需要输入密码,实现方法是在A主机上使用ssh-keygen命令生成一对公私钥,默认存储路径为~/.ssh/,同相对应的公钥内容追加到到B主机上~/.ssh/authorized_keys文件中即可。具体操作如下:

连接上A主机,使用如下命令:

ssh-keygen -t rsa

回车会让你输入存放公私钥的路径和名称,默认存放在~/.ssh/目录下

接下来输入一个口令,用来保护这个私钥,如果此处你输入了口令,则在连接你上传公钥的机器时会问你要这个密码的,如果口令为空,就可以直接连接上,没有口令很不安全的,一旦有人复制了你的passphrase,那么他就可以不用密码登录上了。

把公钥上传到B主机,命令如下:

cat 公钥文件 | ssh 用户@192.168.1.9 "cat - >> ~/.ssh/authorized_keys"

注意,如果不存在~/.ssh文件夹,需要手工创建,同时需要设置目录的访问权限。

至此,就完成免密码登陆,这时使用ssh,scp命令就不需要输入B主机的密码了。

分类: Linux 标签:

linux下查看cpu是否支持64位

2012年2月14日 没有评论

查看cpuinfo中是否有lm,如果有lm表示支持64位,lm的意思是long mode,具体命令如下:

cat /proc/cpuinfo  | grep flags
检查输出里面是否有 lm 字符
或
cat /proc/cpuinfo  | grep flags | grep lm | wc -l
输出结果大于 0 表示支持64位
分类: Linux 标签:

使用apache ab做压力测试时出现apr_poll:The timeout specified has expired错误

2012年2月13日 没有评论

使用apache 的ab做压力测试时,当压力过大,例如请求1000000次,在没有执行完就报apr_poll:The timeout specified has expired错误,解决办法,使用-k(发送keep-alive指令到服务器端),同时修改web服务器下的/etc/sysctl.conf,在里面添加如下内容:

net.ipv4.netfilter.ip_conntrack_max = 3276800
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_orphan_retries = 1
net.ipv4.tcp_fin_timeout = 25
net.ipv4.tcp_max_orphans = 8192
net.ipv4.ip_local_port_range = 32768    61000

如果已经存在,试着加大net.ipv4.netfilter.ip_conntrack_max的值,然后使用

sysctl -p /etc/sysctl.conf

使其生效。

分类: Linux 标签: , ,

linux find命令小记

2012年2月3日 没有评论

在一个备份脚步中执行了删除7天前的旧备份文件的命令,备份文件存放在/home/backups/files/下,命令如下:

find /home/backups/files/ -mtime +6 -exec rm -rf {} \;

开始时候运行正常,一段时间后发现没有备份了,查看下来,发现/home/backups/files/文件都不存在了。原来是因为find写法有问题,find /home/backups/files/ -mtime +6 出来的结果会包含/home/backups/files/目录(当files目录的创建时间超过7天),是自己想当然的以为在目录后面加了“/”就只查找该目录下的文件,测试下来,find /home/backups/files/ -mtime +6和find /home/backups/files -mtime +6的结果一致。知道问题所在了,解决问题就好办了,只需要在后面加个星号(*)通配符就行了,如下:

find /home/backups/files/* -mtime +6 -exec rm -rf {} \;
分类: Linux 标签: ,

无觅相关文章插件,快速提升流量