Linux 系统安全 及 lnmp 安装

/*********************系统盘规划*********************************/ 
伦理片   http://www.dotdy.com/
/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  数据交换 

Java代码   收藏代码
  1. ulimit -SHn 65535  
  2. echo "*      soft nofile 65535" >> /etc/security/limits.conf  
  3. echo "*      hard nofile 65535" >> /etc/security/limits.conf  


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

Java代码   收藏代码
  1. yum -y install sshd  
  2. echo "ClientAliveInterval  60" >> /etc/ssh/sshd_config  
  3. echo "ClientAliveCountMax  60" >> /etc/ssh/sshd_config  
  4. echo "PasswordAuthentication no" >> /etc/ssh/sshd_config  
  5. echo export TMOUT=1000000 >> /root/.bash_profile  
  6. source /root/.bash_profile  
  7.   
  8. service sshd restart  
  9. /usr/bin/ssh-keygen  -t rsa XXXXXXX  
  10. move XXXXXXX.pub /root/.ssh/authorized_keys  


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

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


vim /etc/sysconfig/i18n 
Java代码   收藏代码
  1. LANG="zh_CN.gb18030"  
  2. LANGUAGE="zh_CN.gb18030:zh_CN.gb2312:zh_CN.gbk:zh_CN.utf8:zh_CN"  
  3. SUPPORTED="zh_CN.utf8:zh_CN:zh:en_US.utf8:en_US:en"  
  4. SYSFONT="lat0-sun16"  
  5. LANG="zh_CN.gb18030"  
  6. LANG="en_US.utf8"  
  7. source /etc/sysconfig/i18n  


vim ~/.vimrc 
Java代码   收藏代码
  1. set termencoding=gbk  
  2. set encoding=utf-8  
  3. set fileencodings=ucs-bom,utf-8,cp936  
  4. set fileencoding=utf-8  


vim /etc/profile 
Java代码   收藏代码
  1. export LANG=zh_CN.utf8  
  2. export LC_ALL=zh_CN.gb18030  


###设置vi, vim的默认的tab、行号显示参数 
Java代码   收藏代码
  1. echo "set tabstop=4" >> /etc/virc  
  2. echo "set tabstop=4" >> /etc/vimrc  
  3. echo "set number" >> /etc/virc  
  4. echo "set number" >> /etc/vimrc  
  5. echo "alias vi=vim" >> ~/.bashrc  

Java代码   收藏代码
  1. source ~/.bashrc  


##设置正确的时区 
Java代码   收藏代码
  1. cp  /usr/share/zoneinfo/Asia/Chongqing  /etc/localtime  
  2. printf 'ZONE="Asia/Chongqing"\nUTC=false\nARC=false' > /etc/sysconfig/clock  
  3. ###更新系统时间  每天凌晨6点更新系统时间  
  4. ntpdate pool.ntp.org  
  5. 06*** /sbin/ntpdate pool.ntp.org  2>&1 | /bin/logger  
  6.   
  7. 设置/etc/sysconfig/selinux文件中  
  8. SELINUX=disabled  


