Linux 系统安全 及 lnmp 安装

/*********************系统盘规划*********************************/

/dev/vda  8G
/dev/vdb 500G

/dev/vda 系统盘 挂载在 /
/dev/vdb 分四个逻辑盘
/dev/vdb1 400G 用作项目应用 挂载 /var/www
/dev/vdb2 60G  用作日志记录 挂载 /var/log
/dev/vdb3 20G  分系统使用的软件其余的工具 例如 一些测试网速的软件就存放安装到这里  挂载 /opt
/dev/vdb4 20G  /home  数据交换

ulimit -SHn 65535
echo "*      soft nofile 65535" >> /etc/security/limits.conf
echo "*      hard nofile 65535" >> /etc/security/limits.conf


/**********sshd  key 登录*******************************************/

yum -y install sshd
echo "ClientAliveInterval  60" >> /etc/ssh/sshd_config
echo "ClientAliveCountMax  60" >> /etc/ssh/sshd_config
echo "PasswordAuthentication no" >> /etc/ssh/sshd_config
echo export TMOUT=1000000 >> /root/.bash_profile
source /root/.bash_profile

service sshd restart
/usr/bin/ssh-keygen  -t rsa XXXXXXX
move XXXXXXX.pub /root/.ssh/authorized_keys


必须将 key 备份到本地 登录要用。

/************sshd 登录编码格式  vim设置 时区设置 关闭selinux*************/
yum install fonts-chinese
locale -a | grep -E  'zh|en_US'


vim /etc/sysconfig/i18n
LANG="zh_CN.gb18030"
LANGUAGE="zh_CN.gb18030:zh_CN.gb2312:zh_CN.gbk:zh_CN.utf8:zh_CN"
SUPPORTED="zh_CN.utf8:zh_CN:zh:en_US.utf8:en_US:en"
SYSFONT="lat0-sun16"
LANG="zh_CN.gb18030"
LANG="en_US.utf8"
source /etc/sysconfig/i18n


vim ~/.vimrc
set termencoding=gbk
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936
set fileencoding=utf-8


vim /etc/profile
export LANG=zh_CN.utf8
export LC_ALL=zh_CN.gb18030


###设置vi, vim的默认的tab、行号显示参数
echo "set tabstop=4" >> /etc/virc
echo "set tabstop=4" >> /etc/vimrc
echo "set number" >> /etc/virc
echo "set number" >> /etc/vimrc
echo "alias vi=vim" >> ~/.bashrc

source ~/.bashrc


##设置正确的时区
cp  /usr/share/zoneinfo/Asia/Chongqing  /etc/localtime
printf 'ZONE="Asia/Chongqing"\nUTC=false\nARC=false' > /etc/sysconfig/clock
###更新系统时间  每天凌晨6点更新系统时间
ntpdate pool.ntp.org
06*** /sbin/ntpdate pool.ntp.org  2>&1 | /bin/logger

设置/etc/sysconfig/selinux文件中
SELINUX=disabled


/*******************************************防火墙***************/
vim /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
#-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#-A INPUT -p icmp -j ACCEPT
#-A INPUT -i lo -j ACCEPT
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
#-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-N whitelist
-A whitelist -s 36.36.68.0/24 -j ACCEPT
-A whitelist -s 223.73.59.0/24 -j ACCEPT
-A whitelist -s 119.130.86.0/24 -j ACCEPT
-A whitelist -s 36.36.68.65  -j ACCEPT
-A whitelist -s 223.73.59.101  -j ACCEPT
-A whitelist -s 119.130.86.201  -j ACCEPT

-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state INVALID,NEW -j LOG
-A INPUT -s 180.0.0.0/8 -j DROP
-A INPUT -p tcp -m tcp --sport 54321 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 20 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 995 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 68 -j ACCEPT
#iptables -A INPUT -p tcp -m tcp --sport 995 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m limit --limit 25/min --limit-burst 200 -j ACCEPT
COMMIT


service iptables start


/*********************禁止root 创建普通用户******************************/
useradd wyj2507
passwd wyj2507 (密码 [email protected])

visudo (99行)
wyj2507 ALL=(ALL) ALL

/*********************禁止root 创建普通用户********************/

