Alan Hou的个人博客

Linux常见问题

MongoDB transparent_hugepage报错
如何判断服务器是否支持Rewrite
如何安装dig
CentOS如何设置yum软件镜像源
IP配置相关
防火墙相关
域名相关
FTP配置问题(VMware)
常见操作

WeTransfer 下载

WeTransfer在国内的下载速度真的很慢,关键是大文件还容易出现中断的情况,这时可以利用一个服务器的带宽,比如亲测阿里云ECS就很快速,通过 wget 先进行下载再下载至本地

测速

配置FTP

yum install vsftpd -y
配置vsftpd.(可参考http://www.server-world.info/en/note?os=CentOS_7&p=ftp)
配置vsftpd主配置文件路径:/etc/vsftpd/vsftpd.conf
禁止匿名访问:anonymous_enable=NO
限制ftp用户访问家目录外的目录:chroot_list_enable=YES
限制ftp用户访问家目录外的目录用户列表:chroot_list_file=/etc/vsftpd/chroot_list.
开启被动模式,更好支持FlashFxp等ftp工具
pasv_enable=YES
pasv_min_port=20000 #开放的端口
pasv_max_port=20100
allow_writeable_chroot=YES #解决500 OOPS: vsftpd: refusing to run with writable root inside chroot()

/etc/vsftpd/vsftpd.conf 配置见图,注意红色部分.

配置chroot_list.
把新增的ftp用户添加进来,每个用户为一行.
#vi /etc/vsftpd/chroot_list 回车进入编辑chroot_list状态.

useradd -d /var/www/html/ -g ftp -s /sbin/nologin my_user_name
passwd my_user_name

防火墙配置路径:/etc/sysconfig/iptables
开放21端口:-A INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
开发20000-20100端口:-A INPUT -p tcp –dport 20000:20100 -j ACCEPT

重启防火墙:#service iptables restart;
重启vsftpd服务器:#service vsftpd start

设置用户或群的权限

Yum安装相关

查看已安装软件yum list installed

查看更新yum list updates

更新软件yum update xxx

删除软件yum remove xxx

删除软件及所有文件yum erase xxx

有时由于软件不同软件对相同的包依赖出现被覆盖的问题(broken dependencies),可尝试yum clean all,还不行的话yum deplist xxx查看所需的包来进行针对性的安装,此外还可以yum update –skip-broken来绕过问题

yum repolist查看安装镜像源,具体文件在/etc/yum.repos.d/目录下

此外还可以进行手动安装,下载压缩包,解压进入安装包目录,

yum安装如果想要保留安装文件可以通过将/etc/yum.conf中的keepcache值设为1来实现:

 

邮件相关

postfix发送邮件出现如下报错

这通常与原生的sendmail有关,执行以下命令即可修复

导出文件中email正则演示:

 

MongoDB transparent_hugepage报错

解决方法:
在/etc/rc.local中加入如下代码:

执行source /etc/rc.local使设置生效即要

设置Tomcat开机启动

1.修改/etc/rc.d/rc.local
/etc/rc.d/rc.local

2.添加下面两行脚本,记住是两行,仅仅第二行不行,必须加第一行。在/etc/rc.d/rc.local文件最后加上:
export JAVA_HOME=/usr/java/jdk1.7.0_60
/usr/local/tomcat/bin/startup.sh start

说明:/usr/java/jdk1.7.0_60 是jdk安装目录
/usr/local/tomcat是tomcat安装的目录
3.注意:修改rc.local文件为可执行
chmod +x  rc.local

Apache配置Tomcat去端口号8080

有的时候我们在同一台Linux主机上配置了httpd和tomcat,但访问tomcat中的应用会带有8080端口这个小尾巴,一种方法是在Apache的配置文件中添加如下内容(以m.alanhou.org域名为例):

如何判断服务器是否支持Rewrite

能过PHP代码查看:

另一种是能过phpinfo()函数查看mod_rewrite是否出现在Loaded Modules

如何安装dig

dig(域信息搜索器)命令是个用于询问 DNS 域名服务器的灵活的工具。但在默认情况下使用dig命令会出现

-bash: dig: command not found

以Centos为例,只需要执行yum install bind-utils -y进行安装就可以正常使用了。

CentOS如何设置yum软件镜像源

软件镜像源存储在/etc/yum.repos.d/CentOS-Base.repo文件中,这里以设置阿里去为例:

首先备份原文件

配置文件源(以CentOS 6为例)

生成缓存即可

 

IP配置相关

修改IP方法

vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改主机名
vi /etc/sysconfig/network

主机名和IP映射关系
vi /etc/hosts

 

防火墙相关

关闭防火墙
service iptables stop
查看防火墙状态
service iptables status
查看开机防火墙状态:
chkconfig iptables –list
开机关闭服务
chkconfig iptables off

有时发现安装httpd且启动了服务后仍然无法在浏览器中访问,这基本上是防火墙中没有开放80端口,执行如下指令即可:

 

域名相关

dig +trace http://www.alanhou.org可用于分析域名解析,常用参数除+trace外还有-t type和-x

whois alanhou.org查询域名管理者相关信息,若无法执行安装jwhois(yum install jwhois -y)

host -a alanhou.org

nslookup alanhou.org

/etc/resolv.conf

FTP配置问题(VMware)

FTP的服务相对比较简单,以CentOS为例,直接输入yum install vsftpd -y即可完成安装。笔者这里使用虚拟工具VMware进行测试。

通过FileZilla连接出现Error: Failed to retrieve directory listing报错,解决方法:

1.通过getenforce如果显示为enforcing,表示SELinux被开启,键入命令setsebool ftp_home_dir 1(网上还有说要执行setsebool ftpd_disable_trans 1,但在笔者使用的Linux版本中通过getsebool -a并查到相关服务,还可通过sestatus -b | grep ftp查看ftp相关部分),重启 ftp:service vsftpd restart, 并停用防火墙iptables(service iptables stop),可正常登录ftp

2.对于线下测试环境而言关闭iptables自然没有什么大的影响,但线上生产环境显然不能这么做,所以还是要配置一下iptables文件开通ftp权限,找到/etc/sysconfig/iptables文件并添加21端口访问权限:

-A INPUT -p tcp -m state –state NEW -m tcp –dport 21 -j ACCEPT

找到/etc/sysconfig/iptables-config文件修改对应部分的内容为:

IPTABLES_MODULES=”ip_conntrack_ftp”

保存并重启
service iptables save
service iptables restart

另外很多大的空间商默认都是关闭SELinux的,方法也很简单,找到/etc/selinux/config文件修改相应的内容如下:

SELINUX=disabled

reboot 重启生效

使用getenforce查看此时显示为Disabled表示已关闭

扩展内容:

a.访问/etc/vsftpd/vsftpd.conf 设置取消匿名
anonymous_enable=NO

b.新建一个文件/etc/vsftpd/chroot_list 并在其中填写用户
然后访问/etc/vsftpd/vsftpd.conf设置允许本地用户

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

c.控制访问权限

主要是两个文件:/etc/hosts.allow和/etc/hosts.deny。首先查看/etc/hosts.allow,如果匹配到一个条目,将不在读取下面的。如果在/etc/hosts.allow没有匹配到条目,则读取/etc/hosts.deny,如果匹配,则拒绝,如果不匹配,则默认允许所有

d.配置ip(假定一个网卡)

/etc/sysconfig/network-scripts/ifcfg-eth0示例文件内容如下:

DEVICE=eth0
HWADDR=该网卡的MAC地址
TYPE=Ethernet
BOOTPROTO=”static” #此处为DHCP将动态分配ip地址
#BOOTPROTO=dhcp
UUID= a698839a-d72b-430f-8c77-d84abdc90519
ONBOOT=yes
#NM_CONTROLLED=yes
NETMASK=255.255.255.0
IPADDR=192.168.*.*
IPV6INIT=no
GATEWAY=192.168.*.*

e.禁止使用ftp服务的用户在如下文件中配置

/etc/vsftpd/ftpusers

/etc/vsftpd/user_list

常用命令

du -sh /etc 目录总大小
df -hT /etc 特定分区信息

快捷键

Ctrl + a  移到行首
Ctrl + e  移到行末
Ctrl + r  查看之前执行的命令

查找最近修改的文件

rpm的常用参数组合说明

-ivh:安装显示安装进度–install–verbose–hash
-Uvh:升级软件包–Update;
-qpl:列出RPM软件包内的文件信息[Query Package list];
-qpi:列出RPM软件包的描述信息[Query Package install package(s)];
-qf:查找指定文件属于哪个RPM软件包[Query File];
-Va:校验所有的RPM软件包,查找丢失的文件[View Lost];
-e:删除包

查找当前目录下.phtml文件中,最近30分钟内修改过的文件。

find . -name ‘*.phtml’ -type f -mmin -30

查找当前目录下.phtml文件中,最近30分钟内修改过的文件,的详细情况。

find . -name ‘*.phtml’ -type f -mmin -30 -ls

查找当前目录下,最近1天内修改过的常规文件

find . -type f -mtime -1

查找当前目录下,最近1天前(2天内)修改过的常规文件

find . -type f -mtime +1

jobs -l查看后台运行程序(后台运行在指令后加上&)
HISTSIZE 环境变量控制保留的历史记录数量
history -c清除历史记录

Cron job

指定用户(apache)执行cron job

crontab -uapache -e

设定执行的文件和频率

获取本机ip

或者

Apache站点仅允许指定IP访问

CentOS上VNC安装配置

安装

服务器端

yum install vnc-server -y
yum groupinstall “Desktop” -y    #桌面环境

添加用户、设置密码

useradd vnc

passwd vnc

常见操作

重启网络(service network restart)时出现报错

Shutting down interface eth0: Device state: 3 (disconnected)

分析原因

  1. NetworkManager是是分发网络服务请求的一个进程,是一个网络管理的工具。。
  2. 由于启动了NetworkManager服务导致的 ,netwoekmanager会和network冲突导致resolv.conf被还原

解决方法:

service NetworkManager stop关闭服务

要想开机即关闭chkconfig NetworkManager off

查看最近重启记录

last reboot | head -2

last -x | grep shutdown

修改root@后的名称

打开/etc/sysconfig/network更改HOSTNAME后面的值,然后重启生效。本方法同样可用于解决如下报错:

httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.0.1 for ServerName

服务器终端命令背景和字体颜色

setterm inversescreen on命令设置服务器白背景黑字,setterm inversescreen off关闭设置恢复默认黑底白字

另一种方法是同时设置背景和前景色:setterm -background white和setterm -foreground black,但这个方法有个明显的缺点,就时在输入第二条命令时会看不到命令行内容

添加用户到组并为组赋权限

usermod -a -G apache ftp

chmod -R g+rw /var/www/html

解决中文乱码问题

第一步先查看所使用的客户端是否使用UTF-8或需使用的编码

echo $LANG或export查看当前使用的系统语言

通过LANG=zh_CN.UTF-8或export LANG=”zh_CN.UTF-8″将当前=语言临时设置为中文,locale命令查看是否支持中文,若未出现zh_CN.UTF-8包请输入yum groupinstall chinese-support安装中文语言包

永久修改需编辑/etc/sysconfig/i18n

task blocked for more than 120 seconds报错

原因:linux会设置40%的可用内存用来做系统cache,当flush数据时这40%内存中的数据由于和IO同步问题导致超时(120s),所将40%减小到10%,解决方法在文件/etc/sysctl.conf中加入

vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

如何为Linux主机添加多IP?

以为eth0网卡添加192.168.1.22为例,操作代码如下:

/sbin/ifconfig eth0:1 192.168.1.22 broadcast 192.168.1.255 netmask 255.255.255.0 up
/sbin/route add -host 192.168.1.22 dev eth0:1

想要永久生效,只需将以上代码加入/etc/rc.local中即可

setup错误
采用minimal的方式安装会发现用不了setup指令

-bash: setup: command not found</span>
#根据需要选择安装
yum install setuptool -y</span>

yum install system-config-network* -y
yum install system-config-firewall* -y
yum install system-config-securitylevel-tui -y
yum install system-config-keyboard -y
yum install ntsysv -y</span

SSH登录问题

No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)

SSH无法正常登录,查看/etc/ssh/sshd_config文件,修改PasswordAuthentication为yes,然后重启SSH服务,service sshd restart。

Linux进程Signal详解

Signal Name Description
1 HUP Hangs up
2 INT Interrupts
3 QUIT Stops running
9 KILL Unconditionally terminates
11 SEGV Produces segment violation
15 TERM Terminates if possible
17 STOP Stops unconditionally, but doesn’t terminate
18 TSTP Stops or pauses, but continues to run in background
19 CONT Resumes execution after STOP or TSTP
退出移动版