客户反馈执行apachectl start后无报错信息,但是网站无法访问。
第一反应是防火墙屏蔽了httpd的端口或者SELinux问题。登录服务器查看:
[root@db ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@db ~]# iptables -L -n -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination
[root@db ~]# grep -i selinux /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of three two values: SELINUXTYPE=targeted
发现防火墙和SELinux并未做限制,然后查看httpd的启动状况
[root@db ~]# ps -ef|grep httpd|grep -v grep|wc -l 0 [root@db ~]# ss -lnltp|grep 80
发现httpd未启动,这时尝试启动httpd,发现没有前台报错,并且服务无法启动,应该是Apache内部问题,这时查看Apache错误日志,发现有如下报错信息:
No space left on device : mod_rewrite : could not create rewrite_log_lock Configuration Failed
看到报错,感觉是磁盘空间被耗尽导致的,于是查了一下inode和磁盘空间,发现磁盘空间和inode还有很多剩余。
由于Linux的磁盘空间由三部分组成:物理空间(block)、索引节点空间(inode)和信号量(Semaphore)组成。
Linux信号量是一种锁机制,用于协调系统上的进程间互斥的访问临界资源,确保某种共享资源不被多个进程同时访问。有两种实现标准,system v和POSIX,大多数系统都是使用的这两种标准。这两种标准系统调用的方式如下:
[root@db ~]# cat /proc/sys/kernel/sem 250 32000 32 128
含义如下:
SEMMSL: 此参数用于控制每个信号集的最大信号数
SEMMNS: 此参数用于控制整个Linux系统中信号(不是信号集)的最大数量
SEMOPM:此参数用于控制每个semop系统调用可以执行的信号操作数
SEMMNI:此内核参数用于控制整个Linux系统中信号集的最大数量
[root@db ~]# ipcs -s|grep daemon
原文:https://www.cnblogs.com/zh-dream/p/13296264.html