/*******************************************修改HOSTS*******************/
vi /etc/hosts
27.0.0.1  localhost  VM_41_93_centos
#使用DNS域名服务器来解析名字
order bind hosts
#一台主机是否存在多个IP
multi on
#如果用逆向解析找出与指定的地址匹配的主机名,对返回的地址进行解析以确认它确实与您查询的地址相配.为了防止“骗取”IP地址
nospoof on

service network restart

/*****************精简开机自启动服务*************************************/
7个运行级别 0 系统停机模式 1 单用户 2 多用户模 3 完整多用户
             4 系统未使用  5 图形化模式  6 重启模式
init 0  1 2 3 4 5 6 设置运行级别
新系统只保留crond,network,syslog(rsyslog),sshd自启动服务 后期加
查看运行级别  runlevel
查看开启的服  chkconfig  --list

#关闭全部服务
for sun in `chkconfig --list|grep 3:启用 | awk '{print $1}'`;
do
	chkconfig --level 3 $sun off
done


#或者
for sun in `chkconfig --list|grep 3:启用|awk '{print $1}'`;
do
	chkconfig --level 3 $sun off
done


#开启需要的服务
for sun in crond rsyslog sshd network
do
	chkconfig --level 3 $sun on
done


#或者需要使用防火墙的话可以开启iptables和ip6tables
for sun in crond rsyslog sshd network iptables ip6tables
do
	chkconfig --level 3 $sun on
done



/******************清理登陆的时候显示的系统及内核版本等***********************/
#查看登陆信息
cat /etc/redhat-release
cat /etc/issue
#清理登陆信息
echo >/etc/redhat-release
echo >/etc/issue

#关闭重启ctl-alt-delete组合键
vi /etc/init/control-alt-delete.conf
#注释掉
#exec /sbin/shutdown -r now "Control-Alt-Deletepressed"


#chattr类似chmod修改文件/目录属性 级别高于chmod
#chattr命令不能保护/、/dev、/tmp、/var目录。lsattr命令是显示chattr命令设置的文件属性。
#锁定关键文件系统
chattr +i /etc/passwd
chattr +i /etc/inittab
chattr +i /etc/group
chattr +i /etc/shadow
chattr +i /etc/gshadow


#删除不必要的系统用户和群组
userdel adm
userdel lp
userdel sync
userdel shutdown
userdel halt
userdel news
userdel uucp
userdel operator
userdel games
userdel gopher
userdel ftp

#删除不必要的群组
groupdel adm
groupdel lp
groupdel news
groupdel uucp
groupdel games
groupdel dip
groupdel pppusers

/******************************************清理登陆的时候显示的系统及内核版本等********************************/


/*****************************内核参数优化*************************/
vi /etc/sysctl.conf  增加以下配置
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog =  32768
net.core.somaxconn = 32768
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.ip_local_port_range = 1024  65535

net.nf_conntrack_max = 25000000  # 如果使用默认参数,容易出现网络丢包 最大会话数
net.netfilter.nf_conntrack_max = 25000000 # 如果使用默认参数,容易出现网络丢包  最大会话数
net.netfilter.nf_conntrack_tcp_timeout_established = 180  #会话连接超时变量  自动清除30分钟的无效链接
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120


#TIME_WAIT 要过段时间释放 Linux 65535个端口
#1 SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击
#2 允许将TIME-WAIT sockets重新用于新的TCP连接
#3 开启TCP连接中TIME-WAIT sockets的快速回收
#4 系統默认的 TIMEOUT 时间
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30


echo "modprobe nf_conntrack" >> /etc/rc.local
echo "modprobe bridge" >> /etc/rc.local
配置生效
# modprobe nf_conntrack
# sysctl  -p
修改iptables启动脚本,在star()函数里面加上
# vi /etc/init.d/iptables
/sbin/sysctl  -p

service iptables restart
iptables -v -n -L
#查看当前的会话
cat /proc/net/nf_conntrack | wc -l

lNMP
/*******************************************依赖包*************/
yum install -y  autoconf curl  curl-devel  cmake
yum install -y sendmail  graphviz
yum install -y gcc gcc-c++
yum -y install python
yum -y install python-dev
yum install libicu-devel
yum install ncurses-libs
yum install ncurses-devel
yum -y install libxslt
yum install libxslt-devel
yum -y install curl-devel
yum -y install e2fsprogs-devel krb5-devel  libidn-devel openssl-devel


wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.4.tar.gz
tar zxvf freetype-2.4.4.tar.gz
./configure
make && make install

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.bz2
tar -jxvf pcre-8.37.tar.bz2
cd pcre-8.37
./configure
make && make install

wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz -O openssl-1.0.1g.tar.gz
tar -zxf openssl-1.0.1g.tar.gz
./config  -fPIC enable-shared
make && make test && make install

wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxf zlib-1.2.8.tar.gz
./configure
make && make install


wget  http://nginx.org/download/nginx-1.8.0.tar.gz
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
## 启用SSL模块 启用nginx状态模块 启用realip模块(将用户IP转发给后端服务器)
./configure --prefix=/usr/local/nginx \
--user=nobody \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--with-http_ssl_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \ #启用realip模块(将用户IP转发给后端服务器)
--with-pcre=/opt/pcre-8.37
--with-openssl=/opt/openssl-1.0.1g \
--with-zlib=/opt/zlib-1.2.8 \



wget http://xmlsoft.org/sources/old/libxml2-2.7.0.tar.gz
wget ftp://ftp.xmlsoft.org/libxml2/libxml2-2.9.2.tar.gz
tar zxvf libxml2-2.9.2.tar.gz
./configure
make && make install

libjpeg
wget ftp://ftp.pl.freebsd.org/vol/rzm1/GraphicsMagick/delegates/libjpeg-6b.tar.gz
tar zxvf libjpeg-6b.tar.gz
./configure && make &&  make install

libpng
wget http://download.sourceforge.net/libpng/libpng-1.6.18.tar.gz
tar zxvf libpng-1.6.18.tar.gz
./configure
sed -i 's/LDFLAGS\=/LDFLAGS\=-L\/usr\/local\/lib/g'	Makefile
sed -i 's/CPPFLAGS\=/CPPFLAGS\=-L\/usr\/local\/include/g'	Makefile
make && make install


wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz
tar zxvf libmcrypt-2.5.7.tar.gz
./configure
make && make install

wget http://curl.haxx.se/download/curl-7.44.0.tar.gz
wget http://www.execve.net/curl/curl-7.44.0.tar.gz
tar zxvf curl-7.44.0.tar.gz
cd /opt/curl-7.44.0
./configure --with-ssl=/opt/openssl-1.0.1g  --with-zlib=/opt/zlib-1.2.8 && make && make install

或者
./configure --with-zlib=/opt/zlib-1.2.8 --with-ssl=/usr/local/ssl && make && make install
--with-openssl=/usr/local/ssl --with-libs=/usr/local/ssl

ldd $(which curl)
ln -s  /usr/local/ssl/lib/libcrypto.so   /usr/local/lib/libcrypto.so.1.0.0

cd /opt/php-5.6.12/ext/curl
/usr/local/php/bin/phpize
./configure -with-php-config=/usr/local/php/bin/php-config --with-curl=/opt/curl-7.44.0
make && make install

编译oci php扩展
rpm -ivh oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient12.1-devel-12.1.0.1.0-1.x86_64.rpm
配置库路径   libsqlplus.so
vim /etc/ld.so.conf
/usr/lib/oracle/12.1/client64/lib/
ldconfig
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export ORACLE_BASE=/usr/lib/oracle/12.1
export PATH=$ORACLE_HOME/bin:$PATH:
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export TNS_ADMIN=$ORACLE_HOME/network/admin
source /etc/profile

cd /opt/php-5.6.12/ext/oci8
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/





/*******************************************Mysql********************************/
mysql
wget http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.5/mysql-5.5.44.tar.gz
groupadd mysql
useradd -r -g mysql mysql
##此处本来只应该装客户端
cd /usr/local/Downloads
tar -zxvf  mysql-5.5.44.tar.gz
cd mysql-5.5.44
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock \
-DMYSQL_USER=mysql \
-DDEFAULT_CHARSET=utf8 \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1
make && make install


mkdir /usr/local/mysql/etc/
cp support-files/my-large.cnf /usr/local/mysql/etc/my.cnf
vim /usr/local/mysql/etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
socket = /var/run/mysqld/mysqld.sock
character_set_server = utf8
slow_query_log = 1
log-error = /usr/local/mysql/log/mysql_error.log
pid-file = /usr/local/mysql/run/mysql.pid
default-storage-engine=MyISAM
user = mysql

