UNIX目录结构的来历

UNIX(包含Linux)的初学者,常常会很困惑,不明白目录结构的含义何在。

举例来说,根目录下面有一个子目录/bin,用于存放二进制程序。但是,/usr子目录下面还有/usr/bin,以及/usr/local/bin,也用于存放二进制程序;某些系统甚至还有/opt/bin。它们有何区别?

阅读更多

为Nginx开启SSI模块以支持SHTML解析

SSI 是 Server Side Include 的首字母缩略词。包含有嵌入式服务器方包含命令的 HTML 文本。在被传送给浏览器之前,服务器会对 SHTML 文档进行完全地读取、分析以及修改。

在 Nginx 中,开启 SSI 支持非常简单,通过向 nginx.conf 中添加几行设置命令即可实现。

将下面的3行代码添加到 nginx.conf 文件的 http{} 段中,以开启 SSI 模块的支持:

ssi on;
ssi_silent_errors on;
ssi_types text/shtml;

阳光部落原创,更多内容请访问http://www.sunbloger.com/

PHP-FPM启动报“fpm_unix_conf_wp(), line 124”错误解决方法

启动 PHP-FPM 时,如遇到下面这个错误信息:

Starting php_fpm Feb 07 10:52:35.508786 [ERROR] fpm_unix_conf_wp(), line 124: please specify user and group other than root, pool ‘default’

解决方法:

打开 php-fpm.conf 配置文件,找到下面这个部分:

Unix user of processes
<!–     <value name=”user”>nobody</value>   –>
Unix group of processes
<!–     <value name=”group”>nobody</value>   –>

去掉注释,并将user和group改为实际实用的用户和组即可。

修复PHP 5.2.x的Hash漏洞

近来爆发出来的Hash DOS漏洞威力十足,杀伤力很大。随便一台服务器就可以发起DDOS攻击,导致CPU长期占用100%,从而使服务器宕机。下面给出PHP 5.2.x的修复方法:

  • 下载补丁:https://github.com/laruence/laruence.github.com/tree/master/php-5.2-max-input-vars,下载对应的补丁版本;
  • 进入PHP目录,执行patch -p1 < php-5.2.*-max-input-vars.patch,打上补丁;
  • 重新编译安装,makemake install即可。

备注:最新发布的PHP 5.3.9和后续版本已经修复了这一漏洞。

Linux防火墙应用

随着互联网的飞速发展,毫无疑问,互联网上的安全,操作系统平台的安全也逐渐成为人们所关心的问题。而许多网络服务器、工作站所采用的平台为Linux/UNIX平台。Linux平台作为一个安全性、稳定性比较高的操作系统也被应用到了更多领域。本文带领大家探讨了Linux系统管理员应该掌握的20个防火墙应用技巧。

广为人知的iptables命令行

Netfilter作为Linux内置的主机防火墙,它可以使用iptables命令处理IPv4协议,也可以使用ip6tables命令处理IPv6协议。在iptables之前,Linux 2.2中使用ipchains来配置防火墙,Linux 2.0中则使用ipfwadm,它基于BSD的ipfw命令实现。

阅读更多

Linux系统中自动备份MySQL数据库的Shell脚本

下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行。在脚本中可设置需要备份的数据库表清单,并且会将备份文件通过gzip压缩。需要注意的是,这段脚本仅适用数据一致性要求不高的环境。

#!/bin/bash
mysql_pwd="password"
mysql_dump="/usr/local/mysql/bin/mysqldump"
cur_year=$(date +"%Y")
cur_month=$(date +"%m")
cur_day=$(date +"%d")
dump_path="/usr/backup/mysql/$cur_year-$cur_month/$cur_day"
arr_tables=(
"table_1"
"table_2"
"table_3"
)
if [ ! -d "$dump_path" ]; then
mkdir -p "$dump_path"
fi
for cur_table in ${arr_tables[*]}; do
$mysql_dump -uroot -p$mysql_pwd --opt mydb $cur_table | gzip > $dump_path/$cur_table.sql.gz
done

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

Nginx日志切割方法

这是一段Linux的Shell脚本,用于切割Nginx的日志,可通过crontab设置每日零点执行这段脚本实现自动切割。

#!/bin/bash
# This script run at 00:00

log_year=$(date -d "yesterday" +"%Y")
log_month=$(date -d "yesterday" +"%m")
log_day=$(date -d "yesterday" +"%d")

# The Nginx logs path
logs_path="/usr/local/nginx/logs/"
save_path="/usr/local/nginx/logs/$log_year-$log_month/"

if [ ! -d "$save_path" ]; then
mkdir -p "$save_path"
fi

mv ${logs_path}access.log ${save_path}access_$log_year$log_month$log_day.log
mv ${logs_path}error.log ${save_path}error_$log_year$log_month$log_day.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

阳光部落原创,更多内容请访问 http://www.sunbloger.com/

Nginx出现504 Gateway Time-out的解决方案

使用Nginx作为WEB服务器时,经常会遇到504 Gateway Time-out的错误提示。经过研究,基本可以确定多数情况下这个错误与Nginx本身无关,问题的根源在于Nginx将PHP的解析提交给后端php-fpm处理的过程中,由于fastcgi参数配置不当造成的超时等一系列的问题。

通过查询相关资料,总结了fastcgi配置参数的调整方案,供大家参考,详细如下:

阅读更多

Nginx分配CPU进程参数worker_cpu_affinity说明

对于具有多颗CPU的服务器,Nginx通过设置worker_cpu_affinity参数,即可轻松实现控制进程平均分配到多颗CPU上。

例如:服务器上安装有2颗双核CPU(在系统中显示CPU数量应该是4个)

例1:设定Nginx启用4个进程,那么可以写为:

worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;

阅读更多