/*******************************************防火墙***************/ 
vim /etc/sysconfig/iptables 
Java代码   收藏代码
  1. # Firewall configuration written by system-config-firewall  
  2. # Manual customization of this file is not recommended.  
  3. *filter  
  4. :INPUT ACCEPT [0:0]  
  5. :FORWARD ACCEPT [0:0]  
  6. :OUTPUT ACCEPT [0:0]  
  7. #-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  
  8. #-A INPUT -p icmp -j ACCEPT  
  9. #-A INPUT -i lo -j ACCEPT  
  10. #-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT  
  11. #-A INPUT -j REJECT --reject-with icmp-host-prohibited  
  12. #-A FORWARD -j REJECT --reject-with icmp-host-prohibited  
  13. -N whitelist  
  14. -A whitelist -s 36.36.68.0/24 -j ACCEPT  
  15. -A whitelist -s 223.73.59.0/24 -j ACCEPT  
  16. -A whitelist -s 119.130.86.0/24 -j ACCEPT  
  17. -A whitelist -s 36.36.68.65  -j ACCEPT  
  18. -A whitelist -s 223.73.59.101  -j ACCEPT  
  19. -A whitelist -s 119.130.86.201  -j ACCEPT  
  20.   
  21. -A INPUT -i lo -j ACCEPT  
  22. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  
  23. -A INPUT -m state --state INVALID,NEW -j LOG  
  24. -A INPUT -s 180.0.0.0/8 -j DROP  
  25. -A INPUT -p tcp -m tcp --sport 54321 -j ACCEPT  
  26. -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT  
  27. -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT  
  28. -A INPUT -p tcp -m tcp --sport 20 -j ACCEPT  
  29. -A INPUT -p tcp -m tcp --sport 21 -j ACCEPT  
  30. -A INPUT -p tcp -m tcp --sport 53 -j ACCEPT  
  31. -A INPUT -p tcp -m tcp --sport 110 -j ACCEPT  
  32. -A INPUT -p tcp -m tcp --sport 25 -j ACCEPT  
  33. -A INPUT -p tcp -m tcp --sport 995 -j ACCEPT  
  34. -A INPUT -p tcp -m tcp --sport 68 -j ACCEPT  
  35. #iptables -A INPUT -p tcp -m tcp --sport 995 -j ACCEPT  
  36. -A INPUT -p tcp -m tcp --dport 80 -m limit --limit 25/min --limit-burst 200 -j ACCEPT  
  37. COMMIT  


service iptables start 


/*********************禁止root 创建普通用户******************************/ 
useradd wyj2507 
passwd wyj2507 (密码 www.xiubt.com) 

visudo (99行) 
Java代码   收藏代码
  1. 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 

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


#或者 
Java代码   收藏代码
  1. for sun in `chkconfig --list|grep 3:启用|awk '{print $1}'`;  
  2. do  
  3.     chkconfig --level 3 $sun off  
  4. done  


#开启需要的服务 
Java代码   收藏代码
  1. for sun in crond rsyslog sshd network  
  2. do  
  3.     chkconfig --level 3 $sun on  
  4. done  


#或者需要使用防火墙的话可以开启iptables和ip6tables 
Java代码   收藏代码
  1. for sun in crond rsyslog sshd network iptables ip6tables  
  2. do  
  3.     chkconfig --level 3 $sun on  
  4. 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命令设置的文件属性。 
#锁定关键文件系统 
Java代码   收藏代码
  1. chattr +i /etc/passwd  
  2. chattr +i /etc/inittab  
  3. chattr +i /etc/group  
  4. chattr +i /etc/shadow  
  5. chattr +i /etc/gshadow  


#删除不必要的系统用户和群组 
Java代码   收藏代码
  1. userdel adm  
  2. userdel lp  
  3. userdel sync  
  4. userdel shutdown  
  5. userdel halt  
  6. userdel news  
  7. userdel uucp  
  8. userdel operator  
  9. userdel games  
  10. userdel gopher  
  11. userdel ftp  

#删除不必要的群组 
Java代码   收藏代码
  1. groupdel adm  
  2. groupdel lp  
  3. groupdel news  
  4. groupdel uucp  
  5. groupdel games  
  6. groupdel dip  
  7. groupdel pppusers  

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


/*****************************内核参数优化*************************/ 
vi /etc/sysctl.conf  增加以下配置 
Java代码   收藏代码
  1. net.ipv4.tcp_max_syn_backlog = 65536  
  2. net.core.netdev_max_backlog =  32768  
  3. net.core.somaxconn = 32768  
  4. net.core.wmem_default = 8388608  
  5. net.core.rmem_default = 8388608  
  6. net.core.rmem_max = 16777216  
  7. net.core.wmem_max = 16777216  
  8. net.ipv4.tcp_timestamps = 0  
  9. net.ipv4.tcp_synack_retries = 2  
  10. net.ipv4.tcp_syn_retries = 2  
  11. net.ipv4.tcp_mem = 94500000 915000000 927000000  
  12. net.ipv4.tcp_max_orphans = 3276800  
  13. net.ipv4.ip_local_port_range = 1024  65535  

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