open_files_limit    = 65535
max_connections = 5000
max_connect_errors = 6000 #出错锁定host
back_log = 600  #连接队列的最大值
skip-name-resolve #关闭反向域名解析
innodb_file_per_table = 0 #innodb表不共享一个文件

interactive_timeout = 120
wait_timeout = 120 #连接过期秒数
thread_cache_size = 32  #连接词空闲线程数

tmp_table_size = 56M
max_heap_table_size = 56M
long_query_time = 3

log-bin = /var/www/log/binlog
binlog_cache_size = 4M
binlog_format = MIXED
max_binlog_cache_size = 8M
max_binlog_size = 1G


[client]
socket = /var/run/mysqld/mysqld.sock

groupadd mysql
useradd -r -g mysql mysql
cd   /usr/local/mysql
chown -R mysql .  //更改所有文件的所有者为mysql
chgrp -R mysql .  // 更改所有文件的所属组为mysql
2. mysql 初始化安装  执行以下命令    //以mysql的身份执行scripts/mysql_install_db脚本
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql \
--defaults-file=/usr/local/mysql/etc/my.cnf  \
--user=mysql  \
--datadir=/usr/local/mysql/data

chown -R root .   //再将所有文件的所有者改为root
chown -R mysql data   //其中要将data目录及其子文件的所有者改为mysql
chown -R mysql /usr/local/mysql/data
chgrp -R mysql /usr/local/mysql/data

cp /etc/my.cnf /etc/my.cnf_bak
cp /usr/local/mysql/etc/my.cnf /etc/my.cnf

mkdir /var/run/mysqld
chmod -R 777 /var/run/mysqld
mkdir /usr/local/mysql/run
chmod -R 777  /usr/local/mysql/run
/usr/local/mysql/bin/mysqld \
--defaults-file=/usr/local/mysql/etc/my.cnf \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data \
--plugin-dir=/usr/local/mysql/lib/plugin \
--user=mysql \
--log-error=/usr/local/mysql/log/mysql_error.log \
--pid-file=/usr/local/mysql/run/mysql.pid \
--socket=/var/run/mysqld/mysqld.sock \
--port=3306 &

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

客户端
yum install mysql

update user set password=passworD("wyj_2015") where user='root';
update user set host='%' where user='root';
flush privileges;

/*******************************************php*********************************/
wget http://cn2.php.net/distributions/php-5.6.12.tar.gz
opcash  http://php.net/manual/zh/opcache.installation.php
tar zxvf  php-5.6.12.tar.gz
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/conf \
--with-fpm-user=nobody \
--with-fpm-group=nogroup \
--enable-fpm \
--enable-bcmath \
--with-curl \
--with-mcrypt \
--with-freetype-dir \
--enable-mbstring \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-mysql=/usr/local/mysql \
--with-openssl \
--with-imap-ssl \
--with-freetype-dir \
--with-gd \
--with-jpeg-dir=/usr/lib/ \
--with-png-dir=/usr/lib/ \
--enable-exif \
--enable-zip \
--with-zlib \
--with-xsl \
--with-gettext \
--enable-intl \
--with-xmlrpc \
--enable-xml \
--enable-ftp \
--with-pear \
--enable-sockets \
--enable-gd-native-ttf \
--enable-sysvsem \
--enable-sysvshm \
--enable-shmop \
--with-mhash \
--enable-inline-optimization \
--with-curlwrappers \
--enable-mbregex \
--enable-opcache \
make && make install


http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
##最小权限
ROOT="/var/www/html"
chown -R  nobody:nobody $ROOT
chmod a-wxr -R  $ROOT
chmod  u+xr -R  $ROOT
chmod  u+rw -R  $ROOT/serverConfig
chmod  u+rwx -R $ROOT/Runtime
chmod  u+rxw -R $ROOT/Uploads
chmod  u+rw -R  $ROOT/crontab
chmod  u+wrx -R $ROOT/Public
chmod  u+rw -R  $ROOT/serverConfig
chown  -R ftp:ftp $ROOT/ftp
chmod  u+rw -R  $ROOT/ftp


#session
mkdir -p  /usr/local/php/sess/weijiaoyun
chown nobody:nobody /usr/local/php/sess/weijiaoyun
chmod a-wrx -R  /usr/local/php/sess/weijiaoyun
chmod u+wr -R /usr/local/php/sess/weijiaoyun





