Tag Archives: centos

Linux下将内存虚拟成硬盘

因为硬盘的IO开销很大,所以就计划在系统中将部分内存虚拟成硬盘;记得多年前曾经在Windows下通过软件虚拟出来过,所以就Google Linux中虚拟的方法。
最后发现在Linux中干这个事情超级简单,连第三方软件都不用,一个命令搞定。
Linux中将内存虚拟成硬盘的方法有两种:

Ramdisk

Ramdisk是用一部分内存空间来模拟硬盘分区,大小不可改变。

mkfs -t ext2 /dev/ram0
mkdir /ram
mount /dev/ram0 /ram
df -hl

完成后发现只有16M,跪了,这个确实不太实用。

tmpfs

tmpfs是一种基于内存的文件系统,也可以使用swap分区来存储,tmpfs是一个文件系统,并不是块设备。

df -hl

查看tmpfs的大小,你会发现其实已经挂在到/dev/shm,其实就可以直接使用了。
也许你想要定一个自己期望的大小,那就使用下面的命令

mount -t tmpfs -o size=2G tmpfs /ram
df -hl

现在就是一个完全自己定义大小的tmpfs格式的空间了。

既然是内存型存储就意味着掉点之后数据肯定全部丢失,所以要合理使用内存虚拟出来的硬盘系统。

Centos下添加PHP对MSSQL的支持

其实很少会有连接SQL Server的机会,不过我们公司刚好有个应用需要使用的SQL Server的数据库,所以也知道给LNMP安装MSSQL的扩展。
搜索网上的相关文章一般的解决方案是Freetds,Freetds的主要功能就是让Linux系统可以访问SQL Server服务。

安装Freetds

Freetds 官方网站是 http://www.freetds.org,可以去官方网站下载程序,文中下载的是0.92.79版本。

wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-0.92.79.tar.gz

然后解压,并且编译安装

tar -zxvf freetds-0.92.79.tar.gz
cd freetds-0.92.79
./configure --prefix=/usr/local/freetds
gmake
gmake install

安装完成后可以使用命令测试下

/usr/local/freetds/bin/tsql -S 192.168.0.10:1433 -U sa

安装PHP的MSSQL扩展

本服务器使用的是lnmp集成环境,php是5.3.21;如果是单独安装php的也一样;先进入下载加压后的PHP文件目录,然后编译安装

cd /data/lnmp0.9-full/php-5.3.21
cd ext/mssql
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-mssql=/usr/local/freetds
make
make install

随后在php.ini中添加扩展

vim /usr/local/php/etc/php.ini

在最后加入一行

extension = "mssql.so"

最后重启php即可

配置Freetds

vim /usr/local/freetds/etc/freetds.conf

在文件中加入以下语句

[sqlservername]
host = 192.168.0.10
port = 1433
tds version = 7.0
client charset = UTF-8

PHP中测试连接

新建一个php文件,放入以下代码

$conn = mssql_connect("sqlservername", "sa", "password") or die ("无法连接");
echo $conn;

现在你的php已经完全支持连接SQL Server了。

Centos 虚拟机网络的处理

公司大规模使用KVM,很多时候就是把Centos的虚拟机克隆后直接使用。直接克隆带来的问题就是网卡设置会发生变化,需要调整。一般会有一下几个问题。

网卡变成了eth-2和eth-3

其实这个并不影响使用,但是有些时候就是看着不爽;这个是可以调整的,方法如下

vim /etc/udev/rules.d/70-persistent-net.rules

里面可以看到所有网卡的mac和相关信息,直接删除上面的两块网卡配置,并且将下面的网卡设置中的name更换成eth-0和eth-1就可以;重启,再使用ifconfig查看,发现已经是eth-0和eth-1了

每次需要重新设置IP地址中的MAC

有时克隆后的虚拟机并不需要更改IP,就算需要更改IP也会有个讨厌的事情,就是同时需要修改设备的MAC地址,那个东西还超级难记住;
其实不用这么纠结,直接把设置文件中的MAC地址那项删除即可

vim /etc/sysconfig/network-scripts/ifcfg-eth0
删除 HWADDR="00:1E:0B:XX:XX:XX" 这行

这样以后更换虚拟机网卡就再也不用修改MAC地址

DNS设置

说起来这个不算虚拟机中的东西,不过也说说,很多时候可以ping通IP,但是无法ping通域名,那就要设置DNS了

vim /etc/resolv.conf
添加一下格式的内容
nameserver 8.8.8.8

局域网内可能很多请求是内部的,但是使用IP有些时候遇到服务器调整就需要都去修改,其实可以使用内部的DNS服务器来做服务器请求的统一管理。

服务器名称修改

虚拟机克隆以后换作其他用途,但是机器名还是原来的,好郁闷吧,这个也可以修改

vim /etc/sysconfig/network
修改 HOSTNAME= 后面的值即可
也可以用 hostname newname 即时修改机器名称(重启后无效)

然后重启就OK

Web压力测试软件webbench

帮朋友搞好服务器,安装完程序,第一想到的就是做个web压力测试,一直用webbench,刚好分享给大家

官方网站:http://home.tiscali.cz/~cz210552/webbench.html
下载地址:http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz

1.安装webbench
wget http://www.honglei.net/file/webbench-1.5.tar.gz
tar zxvf webbench-1.5.tar.gz
cd webbench-1.5
make && make install

