前段时间一直使用http://centos.ustc.edu.cn/的源,最近发现更新有问题,遂换成默认的源,执行yum update的时候还是报错,似乎原因是还在使用默认的ustc的源,后来查了一下,把/etc/yum.repos.d目录下的文件全部干掉,即 rm -rf /etc/yum.repos.d/*就可以了。在国内163的源似乎也不错,添加方法为:
cd /etc/yum.repos.d/
wget http://mirrors.163.com/.help/CentOS-Base-163.repo
mv CentOS-Base-163.repo CentOS-Base.repo
yum makecache
yum update
通过对一些静态资源简单的设置,例如设置静态资源的过期时间、以及压缩,可以减少网站的加载时间,同时也能减少服务器的带宽。
在nginx下对静态的过期时间设置为:
location ~* \.(ico|gif|bmp|jpg|jpeg|png|swf|js|css) {
root /var/www/netingcn.com;
expires 7d;
}
上述配置能对图片、flash、js、css文件设置了过期时间为7天,当用户在7天内再次访问网站时,大部分情况下都是直接使用本地的缓存,减少网络传输,从而加快了页面加载速度。
压缩的配置如下:
gzip on;
gzip_min_length 1000;
gzip_buffers 4 8k;
gzip_types text/plain application/x-javascript text/css;
对文本、js和css文件进行压缩,一般情况下,压缩后的大小是原始大小的25%,甚至更小。
centos下配置好软件源,可以通过yum方便的安装需要的软件,例如:yum install vim,注意执行这样的操作需要root权限,切换到root下,或者用sudo yum install vim。不过有时候软件的名字和包名并不是一致的,在某个版本后centos就没有包含whois命令,当使用 yum install whois提示No package whois available,想要知道whois对于的包名,可以借助于yum search whois,执行后发现有jwhois.i686 : Internet whois/nicname client这行信息,然后使用yum install jwhois,顺利安装上whois了。
另外,在linux的另外一个发行版Ubuntu中,是采用apt来管理软件包的,对于的安装命令为apt-get install xxx,如果要搜索软件对应的包名,则是使用apt-cache search xxx。
出现rsync: failed to set times on “xxxx”: Operation not permitted的原因大致是对文件夹(或文件)xxxx没有操作权限。如果执行同步的用户是root,是不会有这样的问题,但是rsync也可以不使用root用户来进行同步,不使用root用户的情况下,即使使用了-o,-g,同步到目的文件夹的文件用户和组都变成了同步使用的用户,但是用-p后文件权限可以保留。当目的文件夹(或文件)xxxx事后做过修改使owner不是rsync使用的用户,即使xxxx的权限是777,也会出现上述错误。
通过观察nginx的错误日志,发现大量的如下错误:
PHP Warning: date(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Chongqing’ for ‘CST/8.0/no DST’ instead in
通过搜索,发现从php5.3 ,当对使用date()等函数时,如果timezone设置不正确,在每一次调用时间函数时,都会产生E_NOTICE 或者 E_WARNING 信息。知道了问题的根源,解决的方法有三种,任选一种即可。
一、在页头使用date_default_timezone_set()设置 date_default_timezone_set(‘PRC’);
二、在页头使用ini_set(‘date.timezone’,'Asia/Shanghai’);
三、修改php.ini。打开php5.ini查找date.timezone 去掉前面的分号修改成为:date.timezone =PRC
注意:上述设置都是针对中国大陆来设置的,同时PRC也可以用Asia/Shanghai,Asia/Chongqing,Asia/Urumqi来代替。
rsync同步命令的基本写法
rsync 命令选项 源目录 目标目录
假如源目录写为 /var/www/就会把该目录下所有文件同步到目标目录,如果写为/var/www/*,那么当前目录下的隐藏文件(文件夹名或文件名是以”.”号开头)则不会被同步,不过子目录中的隐藏文件还是会被同步。
假设需要排除某个文件(或文件夹),可以用–exclude来指定,例如需要排除源目录下的dir1文件夹,可以写为:
/usr/bin/rsync -vzrtopg –exclude=dir1 /var/www/src/ /var/www/dest
可以同时排除多条,例如:
/usr/bin/rsync -vzrtopg –exclude=dir1 –exclude=dir2 /var/www/src/ /var/www/dest
除了上述方法,还可以通过–exclude-from来指定,例如:
/usr/bin/rsync -vzrtopg –exclude-from=exclude.list /var/www/src/ /var/www/dest
exclude.list文件中指定需要排除的列表,例如:
dir1
[0-9]*
dir2/.[a-z0-9]*
.svn
含义是排除/var/www/dir1、/var/www目录下所有以数字作为名字的文件和文件夹、/var/www/dir2/目录下的隐藏文件和/var/www目录下所有.svn文件夹,包括其子目录中的.svn文件夹。
注意:exclude和exclude-from前面都是有两个减号,如果漏写了一个,命令行不会报错,但是不能排除执行的文件或文件夹。
在linux下提供的crontab可以很轻松的帮我们完成一些需要定时处理的任务。在某些系统下,明明通过terminal可以执行的动作,加入到crontab后却没有执行,检查配置也没有任何问题。最终发现是由于cron的运行环境(包括path等)可能不是和登陆的当前用户一致造成的,所以在配置crontab时,建议命令用完整路径。
在linux下可能tab键是用的最多一个吧。在使用ls,cd等命令时使用tab可以帮我们减少很多键盘输入,比如我们要进入一个很长目录名的目录下,可能只需要敲入前几个字符,然后使用tab,这时整个目录名都帮补充出来了。如果有几个前面都相同的目录,它也会提示出来,有些系统下还会发出嘀”的响声,如果不喜欢这个声音,可以通过修改配置去掉它。用vi 编辑 /etc/inputrc 文件, 去掉 “set bell-style none”前面的#号,重启动系统即可!
linux下通过rm命令来删除文件,但是如果要删除文件名乱码的文件,就不能直接使用rm命令了,因为压根就无法输出文件名来。不过借助find命令可以实现对其删除。在linux下对于每个文件都一个对应的不变的inode号,使用 ls -li 可以查看到文件的inode号,同时find可以根据inode号来查找,另外find命令中可以执行其他的命令。删除的步骤如下:
- 通过ls -li 获取要删除乱码文件名文件的inode号,比如得到的是 123456
- 执行删除
find ./ -inum 123456 -exec rm -rf {} \;
注意:“{}”后要空一格再加上“\;”。
在某些版本的linux下,通过find查找当前目录下所有后缀名jpg的文件,命令为
find ./ -iname *.jpg
会出现“find: 路径必须在表达式之前”的错误提示。解决的方法有两种
- 使用转义符把*转义,即 \*.jpg
- 用引号引起来 ,即 “*.jpg”
注意:如果需要把find 的结果提交给while,例如:
`echo find ./ -iname "\*.jpg"` | while read f
do
#do something
done
则既需要转义符,也需要引号