分类目录归档:Linux

Linux服务器配置、安全设置、常见问题等

让网站打开速度更快 加快域名dns解析

什么是TTL
TTL是IP协议包中的一个值,它告诉网络,数据包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL的初值通常是系统缺省值,是包头中的8位的域。TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减一,TTL通常表示包在被丢弃前最多能经过的路由器个数。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。
其他不再赘述,发挥二的性格,我们直奔主题。
用户打开网站的整个流程中,DNS解析时第一环,当用户输入域名并敲回车后,windows系统调用DNS client,寻找到用户配置或者自动分配的DNS IP,之后就开始整个解析过程。
DNS解析,变快有意义吗?
有,呵呵,很多小型网站,DNS解析时间都接近0.5s,甚至我见过一个网站,需要1.2s才可以解析出结果的。这是个非常令人吃惊的数据,因为对于一般网站打开时间超过8s用户即将放弃访问,而对于电子商务网站,4s就是用户忍耐极限。而一般经过优化的小型网站,DNS解析时间都可以控制在200MS左右,而带宽在100M左右的网站,经过优化,DNS解析时间可以控制在50-100ms。
如何优化呢?
首先利用好TTL,因为要尽量多的让用户直接从运营商的DNS缓存中拿到A记录,这样才能保证最快,但是也要保证,当你的服务器出问题时,需要尽快的切换,所以,这个TTL设置也是有一些情况需要综合研究的。
1、 你肯定清楚,自己的服务器有没有多台或者备份。如无备份,那服务器宕机时,你只能生抗,所以,TTL时间对于你来说是越长越好,因为TTL短的目的是服务器发生问题时,可以及时切换,这个对于没有备份的网站基本利用不上。所以,你的TTL设置就是越长越好,当然了,也不能无限长,一般设置TTL 3600即可。
2、 如有备份或者多台服务器,会发生由于服务器宕机需要及时做切换,TTL时间越短,切换越及时,但是TTL时间越短,也就意味着运营商DNS经常缓存不住,一般用户,设置为TTL 600即可,如果对及时切换,要求特别苛刻的网站,设置TTL 120即可。
其次寻找足够热的域名解析商。很多网站,都是自己做一个域名解析服务器,看着自己掌控方便了,但是大错特错,因为你的域名解析服务器,基本上都不被缓存,每次从根服务器询问一圈,绕了大半个地球,才给出最后的结果,那自然会效果很差。所以,要寻找足够热的域名解析商。什么叫热,就是被访问的次数特别多。足够热的话,域名解析服务器的A记录基本上会被各地运营商的DNS一直缓存着。如何判断域名解析商够不够热呢?其实,也很简单,看看这个域名解析商的客户够不够多,他们客户网站够不够热门,访问的人够不够多。
也给大家推荐一个更好的方法,就是找CDN厂商做域名解析。因为CDN厂商服务的客户,有很多是很热很大用户群很多的,所以,这些CDN厂商的域名解析服务器,服务效果那是岗岗的好。
最后是进阶技巧—巧用CNAME。不少网站拥有者,在同样的一个或多个服务器上运营很多小网站;或者自己运营一个网站,但是拆分了很多个二级域名。针对这些情况,严重需要善用CNAME,把所有的这些小网站的域名或者二级域名,cname到一个自己定义的统一域名。然后设置这个cname对应的TTL时间足够长。这样的话,保证网站的第一次解析,可以直接从运营商的DNS缓存中拿到,也就是直接拿到cname后的记录。然后,第二个cname记录,再设置一个相对合理的TTL值。通过这样,变相加热了第二级域名,通过加热的第二级和缓存时间足够长的第一级,最大化的优化DNS解析时间。该技巧,一定要确保,最后A记录得到的IP,可以服务这些原始域名。
例子:
www.abc.com. 7200 IN CNAME hot.abc.com.
hot.abc.com. 600 IN A 127.0.0.1
什么叫拆分域名?
很多网站,在搭建网站的时候,只是申请和购买了一个域名,然后所有内容:图片、js、css、html、php等等,都放在一个域名下。
而拆分域名,指的就是根据不同的应用,而将域名拆分出来。
拆分域名有什么好处?
使用IE6和IE7内核的浏览器,针对同个域名,只会同时发起2个连接。
使用IE8内核的浏览器,针对同个域名,可以同时发起6个连接。
很重要吗?
非常重要,请看图示。
使用IE6打开一个所有内容均在同个域名下的网站