如果出现下面错误提示:
ctags *.c
/bin/sh: ctags: command not found
解决方法:安装ctags
yum install ctags

如果安装了ctags, 仍然报错:
install -s webbench /usr/local/bin
install -m 644 webbench.1 /usr/local/man/man1
install: cannot create regular file `/usr/local/man/man1′: No such file or directory
make: *** [install] Error 1
解决方法
mkdir -m 644 -p /usr/local/man/man1

2.运行
webbench -c 500 -t 30 http://www.baidu.com/
参数说明:-c表示并发数,-t表示时间(秒)

Centos上安装配置vsftp

刚好需要配置朋友服务的中的FTP功能,网上搜索后,整理了以下资料,分享给大家。

1.查看是否安装vsftp
[root@localhost ~]#rpm -qa | grep vsftpd

2.安装vsftp(如果没有安装)
[root@localhost ~]#yum -y install vsftpd

3.启动vsftp
[root@localhost ~]#service vsftpd start

4.连接测试
[root@localhost ~]#ftp 192.168.1.100
连接不上可以查看防火墙需要开放21以及需要使用的端口

5.修改配置文件/etc/vsftpd/vsftpd.conf
[root@localhost ~]#vim /etc/vsftpd/vsftpd.conf

取消下面内容前面的注释或添加
anonymous_enable=YES/NO  是否允许匿名用户访问
chroot_list_enable=YES   限定用户不可以离开主目录
chroot_list_file=/etc/vsftpd/chroot_list
local_enable=YES/NO 本地用户是否可以访问 注:如果为NO 则所有虚拟用户都将不能访问原因:虚拟用户访问在主机上其实是以本地用户访问的
pam_service_name=vsftpd  pam认证文件名 在/etc/pam.d/vsftpd
guest_enable=YES    启用虚拟用户功能
guest_username=ftp  指定虚拟用户的宿主用户 –centos 里面已经有内置的ftp用户了(注:此用户在chroot_list_file=/etc/vsftpd/chroot_list文件里所指定的用户)
user_config_dir=/etc/vsftpd/vuser_conf 设置虚拟用户个人vsftp的服务配置文件(此文件后面不能出现空格)
以下为指定被动连接端口(方便设置防火墙)
port_enable=yes
pasv_enable=yes
pasv_min_port=10000
pasv_max_port=10100

6.查看是否安装 db4 db4-utils
[root@localhost ~]#rpm -qa | grep db4 (主要是 db4-utils)

6-1.安装db4-utils
[root@localhost ~]#yum -y install db4-utils

7.创建 chroot_list_file=/etc/vsftpd/chroot_list文件
[root@localhost ~]#vim /etc/vsftpd/chroot_list (把 /etc/vsftpd/vsftpd.conf中guest_username的值写到文件中,此文中用的是ftp)
ftp

8.创建虚拟用户目录(密码文本)
[root@localhost ~]#vim /etc/vsftpd/vftpuser.txtx (奇数行为用户名,偶数行为密码)
username
password

9.生成虚拟用户的db文件
[root@localhost ~]#db_load -T -t hash -f /etc/vsftpd/vftpuser.txtx /etc/vsftpd/vftpuser.db

10.生成虚拟用户的认证文件
[root@localhostvsftpd]# vim /etc/pam.d/vsftpd

#%PAM-1.0
session    optional    pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=denyfile=/etc/vsftpd/ftpusers onerr=succeed
auth       required     pam_shells.so
auth       include      system-auth
account    include     system-auth
session    include     system-auth
session    required    pam_loginuid.so

注释掉/etc/pam.d/vsftpd中所有的内容 反正已经不要本地用户的认证了
特别注意 以下区别
查看系统是多少位的命令
[root@bogon ~]# getconf LONG_BIT
64 (64|32)
32位系统增加以下两句:
auth      required     pam_userdb.so db=/etc/vsftpd/vftpuser
account   required     pam_userdb.so db=/etc/vsftpd/vftpuser
64位系统增加以下两句:
auth      required     /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account   required     /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser

注:db=/etc/vsftpd/vftpuser 中的vftpuser 是你生成的虚拟用户的db文件

11.创建每个虚拟用户自己的配置文件,配置文件的路径是/etc/vsftpd/vsftpd.conf中的
user_config_dir=/etc/vsftpd/vuser_conf路径
在 /etc/vsftpd/vuser_conf/下面创建以用户名为名称的文件(名称是/etc/vsftpd/vftpuser.txtx 下面的奇数行)
[root@localhost vsftpd]# cd /etc/vsftpd/
[root@localhost vsftpd]# mkdir vuser_conf
[root@localhost vsftpd]# vim /etc/vsftpd/vuser_conf/name

内容如下
local_root=/var/www(虚拟用户的根目录根据实际修改)
write_enable=YES(可写)
download_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_umask=022

12.给文夹权限(否则不能上传 权限可自定 本人给的是 777)
[root@localhost vsftpd]# chmod 777 /var/www/

13.重启vsftpd
[root@localhost vsftpd]# service vsftpd restart

14.登录测试
[root@localhost vsftpd]#ftp 192.168.1.100

15.bug解决
如果连接不上查看
[root@localhost vsftpd]# getenforce
Enforcing 如果出现(Enforcing)
关闭方法:[root@localhost vsftpd]#setenforce 0 (0|1 开|关)
此文参考了前辈们的文章后做了整理和修改,感谢前辈们经验。