Java代码   收藏代码
  1. #TIME_WAIT 要过段时间释放 Linux 65535个端口  
  2. #1 SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击  
  3. #2 允许将TIME-WAIT sockets重新用于新的TCP连接  
  4. #3 开启TCP连接中TIME-WAIT sockets的快速回收  
  5. #4 系統默认的 TIMEOUT 时间  
  6. net.ipv4.tcp_syncookies = 1  
  7. net.ipv4.tcp_tw_reuse = 1  
  8. net.ipv4.tcp_tw_recycle = 1  
  9. 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 
/*******************************************依赖包*************/ 
Java代码   收藏代码
  1. yum install -y  autoconf curl  curl-devel  cmake  
  2. yum install -y sendmail  graphviz  
  3. yum install -y gcc gcc-c++  
  4. yum -y install python  
  5. yum -y install python-dev  
  6. yum install libicu-devel  
  7. yum install ncurses-libs  
  8. yum install ncurses-devel  
  9. yum -y install libxslt  
  10. yum install libxslt-devel  
  11. yum -y install curl-devel  
  12. yum -y install e2fsprogs-devel krb5-devel  libidn-devel openssl-devel  


Java代码   收藏代码
  1. wget http://download.savannah.gnu.org/releases/freetype/freetype-2.4.4.tar.gz  
  2. tar zxvf freetype-2.4.4.tar.gz  
  3. ./configure  
  4. make && make install  
  5.   
  6. wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.bz2  
  7. tar -jxvf pcre-8.37.tar.bz2  
  8. cd pcre-8.37  
  9. ./configure  
  10. make && make install  
  11.   
  12. wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz -O openssl-1.0.1g.tar.gz  
  13. tar -zxf openssl-1.0.1g.tar.gz  
  14. ./config  -fPIC enable-shared  
  15. make && make test && make install  
  16.   
  17. wget http://zlib.net/zlib-1.2.8.tar.gz  
  18. tar -zxf zlib-1.2.8.tar.gz  
  19. ./configure  
  20. 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转发给后端服务器) 
Java代码   收藏代码
  1. ./configure --prefix=/usr/local/nginx \  
  2. --user=nobody \  
  3. --conf-path=/usr/local/nginx/conf/nginx.conf \  
  4. --with-http_ssl_module \  
  5. --with-http_flv_module \  
  6. --with-http_stub_status_module \  
  7. --with-http_gzip_static_module \  
  8. --with-http_realip_module \ #启用realip模块(将用户IP转发给后端服务器)  
  9. --with-pcre=/opt/pcre-8.37  
  10. --with-openssl=/opt/openssl-1.0.1g \  
  11. --with-zlib=/opt/zlib-1.2.8 \  



Java代码   收藏代码
  1. wget http://xmlsoft.org/sources/old/libxml2-2.7.0.tar.gz  
  2. wget ftp://ftp.xmlsoft.org/libxml2/libxml2-2.9.2.tar.gz  
  3. tar zxvf libxml2-2.9.2.tar.gz  
  4. ./configure  
  5. make && make install  
  6.   
  7. libjpeg  
  8. wget ftp://ftp.pl.freebsd.org/vol/rzm1/GraphicsMagick/delegates/libjpeg-6b.tar.gz  
  9. tar zxvf libjpeg-6b.tar.gz  
  10. ./configure && make &&  make install  
  11.   
  12. libpng  
  13. wget http://download.sourceforge.net/libpng/libpng-1.6.18.tar.gz  
  14. tar zxvf libpng-1.6.18.tar.gz  
  15. ./configure  
  16. sed -i 's/LDFLAGS\=/LDFLAGS\=-L\/usr\/local\/lib/g' Makefile  
  17. sed -i 's/CPPFLAGS\=/CPPFLAGS\=-L\/usr\/local\/include/g'   Makefile  
  18. make && make install  


Java代码   收藏代码
  1. wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/attic/libmcrypt/libmcrypt-2.5.7.tar.gz  
  2. tar zxvf libmcrypt-2.5.7.tar.gz  
  3. ./configure  
  4. make && make install  
  5.   
  6. wget http://curl.haxx.se/download/curl-7.44.0.tar.gz  
  7. wget http://www.execve.net/curl/curl-7.44.0.tar.gz  
  8. tar zxvf curl-7.44.0.tar.gz  
  9. cd /opt/curl-7.44.0  
  10. ./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 
