三月 21st, 2016

通过SSH服务远程访问Linux服务器,总是等待很久才能登陆。

试过下面的方法,再通过SSH服务远程访问Linux服务器,瞬间登陆。。。甚是开心。。。

vi /etc/ssh/sshd_config

关闭 SSH 的 DNS 反解析,添加下面一行:

UseDNS no

※虽然配置文件中[UseDNS yes]被注释点,

但默认开关就是yes…(SSH服务默认启用了DNS反向解析的功能)

#############################################################
上网查了相关的资料:↓

在目标服务器上有一个文件/etc/nsswitch.conf ,里面有如下一行
hosts: files dns
这行的含义是 对于访问的主机进行域名解析的顺序,是先访问file,也就是/etc/hosts文件,如果hosts中没有记录域名,则访问dns,进行域名解析,如 果dns也无法访问,就会等待访问超时后返回,因此等待时间比较长。那如果将这一行屏蔽掉是不是也可以达到同样的效果呢?应该是可以的,但是如果本机要通 过域名访问其他服务器,则肯定无法访问,因此这行应该需要保留。这个问题也提示我们,dns如果不可用,会带来的一些副作用的。

相信很多朋友在使用Linux系统的时候因为安全性的原因摒弃了telnet rlogin 或者X-window,而把openssh作为自己默认的远程登录方式。然而经常会遇到的一个情况是telnet到server速度很快,但是ssh连接 的时候却很慢,大概要等半分钟甚至更久。ping的速度也非常好,让人误以为是ssh连接不上。下面说下如何解决这样的问题,最为常见的原因是因为 server的sshd会去DNS查找访问clientIP的hostname,如果DNS不可用或者没有相关记录,就会耗费大量时间。

1, 在server上/etc/hosts文件中把你本机的ip和hostname加入
2, 在server上/etc/ssh/sshd_config文件中修改或加入UseDNS=no(这个方法试过了,好用)
3, 注释掉server上/etc/resolv.conf中所有行(关于这个方法:另一台服务器虽然没有按照方法2修改配置文件sshd_config,但是在这台服务器resolv.conf为空,也就是说这个方法也好用)
4, 修改server上/etc/nsswitch.conf中hosts为hosts: files
5, reboot server使配置生效

TAGS: ,
三月 21st, 2016

linux支持中文,修改/etc/sysconfig/i18n文件

LANG=”zh_CN.GB18030″
SUPPORTED=”zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en”
SYSFONT=”latarcyrheb-sun16″

ssh支持中文输入的修改,如图:

1、如图,点击【Change】,选择新宋体或者宋体

2
2、选择如图红色标记的地方,选择UTF-8字符集:
1
如上设置以后就可以了。
TAGS: ,
三月 17th, 2016

apache重启的时候可能会出现以下错误:

#service httpd start
httpd:(98)Address already in use: make_sock: could not bind to address [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
查看占用80端口的程序列表
#netstat -lnp|grep 80
返回:
tcp        0      0 :::80                       :::*                        LISTEN      14860/httpd
或者ps -aux | grep apache查看所有apache的进程
查看14860进程ID所对应的程序
#ps 14860
杀死这个进程ID
#kill -9 14860
或这个杀死所有的httpd进程,更绝.
#pkill -9 httpd
然后就可以重启httpd服务了

TAGS: , ,
三月 16th, 2016

由于技术更新和企业自身的原因,网站会进行改版或者说是重建,变更域名之类的工作,这时候旧网站原来的有用信息就要转移到新建的网站上,那么用什么办法转移呢?那就是用域名url转发和301重定向这两种办法。那么这两者之间有什么区别吗?

【域名url转发】

所谓域名url转发即URL转发,就是通过服务器的特殊技术设置,实现当访问您的域名时,将会自动跳转到您所指定的另一个网络地址。当然前提是:首先您的域名已经成功注册,并使用默认的 DNS 服务器;其次您设置其转发至的目标地址是可以在互联网正常访问到的,这样才能保证您的 URL 转发成功。因此通过URL 转发服务,可以轻松实现多个域名指向一个网站或网站子目录了;另外,通过URL转发服务,可以方便的实现将您的中文域名,设置自动转发到您的英文域名主站点。

域名url转发又分为两种方式:不隐藏路径域名url转发:访问域名,自动跳转到指定的网络路径后,IE浏览器的地址栏里显示的地址自动变为显示真正的目标地址。隐藏路径的域名url转发:访问域名,自动跳转到指定的网络路径后,IE浏览器的地址栏里显示的地址显示的地址保持不变,但实际访问到的是跳转后的内容。

【301重定向】

301重定向可以说是网页更改地址后对搜索引擎最好友好的方法,它代表永久性转移。一般来说,只要不是暂时搬移的情况,我们都建议使用301来做转址。

而且从搜索引擎优化的角度来看,301重定向是网址进行重定向最为可行的一种办法。当网站的域名发生变更后,搜索引擎只对新网址进行索引,同时又会把旧地址下原有的外部链接如数转移到新地址下,从而不会让网站的排名因为网址变更而收到丝毫影响。因此,在使用301永久性重定向命令让多个域名指向网站主域时, 亦不会对网站的排名产生任何负面影响。

【域名url转发和301重定向之间的区别】
301重定向属于是永久性转移,而域名url转发并不是永久性的转移,对于搜索引擎来说,它的认可度没有301重定向来的好。URL转发不利于SEO,对PR没有传递,301对SEO很友好,可以传递PR 。

【301与302转向的区别】
实施301后,新网址完全继承旧网址,旧网址的排名等完全清零。
实施302后,对旧网址没有影响,但新网址不会有排名。

三月 16th, 2016

Exim 命令行 功能
一、Exim队列的全局管理
1.统计队列邮件数量    
root@localhost# exim –bpc

2.查看exim 队列中的所有邮件信息    
root@localhost# exim –bp

3.汇总队列邮件信息
root@localhost# exim -bp | exiqsumm

4.查看Exim服务的当前工作情况
root@localhost# exiwhat

二、基于邮件ID的队列操作 – ID可为多个
1.删除邮件
root@localhost# exim -Mrm <message-id> [ <message-id> … ]

2.冻结邮件
root@localhost# exim -Mf <message-id> [ <message-id> … ]

3.解冻邮件
root@localhost# exim -Mt <message-id> [ <message-id> … ]

4.强制投递邮件
root@localhost# exim -M <message-id> [ <message-id> … ]

5.强制退回邮件
root@localhost# exim -Mg <message-id> [ <message-id> … ]

6.查看邮件头
root@localhost# exim -Mvh <message-id>

7.查看邮件内容
root@localhost# exim -Mvb <message-id>

8.查看邮件日志
root@localhost# exim -Mvl <message-id>

9.新增一个收件人
root@localhost# exim -Mar <message-id>

0.编辑发件人信息
root@localhost# exim -Mes <message-id>
三、队列邮件ID查找命令 – exiqgrep

1.查看来自指定发件人的所有队列邮件
root@localhost# exiqgrep -f [发件人]@domain

2.查看发给指定收件人的所有队列邮件
root@localhost# exiqgrep -r [收件人]@domain

3.查看天前的队列邮件 (以秒为单位)
root@localhost# exiqgrep -o 86400

4.查看小时内的队列邮件 (以秒为单位)
root@localhost# exiqgrep -y 3600

5.查看700到800字节大小的队列邮件 (支持正则表达式)
root@localhost# exiqgrep -s ‘^7..$’

6.其他常用参数:-z 只查看被冻结的队列邮件-i 只显示邮件ID-c 只显示查找到的邮件数量
四、队列邮件的批量操作

1.删除所有被冻结的邮件
root@localhost# exiqgrep -z -i | xargs exim –Mrm

2 解冻所有被冻结的邮件
root@localhost# exiqgrep -z -i | xargs exim –Mt
 
2.删除所有5天前的队列邮件    
root@localhost# exiqgrep -o 432000 -i | xargs exim –Mrm

3.冻结所有来自某一发件人的邮件    
root@localhost# exiqgrep -i -f 发件人@zeknet.com | xargs exim -Mf
root@localhost# exiqgrep -i -f lovebcco@server121.hosteaseservers.com | xargs exim -Mf   

4.exim 清空发送队列
数据量庞大的情况下用用以下命令清除logout
find /var/spool/exim/input/ -type f -name ‘*’ -print0 | xargs -0 rm &   或者
find /var/spool/exim/input/ -type f -name ‘*’ -print0 | xargs -0 rm -rf

exim -bpru | awk {‘print $3’} | xargs exim -Mrm

三月 14th, 2016

PATH是环境变量,一定要大写.

(1)不同身份用户默认的PATH不同,默认能够随意执行的明朗了也不同,如下(root与jack):

[root@sqj2015 ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@sqj2015 ~]# su – jack

[jack@sqj2015 ~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jack/bin

 

  • PHTH是可以修改的,所以一般用户还可以通过修改PATH来执行某些位于/sbin 或/usr/sbin下的命令来查询.
  • 使用绝对路径或相对路径直接指定某个命令文件名来执行,会比查询PATH来的正确
  • 命令应该放置在正确的目录下,执行才会比较方面
  • 本目录(.)最好不要放到PATH当中

 

那如何修改和设置PATH变量呢?如下:

  <1>使用export命令

     export PATH=$PATH:/XXX

  <2>修改profile文件

     在里面加入:export PATH=”$PATH:/XXX”

     让环境变量立即生效需要执行如下命令:

     source /etc/profile

  <3>修改.bashrc文件

     在里面加入:export PATH=”$PATH:/XXX”

  后两种方法一般需要重新注销系统才能生效,最后用echo查看下. /etc/profile对系统里所有用户都有效,而用户主目录下的.bash_profile

eg:

ls命令位于/bin/ls,若将ls由移动成为/root/ls(可用mv /bin/ls /root 命令实现).然后你本身也在/root目录下,请问是否可以直接输入ls来执行呢?若不能,该如何执行这个命令呢?

 

[root@sqj2015 ~]# pwd

/root

[root@sqj2015 ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  test

[root@sqj2015 ~]# mv /bin/ls /root

[root@sqj2015 ~]# ls

-bash: /bin/ls: No such file or directory

[root@sqj2015 ~]# ./ls

anaconda-ks.cfg  install.log  install.log.syslog  ls  test

[root@sqj2015 ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@sqj2015 ~]# PATH=”PATH”:/root

[root@sqj2015 ~]# echo $PATH

PATH:/root

[root@sqj2015 ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  ls  test

 

上面也说过,PATH=”PATH”:/root 这样赋予是也是临时生效的,但是要注意区别export PATH=”$PATH:/root”设置结果,如下:

[root@sqj2015 ~]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@sqj2015 ~]# PATH=”PATH”:/root

[root@sqj2015 ~]# echo $PATH

PATH:/root

 

[root@sqj2015 ~]# export PATH=$PATH:/root

[root@sqj2015 ~]# echo $PATH

PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root

 

 

“.”代表目录本身,若我把”.”加入到PATH变量中呢?会出现什么样情况呢?

[root@sqj2015 ~]# echo $PATH

PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[root@sqj2015 ~]# mv /bin/ls /root

[root@sqj2015 ~]# ls

-bash: ls: command not found

[root@sqj2015 ~]# export PATH=$PATH:.

[root@sqj2015 ~]# ls

anaconda-ks.cfg  install.log  install.log.syslog  ls  test

[root@sqj2015 ~]# mv /root/ls /home/

[root@sqj2015 ~]# ls

-bash: ls: command not found

[root@sqj2015 ~]# cd /home/

[root@sqj2015 home]# ls

class  jack  ls

 

是不是发现:我们可以在命令所在目录进行命令的执行了.但是由于工作目录并非固定(经常使用cd来切换到不同的目录),因此能够执行的命令有变动(因为灭个目录下面的可执行文件都不相同),这对用户来说并非好事.

另外,若有个坏心用户在/tmp下面做了一个命令,因为/tmp是大家都能够写入的环境,所以他当然可以这么做.假设该命令可能会窃取用户的一些数据,如果你使用root的身份来执行这个命令,那是不是很糟糕?所以,为了安全起见,不建议将”.”加入PATH的查询目录中.

TAGS: ,
三月 14th, 2016

完整的文件名最长可以达到4096个字符,那么你是怎么知道哪个是文件名?哪个是目录名?就是利用斜线(/)来分辨。其实,取得文件名活着目录名称,一般的用途应该是在写程序的时候用来判断使用的。

eg:

[root@sqj2015 ~]# basename /etc/sysconfig/network

network    <==取得文件名

[root@sqj2015 ~]# dirname /etc/sysconfig/network

/etc/sysconfig  <==取得目录名

三月 12th, 2016

         如果你使用过Windows虚拟主机,相信你的网站也遇到过这样的情况.当你访问你的网站的时候,提示Internal server error.这是服务器设置的http友好错误提示,掩盖了真正的错误.但是往往真正的错误有助于我们解决问题.所有有时候我们需要它但是对于Windows虚拟主机客户而言,你是没有权限远程服务器的.所以遇到这种情况,如果有需要可以联系您的主机商设置下.

 

服务器端IIS设置:

          1.“网站”>”ASP”>”调试属性”>”将错误发送到浏览器”的值修改为True .

          2. “网站”>”错误页”>”编辑功能设置”>选择详细错误(D)”

 注:如果不设置上面的第二步,错误同样无法发送到客户端的浏览器上。

 

客户端IE浏览器设置:

  打开IE,”设置”>”Internet选项”>”高级”>取消”显示每个脚本错误的通知”和”显示友好的http错误提示”[重要].

 

三月 10th, 2016

绝对路径:由根目录(/)开始写起的文件名或目录名称.

   eg: /var/spool

相对路径:相对于目前路径的文件名写法. 可以理解为开头不是/就属于相对路径的写法. 

   eg: ./var/spool 或../../var/spool

   这里”.”代表当前的目录,也可以使用./来表示

          ”..”代表上一层目录,也可以使用../来表示

 

举个例子,如下:

  linux 下/var/spool下存在cron mail等目录,如下,我们通过 绝对路径cd /var/spool/cron和cd /var/spool/mail来切换目录. 

[root@sqj2015 ~]# cd /var/spool/cron

[root@sqj2015 cron]# cd /var/spool/mail

[root@sqj2015 mail]# 

若现在已经在mail目录如何使用相对路径切换到cron目录呢?

[root@sqj2015 mail]# cd ../cron

[root@sqj2015 cron]# pwd

/var/spool/cron

 

再假如我还是处于以下目录,怎么通过相对路径切换到/boot.

[root@sqj2015 cron]# pwd

/var/spool/cron

[root@sqj2015 cron]# cd ../../../boot

[root@sqj2015 boot]# pwd

/boot

其实很好理解,要想切换到/boot,相当于先退回/,在切换到boot目录.

[root@sqj2015 boot]# cd /var/spool/cron

[root@sqj2015 cron]# pwd

/var/spool/cron

[root@sqj2015 cron]# cd ../../..

[root@sqj2015 /]# cd /boot

[root@sqj2015 boot]# pwd

/boot

当然上面可以使用更简单的命令cd /boot即可搞定,不过上面只是举个事例.有时候我们为了方面区别,可能把目录定义的很长如第一个目录/home/school/grade1/class1/stud1/ 而另一个目录为/home/school/grade1/class1/stud2,那么我从第一个目录切换到第二目录,cd ../stud2是不是更方面呢?

当然,对于文件的正确性,绝对路径正确度要比较好.

 

有时候会看到类似这样的数据 ./test.sh,代表执行本目录下名为test.sh的文件.

三月 10th, 2016

案例:www.tuimo8.com/admin.php,discuz后台登陆,发现应用模块无法正常显示

首先,应该想到的是:云平台连接问题

操作如下:

         工具>>云平台诊断工具>>图(略)>>这里提示dns解析失败.

本地测试:

cmd>>nslookup>>set type=ns>>tuimo8.com ,如下:

C:\Users\he>nslookup
默认服务器:  dnspai-public-dns.dnspai.com
Address:  101.226.4.6
> set type=ns
> tuimo8.com
服务器:  dnspai-public-dns.dnspai.com
Address:  101.226.4.6

DNS request timed out .

       timeout was 2 seconds .
DNS request timed out .

       timeout was 2 seconds .
*** 请求 dnspai-public-dns.dnspai.com 超时

这里发现DNS均无法正常解析.

 

服务器端:

检查/etc/resolv.conf 配置文件,发现

# Generated by NetworkManager

 nameserver 127.0.0.1

这样服务器根本无法连接外网.可以如下修改:

vi /etc/resolv.conf

# Generated by NetworkManager

#nameserver 127.0.0.1

nameserver 8.8.8.8

nameserver 8.8.4.4

dns设置是及时生效的.

其实到这一步,问题应该已经解决了,你可以再次本地测试下,看DNS能否正常解析.

但是为什么服务器的resolv.conf文件会被修改成这样呢.

在接下来检查/etc/sysconfig/network-scripts/ifcfg-eth1中发现了一条记录:

DNS1=”127.0.0.1”

跟初次检查/etc/resolv.conf 文件记录一样.为了验证,我们做以下测试:

重启网络服务器,来重新加载设置.
service network restart 

再次查看/etc/resolv.conf 文件,发现内容被重置成了

# Generated by NetworkManager

 nameserver 127.0.0.1

 

猜测:

是不是服务器重启,或短暂中断,重新reload的后,/etc/resolv.conf被根据

/etc/sysconfig/network-scripts/ifcfg-eth1进行重置.

做以下操作:

修改/etc/sysconfig/network-scripts/ifcfg-eth1文件:

DNS1=”8.8.8.8”

DNS2=”8.8.4.4”

再次service network restart后,查看/etc/resolv.conf 

# Generated by NetworkManager

search hosteaseservers.com

nameserver 8.8.8.8

nameserver 8.8.4.4

 

注意:

若服务器单网卡添加了多个IP,重启network服务后,你会发现其他IP无法加载,这是执行/scripts/restartsrv_ipaliases来重新加载IP别名.

接下来继续分析问题:

本地测试:

C:\Users\he>nslookup
默认服务器:  dnspai-public-dns.dnspai.com
Address:  101.226.4.6

> set type=ns
> tuimo8.com
服务器:  dnspai-public-dns.dnspai.com
Address:  101.226.4.6

非权威应答:
tuimo8.com      nameserver = ns2.hostease.com
tuimo8.com      nameserver = ns1.hostease.com

DNS解析正常了.

然后在discuz后台,查看应用模块,也可以正常显示了

TAGS: , ,