/*********************************************启动命令***************************/
pkill php-fpm
/usr/local/php/sbin/php-fpm  -c /usr/local/php/etc/php.ini -y  /usr/local/php/etc/php-fpm.conf
chown -R  nobody:nobody /usr/local/php/sess
chown nobody:nobody /dev/shm/sess/weijiaoyun
chmod u+wr -R /usr/local/php/sess/weijiaoyun
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`  #平滑重启 推荐
kill -USR1 `cat /usr/local/php/var/run/php-fpm.pid`  #平滑重启日志 推荐

pkill nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/nginx -s reload
chown -R  nobody:nobody /dev/shm
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` #平滑重启 推荐
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` #平滑重启日志 推荐

pkill mysqld
/usr/local/mysql/bin/mysqld \
--defaults-file=/usr/local/mysql/etc/my.cnf \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data \
--plugin-dir=/usr/local/mysql/lib/plugin \
--user=mysql \
--log-error=/usr/local/mysql/log/mysql_error.log \
--pid-file=/usr/local/mysql/run/mysql.pid \
--socket=/var/run/mysqld/mysqld.sock \
--port=3306 &

不保存历史
sed -i 's/HISTSIZE\=3000/HISTSIZE\=4/g' /etc/profile
source /etc/profile


传输命令
scp -i /root/wjyRsa -P 54321   -r  /var/www/testscp   119.29.38.43:/var/www/
scp -i /root/devRsa -P 54321 -r /opt/curl-7.44.0  119.29.11.29:/opt/curl-7.44.0

/********************************系统工具**************************************/
yum -y install vim
yum install fonts-chinese.noarch

添加库文件路径
vim /etc/ld.so.conf
ldconfig

#滞后
--with-oci8 \

apparmor_parser -R /etc/apparmor.d/usr.sbin.tcpdump
tcpdump -i lo  -w /var/www/logs/php-fpm2
/usr/sbin/tcpdump -i eth0  -w  /var/www/logs/tcpdump7

yum -y install sysstat
sar -n EDEV 2 10
sar -n SOCK 2 10
sar -r   6      #men
sar -u   6       #cpu

top -p pid
P:按%CPU使用率排行
T:按MITE+排行
M:按%MEM排行

Linux查看网络端口对应的程序
lsof -i :80
netstat -a |grep LISTEN |grep -v unix

ps -aux  | sort -k4nr
ps -aux | grep -E   "sap|USER"

#innode
df -i
#innode 大小
dumpe2fs -h /dev/vdb2 | grep "Inode size"
查看 进程的详细内存
pmap -q php-fpmp的pid
/**********************配置文件备份*******************************/
/usr/local/mysql/etc/my.cnf
[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
[mysqld]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
skip-external-locking
key_buffer_size = 256M
max_allowed_packet = 1M
table_open_cache = 256
sort_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 16M
query_cache_limit = 2M
query_cache_min_res_unit = 2k
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
socket = /var/run/mysqld/mysqld.sock
character_set_server = utf8
slow_query_log = 1
log-error = /usr/local/mysql/log/mysql_error.log
pid-file = /usr/local/mysql/run/mysql.pid
default-storage-engine=MyISAM
user = mysql
thread_concurrency = 2
open_files_limit    = 65535
max_connections = 5000
max_connect_errors = 6000
back_log = 600
skip-name-resolve
innodb_file_per_table = 0
interactive_timeout = 120
wait_timeout = 120

log-bin = /var/www/log/binlog
binlog_cache_size = 4M
binlog_format = MIXED
max_binlog_cache_size = 8M
max_binlog_size = 1G



cat  /usr/local/php/etc/php.ini
[PHP]
engine = On
short_open_tag = Off
asp_tags = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
open_basedir = "/tmp/:/var/www/html:/var/www/task/cli/:/var/www/tasks/test_data/";
disable_functions =
disable_classes =
zend.enable_gc = On
expose_php = On
max_execution_time = 30
max_input_time = 60
memory_limit = 256M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 100M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
doc_root =
user_dir =
enable_dl = Off
cgi.fix_pathinfo=1
file_uploads = On
upload_max_filesize = 100M
max_file_uploads = 20
upload_tmp_dir=/tmp
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[opcache]
zend_extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

[Session]
session.save_handler = files
session.save_path = "1;/usr/local/php/sess/weijiaoyun"
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /

[curl]
extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/curl.so"


cat  /usr/local/php/etc/php-fpm.conf  | grep -v '^;' | grep -v '^$'| less
[global]
error_log = /var/log/php/php-fpm.log
log_level = notice
rlimit_files = 65535
rlimit_core = 0
pid = run/php-fpm.pid
[www]
user = nobody
group = nobody
listen = 127.0.0.1:9000

listen.allowed_clients = 127.0.0.1
pm = static
pm.max_children = 50
pm.start_servers = 40
pm.min_spare_servers = 5
pm.max_spare_servers = 10

pm.max_requests = 1000
pm.status_path = /status

request_terminate_timeout = 30
rlimit_files = 655360
rlimit_core = 0
security.limit_extensions = .php .html
php_admin_value['date.timezone'] = 'Asia/Shanghai'

cat  /usr/local/nginx/conf/nginx.conf  | grep -v '^#' | grep -v '^$'| less
user  nobody nobody;
worker_processes  2;
worker_rlimit_nofile 65353;
events {
        worker_connections  65353;
        use epoll;
}
http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 128k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 32k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types       text/plain application/x-javascript text/css application/xml;
        gzip_vary on;
        gzip_disable "MSIE [1-6].";
        server_names_hash_bucket_size 128;
        client_max_body_size     100m;
        client_header_buffer_size 256k;
        large_client_header_buffers 4 256k;
        include vhost/*.conf;
}


cat  /usr/local/nginx/conf/vhost/dev.xcoach.cn.conf  | grep -v '^#' | grep -v '^$'| less
server {
        listen     80;
        server_name 119.29.11.29;
        root /var/www/html;
        index index.php index.html;
        large_client_header_buffers 4 16k;
        client_max_body_size 300m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        proxy_buffer_size 64k;
        proxy_buffers   4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        location / {
                index  index.htm index.html index.php;
                if (!-e $request_filename) {
                        rewrite  ^/(.*)$  /index.php/$1  last;
                        break;
                }
        }
        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_read_timeout 150;
                include /usr/local/nginx/conf/fastcgi_params;
                set $path_info "";
                set $real_script_name $fastcgi_script_name;
                if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                        set $real_script_name $1;
                        set $path_info $2;
                }
                fastcgi_param SCRIPT_FILENAME /var/www/html/$real_script_name;
                fastcgi_param SCRIPT_NAME $real_script_name;
                fastcgi_param PATH_INFO $path_info;
        }
        location /ngstatus {
                stub_status on;
                access_log off;
        }
        location /status {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                include fastcgi.conf;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
                expires      30d;
        }
          location ~ .*\.(js|css)?$ {
                expires      12h;
        }
        location ~* \.(htaccess|inc|conf)$ {
                deny all;
        }
        location ~  /(sql|Data|Uploads|ftp)/.*\.(php|php5)?$ {
                deny all;
        }
        #location ^~ /Runtime {
        #       deny all;
        #}
        access_log  logs/dev.xcoach.cn.access.log;
        error_log   logs/dev.xcoach.cn.error.log;
}


/*************************************定时程序***************************/
* * * * * /bin/sh  /var/www/tasks/defend_ddos/defend_ddos.sh &
*/10 * * * * /var/www/tasks/ftp/ftp_get.sh  "school"  "username"  "password"  "/var/www/html/ftp/userdata"  "/userdata/*.data" &
*/10 * * * * /usr/local/php/bin/php -q /var/www/tasks/cli/cliApiBandRelation.php &
#59 * * * * /var/www/tasks/data_docking/doching.sh 121.41.74.208 youanbao PPla@0155   yabsz  3306 &
*/1 * * * * /usr/local//qcloud/stargate/admin/start.sh > /dev/null 2>&1 &
0 0 * * * bash /var/www/task/nglog_bak/nglog_bak.sh &


/*************************************************定时程序***********************************************************/


/***************************************其他************************/
保证每天多少PV的并发连接数的计算公式是:
并发连接数= PV / 统计时间(一天是86400) * 页面衍生连接次数 * http响应时间 * 因数(5) / web服务器数量
保证4千万PV的并发连接数:
(40000000PV / 86400秒 * 10个派生连接数 * 5秒内响应 * 5倍峰值) / 6台Web服务器 = 19290连接数

10PV的并发连接数:
(100000PV / 86400秒 * 10个派生连接数 * 5秒内响应 * 5倍峰值) / 1台Web服务器 = 289连接数

ab.exe -n2000 -kc2000

svn
svn delete svn://119.29.11.29/weijiaoyun/Public    -m   "delete  Public"
svn import -m  'reimport' /var/www/html/Public  svn://119.29.11.29/weijiaoyun/Public

vim ignore.txt
Application/User/Conf/config.php
Application/Common/Conf/config.php
Runtime
Uploads
svn propset svn:ignore -F ignore.txt .
svn proplist
svn propget  svn:ignore

ngnix无法打印日志 tail -f 没有磁盘空间 增大max_user_watches  参考  http://www.51know.info/system_security/inotify.html
echo '17000'  >  cat /proc/sys/fs/inotify/max_user_watches

批量替换  参考 http://php.net/manual/zh/language.exceptions.php (jim at anderos dot com)
grep  'throw new Exception' /var/www/ceshi/   -rl  | xargs sed -i 's/throw new Exception/throw new \\Exception/g'
sed -i 's/throw new Exception/throw new \\Exception/g' `grep  'throw new Exception' /var/www/ceshi/   -rl`

错误日志分析
error_log="/usr/local/nginx/logs/weijiaoyun_error.log"

deny_ip_arr=`cat  $error_log | grep -iE  "referrer: \"http:\/\/123.249.24.233\/POST_ip_port.phpAccep" | sed  's/\(.*\)\(client: \)\(.*\)\(, server:.*\)/\3/g'`
for ip in $deny_ip_arr
do
  exist=`cat /etc/sysconfig/iptables| grep  $ip`
  if [ -z "$exist" ]
  then
     /sbin/iptables -A INPUT -s  $ip -j DROP
     /sbin/iptables -I INPUT -s  $ip -j DROP
     /sbin/iptables-save > /etc/sysconfig/iptables
  fi
done

PHP-FPM master进程可以理解以下信号
INT, TERM 立刻终止  QUIT 平滑终止  USR1 重新打开日志文件   USR2平滑重载所有worker进程并重新载入配置和二进制模块
php-fpm 关闭:kill -INT `cat /usr/local/php/var/run/php-fpm.pid`
php-fpm 重启:kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
/**********************************************************其他******************************************************/

/****************服务优化 只开启必要的服务,提高安全性和性能********************/
###以下服务是必须的必须开启 其他可以尝试关闭
安装完Linux之后,以下服务是必须的必须开启,没列出的服务可关闭
acpid   #高级控制电源管理接口
crond   #定时执行任务
haldaemon  #必须开启,否则可能导致控制台键盘鼠标无法使用
hidd       #同上
irqbalance   #支持多cpu中断,必须开启
kudzu       #检测硬件变化时自动进行配置
lvm2-monitor  #用于监测LVM状态
messagebus   #Linux系统进程间通讯的关键服务
mdmonitor    #监测软RAID健康状态  即使没有使用软RAID, 也强烈建议启用此服务
mdmpd       #同上,即使没有多路径存储设备,也强烈建议启用之
network       #网络支持
readahead_early  #预先加载特定的应用程序到内存中以提供性能
readahead_later  #同上
smartd          #硬盘故障自动检测
sshd
syslog
klogd           #如果服务列表中存在,则必须开启
提示:配置服务可使用ntsysv工具,比较方便
其它强烈建议开启的服务  iptables
/**********************************服务优化 只开启必要的服务,提高安全性和性能*************************************/

/*************************************日志************************************/
/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
dmesg | grep IDE  # 查看启动时IDE设备检测状况
route -n  # 查看路由表

/**************************************参考***********************/
生产服务器环境最小化安装后 Centos 6.5优化配置备忘  http://zhangxugg-163-com.iteye.com/blog/1843724
Centos 6.5优化配置 http://www.lvtao.net/server/centos-server-setup.html

inotify: http://www.51know.info/system_security/inotify.html
Linux(Centos )的网络内核参数优化来提高服务器并发处理能力 http://blog.csdn.net/shaobingj126/article/details/8549494
日志 :http://www.centoscn.com/CentosSecurity/CentosSafe/2014/0304/2490.html

linux下使用tc模拟网络延迟和丢包 http://blog.csdn.net/duanbeibei/article/details/41250029
/*****************************参考***********************************/

猜你喜欢

转载自coollyj.iteye.com/blog/2238689