Java代码   收藏代码
  1. export ORACLE_HOME=/usr/lib/oracle/12.1/client64  
  2. export ORACLE_BASE=/usr/lib/oracle/12.1  
  3. export PATH=$ORACLE_HOME/bin:$PATH:  
  4. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH  
  5. export NLS_LANG=AMERICAN_AMERICA.AL32UTF8  
  6. export TNS_ADMIN=$ORACLE_HOME/network/admin  
  7. source /etc/profile  
  8.   
  9. cd /opt/php-5.6.12/ext/oci8  
  10. /usr/local/php/bin/phpize  
  11. ./configure --with-php-config=/usr/local/php/bin/php-config  
  12. make && make install  
  13. 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 
##此处本来只应该装客户端 
Java代码   收藏代码
  1. cd /usr/local/Downloads  
  2. tar -zxvf  mysql-5.5.44.tar.gz  
  3. cd mysql-5.5.44  
  4. cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  
  5. -DMYSQL_DATADIR=/usr/local/mysql/data \  
  6. -DMYSQL_TCP_PORT=3306 \  
  7. -DMYSQL_UNIX_ADDR=/var/run/mysqld/mysqld.sock \  
  8. -DMYSQL_USER=mysql \  
  9. -DDEFAULT_CHARSET=utf8 \  
  10. -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \  
  11. -DWITH_MYISAM_STORAGE_ENGINE=1 \  
  12. -DWITH_MEMORY_STORAGE_ENGINE=1 \  
  13. -DDEFAULT_COLLATION=utf8_general_ci \  
  14. -DEXTRA_CHARSETS=all \  
  15. -DWITH_READLINE=1 \  
  16. -DWITH_EMBEDDED_SERVER=1 \  
  17. -DENABLED_LOCAL_INFILE=1 \  
  18. -DWITH_INNOBASE_STORAGE_ENGINE=1  
  19. make && make install  


Java代码   收藏代码
  1. mkdir /usr/local/mysql/etc/  
  2. cp support-files/my-large.cnf /usr/local/mysql/etc/my.cnf  
  3. vim /usr/local/mysql/etc/my.cnf  
  4. [mysqld]  
  5. basedir = /usr/local/mysql  
  6. datadir = /usr/local/mysql/data  
  7. port = 3306  
  8. socket = /var/run/mysqld/mysqld.sock  
  9. character_set_server = utf8  
  10. slow_query_log = 1  
  11. log-error = /usr/local/mysql/log/mysql_error.log  
  12. pid-file = /usr/local/mysql/run/mysql.pid  
  13. default-storage-engine=MyISAM  
  14. user = mysql  
  15.   
  16. open_files_limit    = 65535  
  17. max_connections = 5000  
  18. max_connect_errors = 6000 #出错锁定host  
  19. back_log = 600  #连接队列的最大值  
  20. skip-name-resolve #关闭反向域名解析  
  21. innodb_file_per_table = 0 #innodb表不共享一个文件  
  22.   
  23. interactive_timeout = 120  
  24. wait_timeout = 120 #连接过期秒数  
  25. thread_cache_size = 32  #连接词空闲线程数  
  26.   
  27. tmp_table_size = 56M  
  28. max_heap_table_size = 56M  
  29. long_query_time = 3  
  30.   
  31. log-bin = /var/www/log/binlog  
  32. binlog_cache_size = 4M  
  33. binlog_format = MIXED  
  34. max_binlog_cache_size = 8M  
  35. 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*********************************/ 