使用IE8打开一个所有内容均在同个域名下的网站

我们看到的是,在IE6的情况下,请求第7个元素,需要0.7s,而在IE8的情况下,0.277就开始请求第7个元素。
由此可以看到,并发连接更多的时候,网页打开速度会更快。

由以上数据可以看到,多个域名,不管是在IE6和IE8的情况下,拆分域名,都会使网站的打开速度变快。
现实中也是如此,新浪、淘宝等大型网站,他们无一不是在拆分域名。
另外,要纠正一个IT人的误区。因为IT人一般都热衷技术,很多人的操作系统等版本都很新,用的都是IE8甚至以上的浏览器。但是整个中国,到目前为止,使用IE6和IE7的用户,仍然非常另IT人震惊的80%左右。所以,拆分域名,基本上可以缩减你20%以上的打开速度。
一个简单的操作,就能带来巨大的效果提升,何乐不为?
当然了,肯定会有人问,拆分域名,那不就会导致域名热度不够,DNS缓存不住的问题吗?这个问题,请看我上一篇博文,已经给出了答案。
按照什么原则拆分域名呢?
个数多少合适?
一般50M以下网页类网站,域名保持在4、5个即可,过多后范围会导致你的维护和使用变得复杂。
100-500M以下网页类网站,域名保持在8-10个左右。
1G以上的网页类网站,域名无所谓个数,保持10个以上,具体个数根据自己的业务和管理特点随心制定。
什么内容放到同个域名下?
页面类:html、htm等
样式类:js、css等
图片类:jpg、png、gif等
动态类:php、asp等
这样的分配方式,将来有利于你进一步优化你的网站,并且在你需要寻找加速工具时,也可以针对性的选择不同的加速方式。

debian安装使用[持续更新]

1、版本选择:

debian-8.6.0-amd64-netinst

2、默认安装。
3、安装vim

$ su //切换为root用户
$ apt-get install vim-gtk //开始安装vim

4、更改桌面分辨率。
找不到1920*1080 ?

1)$ cvt 1920 1080
2)$ xrandr
3)$ xrandr –newmode “1920x1080_60.00” 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync  // 复制1)结果
4)$ xrandr –addmode Virtual-0 “1920x1080_60.00”  // 于2)中寻找结果
5)找到system setting > display,在 resolution列表下可以看到1920×1080的选项,勾选并apply
6)$ vim /etc/profile

在最后添加如下命令:
xrandr –newmode “1920x1080_60.00” 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
xrandr –addmode Virtual-0 “1920x1080_60.00”

 

5、安装Chromium

$ apt-get update
$ apt-get -f install
$ apt-get install chromium chromium-l10n

6、 安装Yakuake

$ apt-get install yakuake

7、安装QQ
此处包含错误操作,,,,,但最终得以成功!

apt-get install ia32-libs*
dpkg -i –force-all *.deb
dpkg -i wine-qqintl_0.1.3-2_i386.deb
dpkg -i –force-all wine-qqintl_0.1.3-2_i386.deb
dpkg –add-architecture i386
aptitude update
aptitude install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386
dpkg -i –force-all wine-qqintl_0.1.3-2_i386.deb
add-apt-repository ppa:wine/wine-builds;sudo apt-get update;sudo apt-get install winehq-devel
add-apt-repository ppa:wine/wine-builds;apt-get update;apt-get install winehq-devel
add-apt-repository ppa:ubuntu-wine/ppa
vim /etc/apt/sources.list
# //添加 deb http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu trusty main
# //添加 deb-src http://ppa.launchpad.net/ubuntu-wine/ppa/ubuntu trusty main
apt-get update
apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 5A9A06AEF9CB8DB0
apt-get update
apt-get -f install
apt-get install wine1.7
aptitude update