Java代码   收藏代码
  1. wget http://cn2.php.net/distributions/php-5.6.12.tar.gz  
  2. opcash  http://php.net/manual/zh/opcache.installation.php  
  3. tar zxvf  php-5.6.12.tar.gz  
  4. ./configure --prefix=/usr/local/php \  
  5. --with-config-file-path=/usr/local/php/conf \  
  6. --with-fpm-user=nobody \  
  7. --with-fpm-group=nogroup \  
  8. --enable-fpm \  
  9. --enable-bcmath \  
  10. --with-curl \  
  11. --with-mcrypt \  
  12. --with-freetype-dir \  
  13. --enable-mbstring \  
  14. --with-pdo-mysql=mysqlnd \  
  15. --with-mysqli=mysqlnd \  
  16. --with-mysql=/usr/local/mysql \  
  17. --with-openssl \  
  18. --with-imap-ssl \  
  19. --with-freetype-dir \  
  20. --with-gd \  
  21. --with-jpeg-dir=/usr/lib/ \  
  22. --with-png-dir=/usr/lib/ \  
  23. --enable-exif \  
  24. --enable-zip \  
  25. --with-zlib \  
  26. --with-xsl \  
  27. --with-gettext \  
  28. --enable-intl \  
  29. --with-xmlrpc \  
  30. --enable-xml \  
  31. --enable-ftp \  
  32. --with-pear \  
  33. --enable-sockets \  
  34. --enable-gd-native-ttf \  
  35. --enable-sysvsem \  
  36. --enable-sysvshm \  
  37. --enable-shmop \  
  38. --with-mhash \  
  39. --enable-inline-optimization \  
  40. --with-curlwrappers \  
  41. --enable-mbregex \  
  42. --enable-opcache \  
  43. make && make install  


http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 
##最小权限 
Java代码   收藏代码
  1. ROOT="/var/www/html"  
  2. chown -R  nobody:nobody $ROOT  
  3. chmod a-wxr -R  $ROOT  
  4. chmod  u+xr -R  $ROOT  
  5. chmod  u+rw -R  $ROOT/serverConfig  
  6. chmod  u+rwx -R $ROOT/Runtime  
  7. chmod  u+rxw -R $ROOT/Uploads  
  8. chmod  u+rw -R  $ROOT/crontab  
  9. chmod  u+wrx -R $ROOT/Public  
  10. chmod  u+rw -R  $ROOT/serverConfig  
  11. chown  -R ftp:ftp $ROOT/ftp  
  12. chmod  u+rw -R  $ROOT/ftp  


#session 
Java代码   收藏代码
  1. mkdir -p  /usr/local/php/sess/weijiaoyun  
  2. chown nobody:nobody /usr/local/php/sess/weijiaoyun  
  3. chmod a-wrx -R  /usr/local/php/sess/weijiaoyun  
  4. 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 
Java代码   收藏代码
  1. [client]  
  2. port            = 3306  
  3. socket          = /var/run/mysqld/mysqld.sock  
  4. [mysqld]  
  5. port            = 3306  
  6. socket          = /var/run/mysqld/mysqld.sock  
  7. skip-external-locking  
  8. key_buffer_size = 256M  
  9. max_allowed_packet = 1M  
  10. table_open_cache = 256  
  11. sort_buffer_size = 1M  
  12. read_buffer_size = 1M  
  13. read_rnd_buffer_size = 4M  
  14. myisam_sort_buffer_size = 64M  
  15. thread_cache_size = 8  
  16. query_cache_size= 16M  
  17. query_cache_limit = 2M  
  18. query_cache_min_res_unit = 2k  
  19. basedir = /usr/local/mysql  
  20. datadir = /usr/local/mysql/data  
  21. port = 3306  
  22. socket = /var/run/mysqld/mysqld.sock  
  23. character_set_server = utf8  
  24. slow_query_log = 1  
  25. log-error = /usr/local/mysql/log/mysql_error.log  
  26. pid-file = /usr/local/mysql/run/mysql.pid  
  27. default-storage-engine=MyISAM  
  28. user = mysql  
  29. thread_concurrency = 2  
  30. open_files_limit    = 65535  
  31. max_connections = 5000  
  32. max_connect_errors = 6000  
  33. back_log = 600  
  34. skip-name-resolve  
  35. innodb_file_per_table = 0  
  36. interactive_timeout = 120  
  37. wait_timeout = 120  
  38.   
  39. log-bin = /var/www/log/binlog  
  40. binlog_cache_size = 4M  
  41. binlog_format = MIXED  
  42. max_binlog_cache_size = 8M  
  43. max_binlog_size = 1G  



cat  /usr/local/php/etc/php.ini 
[PHP] 
Java代码   收藏代码
  1. engine = On  
  2. short_open_tag = Off  
  3. asp_tags = Off  
  4. precision = 14  
  5. output_buffering = 4096  
  6. zlib.output_compression = Off  
  7. implicit_flush = Off  
  8. unserialize_callback_func =  
  9. serialize_precision = 17  
  10. open_basedir = "/tmp/:/var/www/html:/var/www/task/cli/:/var/www/tasks/test_data/";  
  11. disable_functions =  
  12. disable_classes =  
  13. zend.enable_gc = On  
  14. expose_php = On  
  15. max_execution_time = 30  
  16. max_input_time = 60  
  17. memory_limit = 256M  
  18. error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT  
  19. display_errors = Off  
  20. display_startup_errors = Off  
  21. log_errors = On  
  22. log_errors_max_len = 1024  
  23. ignore_repeated_errors = Off  
  24. ignore_repeated_source = Off  
  25. report_memleaks = On  
  26. track_errors = Off  
  27. html_errors = On  
  28. variables_order = "GPCS"  
  29. request_order = "GP"  
  30. register_argc_argv = Off  
  31. auto_globals_jit = On  
  32. post_max_size = 100M  
  33. auto_prepend_file =  
  34. auto_append_file =  
  35. default_mimetype = "text/html"  
  36. doc_root =  
  37. user_dir =  
  38. enable_dl = Off  
  39. cgi.fix_pathinfo=1  
  40. file_uploads = On  
  41. upload_max_filesize = 100M  
  42. max_file_uploads = 20  
  43. upload_tmp_dir=/tmp  
  44. allow_url_fopen = On  
  45. allow_url_include = Off  
  46. default_socket_timeout = 60  
  47. [Phar]  
  48. [mail function]  
  49. SMTP = localhost  
  50. smtp_port = 25  
  51. mail.add_x_header = On  
  52. [opcache]  
  53. zend_extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/opcache.so"  
  54. opcache.memory_consumption=128  
  55. opcache.interned_strings_buffer=8  
  56. opcache.max_accelerated_files=4000  
  57. opcache.revalidate_freq=60  
  58. opcache.fast_shutdown=1  
  59. opcache.enable_cli=1  
  60.   
  61. [Session]  
  62. session.save_handler = files  
  63. session.save_path = "1;/usr/local/php/sess/weijiaoyun"  
  64. session.use_cookies = 1  
  65. session.use_only_cookies = 1  
  66. session.name = PHPSESSID  
  67. session.auto_start = 0  
  68. session.cookie_lifetime = 0  
  69. session.cookie_path = /  
  70.   
  71. [curl]  
  72. 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 