8、配置LAMP环境。

$ apt-get install apache2
$ a2enmod rewrite // 开启rewrite
$ apt-get install mysql-server
$ apt-get install php5 php-pear

打印机现黄色感叹号,提示unknown device

问题:USB打印机连接电脑变成unknown devide
解决方法:禁用设备管理器的USB2 Enhanced Host Controller。
 
注解:USB2 Enhanced Host Controller
全称因主板不同而异,如: Intel(R) 7 Series/C216 Chipset Family USB Enhanced Host Controller – 1E26
这是 intel主板 的 南桥的USB驱动 ,每个都不一样, 对应不同的主板南桥型号 从后面的 1E26 1E27 等等的编号
 
另: 有可能是计算机静电引发。启用“SiS PCI to USB Enhanced Host Controller”设备,关机后对计算机进行静电释放,重新启动计算机,连接在计算机上的打印机和U盘很快被识别;
追注:计算机静电释放的正确方法:拔除主机上所有的连线(包括电源线,鼠标键盘线,显示器数据线,网线,外接设备连线等),按主机电源开关3-5次,每次按住开关一秒钟,中间间隔1-2秒。
 
 

Centos 6.2 配置记录

在Centos 6.2 【64位】上编译安装LAMP几次都不成功,转向RPM包安装,还算顺利地完工了。
问题记录:
1、unpacking of archive failed on file /usr/share/phpMyAdmin/tbl_relation.php;5….
RPM包损坏或者失效,重新找资源下载、安装;搞定;
2、提示依赖程序没安装;
按提示去搜索相应的RPM包安装上去。这里记录几个比较好的RPM包下载网址:

http://pkgs.org/
http://rpms.southbridge.ru/rhel6/
http://rpmfind.net/linux/

3.顺利安装成功,绑定域名,无法访问?
低级错误:配置防火墙、关闭SELINUX、重启;OK;
 
附录:相关配置
一、Apache配置
vi /etc/httpd/conf/httpd.conf 编辑文件
ServerTokens OS  在44行 修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)
ServerSignature On  在536行 修改为:ServerSignature Off (在错误页中不显示Apache的版本)
Options Indexes FollowSymLinks  在331行 修改为:Options Includes ExecCGI FollowSymLinks(允许服务器执行CGI及SSI,禁止列出目录)
#AddHandler cgi-script .cgi 在796行 修改为:AddHandler cgi-script .cgi .pl (允许扩展名为.pl的CGI脚本运行)
AllowOverride None  在338行 修改为:AllowOverride All (允许.htaccess)
AddDefaultCharset UTF-8 在759行 修改为:AddDefaultCharset GB2312 (添加GB2312为默认编码)
Options Indexes MultiViews FollowSymLinks 在554行 修改为 Options MultiViews FollowSymLinks(不在浏览器上显示树状目录结构)
DirectoryIndex index.html index.html.var 在402行 修改为:DirectoryIndex index.html index.htm Default.html Default.htm index.php Default.php index.html.var (设置默认首页文件,增加index.php)
KeepAlive Off 在76行 修改为:KeepAlive On (允许程序性联机)
MaxKeepAliveRequests 100 在83行 修改为:MaxKeepAliveRequests 1000 (增加同时连接数)
:wq! #保存退出
/etc/init.d/httpd restart 重启
rm -f /etc/httpd/conf.d/welcome.conf /var/www/error/noindex.html #删除默认测试页
二、php配置
vi /etc/php.ini #编辑
date.timezone = PRC #在946行 把前面的分号去掉,改为date.timezone = PRC
disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname
#在386行 列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
expose_php = Off #在432行 禁止显示php版本的信息
magic_quotes_gpc = On #在745行 打开magic_quotes_gpc来防止SQL注入
open_basedir = .:/tmp/ #在380行,设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录,可以防止php木马跨站,如果改了之后安装程序有问题,可注销此行,或者直接写上程序目录路径/var/www/html/www.osyunwei.com/:/tmp/
:wq! #保存退出
/etc/init.d/mysqld restart #重启MySql
/etc/init.d/httpd restart #重启Apche
 