Java代码   收藏代码
  1. [global]  
  2. error_log = /var/log/php/php-fpm.log  
  3. log_level = notice  
  4. rlimit_files = 65535  
  5. rlimit_core = 0  
  6. pid = run/php-fpm.pid  
  7. [www]  
  8. user = nobody  
  9. group = nobody  
  10. listen = 127.0.0.1:9000  
  11.   
  12. listen.allowed_clients = 127.0.0.1  
  13. pm = static  
  14. pm.max_children = 50  
  15. pm.start_servers = 40  
  16. pm.min_spare_servers = 5  
  17. pm.max_spare_servers = 10  
  18.   
  19. pm.max_requests = 1000  
  20. pm.status_path = /status  
  21.   
  22. request_terminate_timeout = 30  
  23. rlimit_files = 655360  
  24. rlimit_core = 0  
  25. security.limit_extensions = .php .html  
  26. php_admin_value['date.timezone'] = 'Asia/Shanghai'  
  27.   
  28. cat  /usr/local/nginx/conf/nginx.conf  | grep -v '^#' | grep -v '^$'| less  
  29. user  nobody nobody;  
  30. worker_processes  2;  
  31. worker_rlimit_nofile 65353;  
  32. events {  
  33.         worker_connections  65353;  
  34.         use epoll;  
  35. }  
  36. http {  
  37.         include       mime.types;  
  38.         default_type  application/octet-stream;  
  39.         sendfile        on;  
  40.         keepalive_timeout  65;  
  41.         fastcgi_connect_timeout 300;  
  42.         fastcgi_send_timeout 300;  
  43.         fastcgi_read_timeout 300;  
  44.         fastcgi_buffer_size 128k;  
  45.         fastcgi_buffers 4 128k;  
  46.         fastcgi_busy_buffers_size 256k;  
  47.         fastcgi_temp_file_write_size 256k;  
  48.         gzip on;  
  49.         gzip_min_length  1k;  
  50.         gzip_buffers     4 32k;  
  51.         gzip_http_version 1.1;  
  52.         gzip_comp_level 2;  
  53.         gzip_types       text/plain application/x-javascript text/css application/xml;  
  54.         gzip_vary on;  
  55.         gzip_disable "MSIE [1-6].";  
  56.         server_names_hash_bucket_size 128;  
  57.         client_max_body_size     100m;  
  58.         client_header_buffer_size 256k;  
  59.         large_client_header_buffers 4 256k;  
  60.         include vhost/*.conf;  
  61. }  


cat  /usr/local/nginx/conf/vhost/dev.xcoach.cn.conf  | grep -v '^#' | grep -v '^$'| less 
Java代码   收藏代码
  1. server {  
  2.         listen     80;  
  3.         server_name 119.29.11.29;  
  4.         root /var/www/html;  
  5.         index index.php index.html;  
  6.         large_client_header_buffers 4 16k;  
  7.         client_max_body_size 300m;  
  8.         client_body_buffer_size 128k;  
  9.         proxy_connect_timeout 600;  
  10.         proxy_read_timeout 600;  
  11.         proxy_send_timeout 600;  
  12.         proxy_buffer_size 64k;  
  13.         proxy_buffers   4 32k;  
  14.         proxy_busy_buffers_size 64k;  
  15.         proxy_temp_file_write_size 64k;  
  16.         location / {  
  17.                 index  index.htm index.html index.php;  
  18.                 if (!-e $request_filename) {  
  19.                         rewrite  ^/(.*)$  /index.php/$1  last;  
  20.                         break;  
  21.                 }  
  22.         }  
  23.         location ~ \.php$ {  
  24.                 fastcgi_pass 127.0.0.1:9000;  
  25.                 fastcgi_index index.php;  
  26.                 fastcgi_read_timeout 150;  
  27.                 include /usr/local/nginx/conf/fastcgi_params;  
  28.                 set $path_info "";  
  29.                 set $real_script_name $fastcgi_script_name;  
  30.                 if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {  
  31.                         set $real_script_name $1;  
  32.                         set $path_info $2;  
  33.                 }  
  34.                 fastcgi_param SCRIPT_FILENAME /var/www/html/$real_script_name;  
  35.                 fastcgi_param SCRIPT_NAME $real_script_name;  
  36.                 fastcgi_param PATH_INFO $path_info;  
  37.         }  
  38.         location /ngstatus {  
  39.                 stub_status on;  
  40.                 access_log off;  
  41.         }  
  42.         location /status {  
  43.                 fastcgi_pass   127.0.0.1:9000;  
  44.                 fastcgi_index  index.php;  
  45.                 include fastcgi.conf;  
  46.         }  
  47.         location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {  
  48.                 expires      30d;  
  49.         }  
  50.           location ~ .*\.(js|css)?$ {  
  51.                 expires      12h;  
  52.         }  
  53.         location ~* \.(htaccess|inc|conf)$ {  
  54.                 deny all;  
  55.         }  
  56.         location ~  /(sql|Data|Uploads|ftp)/.*\.(php|php5)?$ {  
  57.                 deny all;  
  58.         }  
  59.         #location ^~ /Runtime {  
  60.         #       deny all;  
  61.         #}  
  62.         access_log  logs/dev.xcoach.cn.access.log;  
  63.         error_log   logs/dev.xcoach.cn.error.log;  
  64. }  


/*************************************定时程序***************************/ 
Java代码   收藏代码
  1. * * * * * /bin/sh  /var/www/tasks/defend_ddos/defend_ddos.sh &  
  2. */10 * * * * /var/www/tasks/ftp/ftp_get.sh  "school"  "username"  "password"  "/var/www/html/ftp/userdata"  "/userdata/*.data" &  
  3. */10 * * * * /usr/local/php/bin/php -q /var/www/tasks/cli/cliApiBandRelation.php &  
  4. #59 * * * * /var/www/tasks/data_docking/doching.sh 121.41.74.208 youanbao PPla@0155   yabsz  3306 &  
  5. */1 * * * * /usr/local//qcloud/stargate/admin/start.sh > /dev/null 2>&1 &  
  6. 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 
/*****************************参考***********************************/ 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值