You don't have permission to access / on this server.

Apache Http Server已经在linux上安装完成,可是通过浏览器访问,却出现了“you don’t have permission to access / on this server”.
到网上Google了下,大致有以下2种解决办法:
1.在httpd.conf文件中,有这么一段
<Directory/>
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
可以尝试把Deny改成Allow,然后重启apache服务,看问题是否解决。
2.在Apache的wiki上有关于PermissionDenied的另一种解决方法,链接是http://wiki.apache.org/httpd/13PermissionDenied,
全文翻译如下:
(13)Error 13 指的是文件系统的访问权限错误。也就是由于错误的权限,apache被拒绝访问。
一般的来说,这并不意味着是Apache配置文件存在错误。
为了给文件提供服务,Apache必须有适当的权限去访问那些文件,这些权限是由操作系统授予的。
特别的,在httpd.conf文件中,指出了User或者Group必须能够读取所有被服务的文件,以及查找包含那些文件的目录,
和所有的父目录直至文件系统的根。
在对一个unix-like的系统上的不属于User或Group的资源进行访问时,这里的User或Group是在httpd.conf的文件中指定的,典型的访问权限,对于普通的文件是644 -rw-r–r–,对于文件夹或者CGI脚本是755 drwxr-x-r-x。你也可能需要去查看操作系统所支持的扩展的访问权限(例如SELinux访问权限).
例子:
假如当访问位于unix-like系统上的/usr/local/apache2/htdocs/foo/bar.htm文件时,你收到了Permission Denied的错误,首先去查看文件上存在的访问权限:
$ cd /usr/local/apache2/htdocs/foo
$ ls -l bar.htm
如果须要的话,就修复它们:
$ chmod 644 bar.html
然后对文件夹以及每个父文件夹(/usr/local/apache2/htdocs/foo,/usr/local/apache2/htdocs,/usr/local/apache2,/usr/local/,/usr)做相同的操作:
$ ls -la
$ chmod +x
$ cd ..
#重复操作直到最顶层
在一些系统上,可使用工具namei来列出各个路径上的不同组件的访问权限,然后去发现是否有权限问题:
$ namei -m /usr/local/apache2/htdocs/foo/bar.html
如果标准的访问权限配置是正确的,你仍然得到一个Permission Denied的错误,你应该去查看扩展的访问权限。
例如,你可以使用命令setenforce 0去关闭SELinux,来查看是否有错误。
如果有错误,可以使用命令ls -alz去查看SELinux的访问权限,并使用chcon来修复它们。
不要将文件或文件夹的mode设置为777,即使“只用来测试”。测试服务器的目的是在安全的环境下保证事情是正确的,而不是错误地绕开。
3.郁闷的是,对于我的机器这两种方法都不行,把http.conf又看了几遍,问题依然还在。最后仔细想来一下,问题应该处在虚拟机上安装Linux的时候有一些development的rpm包没有装,这样Linux在首次装上然后进行配置的时候,就会出现一些类似于域名,权限,不能自动获取IP地址的问题。即使在原来的系统上进行更新Linux也是解决不了的。这样一来,解决办法有了,将原来的Linux系统删掉,重新安装,果然,问题解决,通过宿主机器去访问虚拟机中Linux系统的apache,It works!