悠然小屋

不自重者,取辱。不自长者,取祸。不自满者,受益。不自足者,博闻!

«   2019年3月   »
123
45678910
11121314151617
18192021222324
25262728293031
搜索
Tags列表
最新留言
    最近发表
    文章归档
    友情链接

      PHP+FPM导致内存耗光的问题 .

       

      最近总是发现fpm挂掉,查看日志是因为内存耗光了。  

      Linux常用信息查看命令

       Linux常用信息查看命令

      # free -m # 查看内存使用量和交换区使用量
      # df -h # 查看各分区使用情况
      # du -sh <目录名> # 查看指定目录的大小
      # grep MemTotal /proc/meminfo # 查看内存总量
      # grep MemFree /proc/meminfo # 查看空闲内存量
      # uptime # 查看系统运行时间、用户数、负载
      # cat /proc/loadavg # 查看系统负载磁盘和分区
      # uname -a # 查看内核/操作系统/CPU信息
      # head -n 1 /etc/issue # 查看操作系统版本
      # cat /proc/cpuinfo # 查看CPU信息
      # hostname # 查看计算机名
      # lspci -tv # 列出所有PCI设备
      # lsusb -tv # 列出所有USB设备
      # lsmod # 列出加载的内核模块
      # env # 查看环境变量资源
      # ifconfig # 查看所有网络接口的属性
      # iptables -L # 查看防火墙设置
      # route -n # 查看路由表
      # netstat -lntp # 查看所有监听端口
      # netstat -antp # 查看所有已经建立的连接
      # netstat -s # 查看网络统计信息进程
      # mount | column -t # 查看挂接的分区状态
      # fdisk -l # 查看所有分区
      # swapon -s # 查看所有交换分区
      # hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
      # dmesg | grep IDE # 查看启动时IDE设备检测状况网络
      # chkconfig –list # 列出所有系统服务

      Linux文本环境一样可以监控DELL服务器的硬盘状态 ...

       用DELL服务器的午饭们想必都应该知道在Windows环境下的"Server Administrator"通过这个工具可以很方便的查看出服务器当前硬件的工作情况。由于工作需我使用的很多DELL服务器均安装的Linux操作系统,cpu/内存倒还好说,可硬盘都是通过PERC 6/i SAS阵列控制器创建RAID组然后提供给Linux系统使用的。而平时日常维护工作都是通过ssh文本模式远程登录到服务器的,为了能够在硬盘挂了以后及时亡羊补牢从DELL网站上找到了一个不错的软件dell-onlinediags-linux,这个软件功能很强大本文仅仅使用它的存储设备检测功能,其他的功能大家可以详细研究一下帮助文档,在此就不一一列出了。

      第一步,获取软件
      在 ftp://ftp.us.dell.com/diags/ 找到dell-onlinediags-linux软件包,现在最新版本是2.17.0.44。已经可以支持RedHat6了。我是在Centos5.5 x86_64系统上测试的,可以使用RHEL5的rpm包。

      第二步,解压安装(本例下载tar包到/tmp目录下) 

      lnmp安装

       

      重新安装centos5.5 32bit 独立内核版本系统后,ssh登入。


      ###########################################

      #                                           对用户进行修改。 
      ###########################################

      修改root密码:
      1
      2
      passwdroot
      # 输入密码两次
      去掉无用的用户组和用户。
      1
      2
      3
      4
      5
      6
      cp/etc/passwd/etc/passwd.sav
      cp/etc/group/etc/group.sav
      forinadm lp syncnews uucp operator games gopher mailnull nscd rpc; \
      do/usr/sbin/userdel$a -f; done
      forinlp news uucp games gopher usersfloopy nscd rpc rpcuser nfsnobody; \
      do/usr/sbin/groupdel$a -f; done
      升级系统并安装所需的组件
      1
      2
      3
      4
      5
      6
      7
      8
      9
      yum update -y
      yum install-y at iptables mailx sendmail vixie-cronntp ntsysv irqbalance \
      patch vim-enhanced sudoflex bison automake pam-devel gcc gcc-c++ autoconf \
      libjpeg libjpeg-devel libpng libpng-devel libtiff libtiff-devel libtool \
      freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc \
      glibc-devel glib2 glib2-devel bzip2bzip2-devel ncurses ncurses-devel curl \
      curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel \
      openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients \
      openldap-servers gd gd-devel unzip
      修改用户组权限sudo权限,只允许abc用户使用sudo
      1
      2
      3
      chmodu+w /etc/sudoers
      echo'abc ALL=(ALL) ALL'>> /etc/sudoers
      chmodu-w /etc/sudoers
      修改系统时区,设置cron定期同步时间。
      1
      2
      3
      4
      rm-f /etc/localtime
      ln-s /usr/share/zoneinfo/Asia/Shanghai/etc/localtime
      /usr/sbin/ntpdate210.72.145.44
      crontab-e
      # 加入下面一行:
      1
      1 */6* * * /usr/sbin/ntpdate210.72.145.44 > /dev/null2&>1
      运行ntsysv精简系统启动服务,只留下atd、crond、iptables、irqbalance、network、sendmail、sshd、syslog。
      1
      ntsysv
      添加用户abc并增加密码,并将abc添加到wheel组(以便sudo提权)
      1
      2
      3
      4
      5
      useraddabc
      passwdabc
      # 输入密码两次
       
      /usr/sbin/usermod-G wheel xuyan
      只允许wheel用户组使用su命令。
      1
      2
      3
      4
      5
      6
      7
      vim /etc/pam.d/su
      # 去掉#auth required /lib/security/$ISA/pam_wheel.so use_uid的注释#
       
      echo"SU_WHEEL_ONLY yes">> /etc/login.defs
      echo"root: admin@caiblog.com">> /etc/aliases
      newaliases
      service sendmail start
      如果想要发送测试邮件,使用命令
      1
      echotest| mail root
      关闭ipv6
      1
      2
      echo"alias net-pf-10 off">> /etc/modprobe.conf
      echo"alias ipv6 off">> /etc/modprobe.conf
      重启机器
      1
      init 6


      ###########################################

      #                                           创建下载目录 
      ###########################################

      1
      2
      mkdir-p /data/src
      cd/data/src


      ###########################################

      #                                                安装rzsz 
      ###########################################

      安装rzsz,便于SecureCRT连接vps上传下载
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      cd/data/src
      wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz
      tarzxf rzsz-3.48.tar.gz
      cdsrc
      sed-i "s#OFLAG= -O#OFLAG= -O -DREGISTERED#g"Makefile
      makeposix
      cprz sz /usr/bin
      exportRZSZLINE=/dev/modem
      cd../
      rm-rf src


      ###########################################

      #                                 升级openssl和openssh 
      ###########################################

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      # 下载相关文件
      cd/data/src
      wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-5.8p2.tar.gz
      wget http://www.openssl.org/source/openssl-1.0.0d.tar.gz
      wget http://www.dnaphp.com/downloads/server/linux/30-zlib-1-2-5-tar/download-O zlib-1.2.5.tar.gz
       
      # 升级zlib
      tar-zxf zlib-1.2.5.tar.gz
      cdzlib-1.2.5
      ./configure
      make&& makeinstall
      cd../
       
      # 升级openssl
      tarzxf openssl-1.0.0d.tar.gz
      cdopenssl-1.0.0d
      ./configshared zlib
      make
      makeinstall
      mv/usr/bin/openssl/usr/bin/openssl.OFF
      mv/usr/include/openssl/usr/include/openssl.OFF
      ln-s /usr/local/ssl/bin/openssl/usr/bin/openssl
      ln-s /usr/local/ssl/include/openssl/usr/include/openssl
      echo"/usr/local/ssl/lib">> /etc/ld.so.conf
      /sbin/ldconfig-v
      cd../
       
      # 升级openssh
      tarzxf openssh-5.8p2.tar.gz
      cdopenssh-5.8p2
      ./configure--prefix=/usr--sysconfdir=/etc/ssh--with-pam \
      --with-ssl-dir=/usr/local/ssl--with-md5-passwords --with-zlib
      make
      makeinstall
      cd../
      配置ssh
      修改ssh端口为5678,禁止root用户通过ssh登陆,禁止空密码用户通过ssh登陆等,加强安全设置。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      sed-i "s/#Port 22/Port 5678/g"/etc/ssh/sshd_config
      sed-i "s/#PermitRootLogin yes/PermitRootLogin no/g"/etc/ssh/sshd_config
      sed-i "s/#PermitEmptyPasswords no/PermitEmptyPasswords no/g"/etc/ssh/sshd_config
      sed-i "s/UsePAM yes/UsePAM no/g"/etc/ssh/sshd_config
      sed-i "s/#UseDNS yes/UseDNS no/g"/etc/ssh/sshd_config
      sed-i "s/GSSAPIAuthentication yes/#GSSAPIAuthentication yes/g"/etc/ssh/sshd_config
      sed-i "s/GSSAPICleanupCredentials yes/#GSSAPICleanupCredentials yes/g"/etc/ssh/sshd_config
      sed-i "s/#MaxAuthTries 6/MaxAuthTries 3/g"/etc/ssh/sshd_config
      sed-i "s/#X11Forwarding no/X11Forwarding no/g"/etc/ssh/sshd_config
       
      sed-i "s/GSSAPIAuthentication yes/#GSSAPIAuthentication yes/g"/etc/ssh/ssh_config
      重启ssh后,查看版本
      1
      2
      service sshd restart
      ssh-V


      ###########################################

      #                                               防火墙设置 
      ###########################################

      增加firewall.sh脚本控制防火墙,记住,ssh上去,改防火墙,直接运行/sbin/iptables -P INPUT DROP后,你连vps都连不上了,ssh端口也被关了。
      请注意你的ssh端口。我修改的是5678,请修改成自己的端口。
      1
      vim /etc/init.d/firewall.sh
      添加以下代码
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      #!/bin/sh
      #
      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:~/bin
      exportPATH
       
      case"$1"in
      start)
       echo-n "Staring to write your Iptbales:..."
       /sbin/iptables-P INPUT DROP
       /sbin/iptables-P OUTPUT ACCEPT
       /sbin/iptables-P FORWARD DROP
       /sbin/iptables-A INPUT -i lo -j ACCEPT
       /sbin/iptables-A INPUT -m state --state ESTABLISHED -j ACCEPT
       /sbin/iptables-A INPUT -p tcp --dport 5678 -j ACCEPT
       /sbin/iptables-A INPUT -p tcp --dport 80 -j ACCEPT
       /sbin/iptables-A INPUT -i lo -p all -j ACCEPT
       /sbin/iptables-A OUTPUT -p tcp --sport 31337 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 31340 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 31335 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 20034 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 27665 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 27444 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 9704 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 2049 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 137 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 138 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 139 -j DROP
       /etc/rc.d/init.d/iptablessave
       echo"Ok"
      ;;
      stop)
       echo-n "Cleaning your Iptables:..."
       /sbin/iptables-F
       /sbin/iptables-X
       /sbin/iptables-Z
       /sbin/iptables-P INPUT ACCEPT
       /sbin/iptables-P OUTPUT ACCEPT
       /etc/rc.d/init.d/iptablessave
       echo"Ok"
      ;;
      restart)
       echo-n "Cleaning your Iptables:..."
       /sbin/iptables-F
       /sbin/iptables-X
       /sbin/iptables-Z
       echo"Ok"
       echo-n "Staring to write your Iptbales:..."
       /sbin/iptables-P INPUT DROP
       /sbin/iptables-P OUTPUT ACCEPT
       /sbin/iptables-P FORWARD DROP
       /sbin/iptables-A INPUT -p tcp --dport 5678 -j ACCEPT
       /sbin/iptables-A INPUT -p tcp --dport 80 -j ACCEPT
       /sbin/iptables-A INPUT -i lo -p all -j ACCEPT
       /sbin/iptables-A OUTPUT -p tcp --sport 31337 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 31340 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 31335 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 20034 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 27665 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 27444 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 9704 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 2049 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 137 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 138 -j DROP
       /sbin/iptables-A OUTPUT -p tcp --sport 139 -j DROP
       /etc/rc.d/init.d/iptablessave
       echo"Ok"
      ;;
      *)
       echo"Usage: $0    {start|stop|restart}"
      esac
      exit0
      修改防火墙设置,并重启防火墙。
      1
      2
      3
      sh /etc/init.d/firewall.sh stop
      sh /etc/init.d/firewall.sh start
      service iptables restart


      ###########################################

      #                                             安装mysql 
      ###########################################

      1
      2
      3
      # 下载相关文件
      cd/data/src
      wget http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.5.3-m3.tar.gz
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      # 安装mysql
      tarzxf mysql-5.5.3-m3.tar.gz
      cdmysql-5.5.3-m3
      ./configure--prefix=/usr/local/mysql/--enable-assembler \
      --with-extra-charsets=complex --enable-thread-safe-client \
      --with-big-tables --with-readline --with-ssl --with-embedded-server \
      --enable-local-infile --with-plugins=partition,innobase,myisammrg
      make
      makeinstall
       
      # 添加mysql用户,修改mysql目录权限
      /usr/sbin/groupaddmysql
      /usr/sbin/useradd-g mysql mysql -s /sbin/nologin
      chown-R mysql:mysql /usr/local/mysql
      cd../
      创建MySQL数据库存放目录
      1
      2
      3
      4
      mkdir-p /data/mysql/data/
      mkdir-p /data/mysql/binlog/
      mkdir-p /data/mysql/relaylog/
      chown-R mysql:mysql /data/mysql/
      以mysql用户帐号的身份建立数据表,创建my.cnf配置文件:
      1
      2
      3
      /usr/local/mysql/bin/mysql_install_db--basedir=/usr/local/mysql\
      --datadir=/data/mysql/data--user=mysql
      vi/data/mysql/my.cnf
      添加以下代码
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      [client]
      default-character-set= utf8
      port = 3306
      socket = /tmp/mysql.sock
       
      [mysqld]
      character-set-server = utf8
      user    = mysql
      port    = 3306
      socket = /tmp/mysql.sock
      basedir = /usr/local/mysql
      datadir = /data/mysql/data
      log-error = /data/mysql/mysql_error.log
      pid-file/data/mysql/mysql.pid
      slow-query-log  = /data/mysql/slow.log
      log-bin = /data/mysql/binlog/binlog
      open_files_limit    = 600
      back_log = 20
      max_connections = 100
      max_connect_errors = 200
      table_cache = 60
      external-locking = FALSE
      max_allowed_packet = 16M
      sort_buffer_size = 128K
      join_buffer_size = 128K
      thread_cache_size = 10
      query_cache_size = 0M
      query_cache_limit = 2M
      query_cache_min_res_unit = 2k
      default-storage-engine = MyISAM
      thread_stack = 192K
      tmp_table_size = 512K
      max_heap_table_size = 32M
      long_query_time = 1
      server-id= 1
      binlog_cache_size = 2M
      max_binlog_cache_size = 4M
      max_binlog_size = 1G
      expire_logs_days = 7
      key_buffer_size = 4M
      read_buffer_size = 1M
      read_rnd_buffer_size = 2M
      bulk_insert_buffer_size = 2M
      myisam_sort_buffer_size = 4M
      myisam_max_sort_file_size = 10G
      myisam_repair_threads = 1
      myisam_recover
       
      [mysqldump]
      quick
      max_allowed_packet = 16M
      创建/etc/my.cnf链接,增加/usr/local/mysql/bin/mysql环境变量,添加mysql系统启动,启动mysql。
      1
      2
      3
      4
      5
      6
      7
      8
      ln-s /data/mysql/my.cnf /etc/my.cnf
      ln-s /usr/local/mysql/bin/mysql/usr/bin
      cp/usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
      chmod+x /etc/init.d/mysqld
      chkconfig --add mysqld
      chkconfig mysqld on
      /usr/local/mysql/bin/mysqld_safe--user=mysql &
      service mysqld restart
      通过命令行登录管理MySQL服务器(提示输入密码时直接回车):
      1
      /usr/local/mysql/bin/mysql-u root -p -S /tmp/mysql.sock
      输入以下SQL语句,删除多余用户,设置root密码(123456):
      1
      2
      3
      4
      DELETEFROMmysql.userWHEREuser=''orhost='::1';
      UPDATEmysql.userSETpassword=PASSWORD("123456"WHEREuser='root';
      flush privileges;
      exit;


      ###########################################

      #                                             php编译安装 
      ###########################################

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      #安装memcached服务端(可选)
       
      cd/data/src
      wget http://monkey.org/~provos/libevent-2.0.12-stable.tar.gz
      wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
      wget http://pecl.php.net/get/memcached-1.0.2.tgz
      wget http://launchpad.net/libmemcached/1.0/0.49/+download/libmemcached-0.49.tar.gz
       
      tarzxf libevent-2.0.12-stable.tar.gz
      cdlibevent-2.0.12-stable
      ./configure--prefix=/usr/local/libevent
      make&& makeinstall
      cd../
      ln-s /usr/local/libevent/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
      ln-s /usr/local/libevent/lib/libevent.a /usr/lib/libevent.a
       
      tarzxf memcached-1.4.5.tar.gz
      cdmemcached-1.4.5
      ./configure--with-libevent=/usr/local/libevent/
      make&& makeinstall
      cd../
       
      tarzxf libmemcached-0.49.tar.gz
      cdlibmemcached-0.49
      ./configuremake&& makeinstall
      cd../
      编写memcached启动脚本
      1
      vi/etc/init.d/memcached
      添加以下内容
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      #!/bin/sh
      #
      # memcached: MemCached Daemon
      #
      # chkconfig: - 90 25
      # description:  MemCached Daemon
      #
      # Source function library.
      /etc/rc.d/init.d/functions
      /etc/sysconfig/network   
       
      start()
      {
          echo-n $"Starting memcached: "
          daemon /usr/bin/memcached-u daemon -d -m 8 -c 256 -l 127.0.0.1 -p 11211 -P /tmp/memcached.pid
          echo
      }
       
      stop()
      {
          echo-n $"Shutting down memcached: "
          killproc memcached
          echo
      }   
       
      [ -f /usr/bin/memcached] || exit0
       
      # See how we were called.
      case"$1"in
          start)
          start
          ;;
          stop)
          stop
          ;;
          restart|reload)
          stop
          start
          ;;
          condrestart)
          stop
          start
          ;;
          *)
          echo$"Usage: $0 {start|stop|restart|reload|condrestart}"
          exit1
      esac
      exit0
      添加到系统启动
      1
      2
      chkconfig --add memcached
      chkconfig memcached on
      编译安装PHP 5.2.17所需的其他支持库:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      cd/data/src
      wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
      wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0
      wget http://downloads.sourceforge.net/mcrypt/mcrypt-2.6.8.tar.gz?modtime=1194463373&big_mirror=0
      wget http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz?modtime=1175740843&big_mirror=0
       
      tarzxf libiconv-1.13.1.tar.gz
      cdlibiconv-1.13.1/
      ./configure--prefix=/usr/local
      make
      makeinstall
      cd../
       
      tarzxf libmcrypt-2.5.8.tar.gz
      cdlibmcrypt-2.5.8/
      ./configure
      make
      makeinstall
      /sbin/ldconfig
      cdlibltdl/
      ./configure--enable-ltdl-install
      make
      makeinstall
      cd../../
       
      ln-s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
      ln-s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
      ln-s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
      ln-s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
      ln-s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
      ln-s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
      ln-s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
      ln-s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
      ln-s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
      ln-s /usr/local/bin/libmcrypt-config/usr/bin/libmcrypt-config
       
      tarzxf mcrypt-2.6.8.tar.gz
      cdmcrypt-2.6.8/
      /sbin/ldconfig
      ./configure
      make
      makeinstall
      cd../
       
      tarzxf mhash-0.9.9.9.tar.gz
      cdmhash-0.9.9.9/
      ./configure
      make
      makeinstall
      cd../
      编译安装php5.2.17
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      cd/data/src
      wget http://www.php.net/get/php-5.2.17.tar.gz/from/this/mirror
      wget http://php-fpm.org/downloads/php-5.2.17-fpm-0.5.14.diff.gz
       
      tarzxf php-5.2.17.tar.gz
      gzip-cdphp-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1
      cdphp-5.2.17/
      ./configure--prefix=/usr/local/php--with-config-file-path=/usr/local/php/etc\
      --with-mysql=/usr/local/mysql--with-mysqli=/usr/local/mysql/bin/mysql_config\
      --with-iconv-dir=/usr/local--with-freetype-dir--with-jpeg-dir--with-png-dir\
      --with-zlib --with-libxml-dir=/usr--enable-xml --disable-rpath \
      --enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop \
      --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers \
      --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect \
      --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl \
      --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl \
      --with-xmlrpc --enable-zip --enable-soap
      makeZEND_EXTRA_LIBS='-liconv'
      makeinstall
      cpphp.ini-dist /usr/local/php/etc/php.ini
      cd../
      #安装其他拓展(可选,但是建议一定要把APC装上)
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      cd/data/src
      wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.gz
      wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
      wget http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
      wget http://pecl.php.net/get/imagick-2.3.0.tgz
      wget http://pecl.php.net/get/APC-3.1.9.tgz
       
      tarzxf APC-3.1.9.tgz
      cdAPC-3.1.9
      /usr/local/php/bin/phpize
      ./configure--enable-apc --enable-apc-mmap \
      --with-php-config=/usr/local/php/bin/php-config--prefix=/usr/local/apc
      make
      makeinstall
      cd../
       
      tarzxf memcached-1.0.2.tgz
      cdmemcached-1.0.2
      /usr/local/php/bin/phpize
      ./configure--enable-memcached --with-php-config=/usr/local/php/bin/php-config--with-zlib-dir
      make
      makeinstall
      cd../
       
      tarzxf PDO_MYSQL-1.0.2.tgz
      cdPDO_MYSQL-1.0.2/
      /usr/local/php/bin/phpize
      ./configure--with-php-config=/usr/local/php/bin/php-config--with-pdo-mysql=/usr/local/mysql
      make
      makeinstall
      cd../
       
      tarzxf PDO_MYSQL-1.0.2.tgz
      cdPDO_MYSQL-1.0.2/
      /usr/local/php/bin/phpize
      ./configure--with-php-config=/usr/local/php/bin/php-config--with-pdo-mysql=/usr/local/mysql
      make
      makeinstall
      cd../
       
      tarzxf ImageMagick.tar.gz
      cdImageMagick-6.5.1-2/
      ./configure
      make
      makeinstall
      cd../
       
      tarzxf imagick-2.3.0.tgz
      cdimagick-2.3.0/
      /usr/local/php/bin/phpize
      ./configure--with-php-config=/usr/local/php/bin/php-config
      make
      makeinstall
      cd../
      修改php.ini文件
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      sed-i 's#extension_dir = "./"#\
      extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"\n\
      extension = "memcached.so"\nextension = "pdo_mysql.so"\nextension = "imagick.so"\n#g' \
      /usr/local/php/etc/php.ini
      sed-i 's#output_buffering = Off#output_buffering = On#g'/usr/local/php/etc/php.ini
      sed-i 's#allow_url_fopen = Off#allow_url_fopen = On#g'/usr/local/php/etc/php.ini
      sed-i 's#; always_populate_raw_post_data = On#always_populate_raw_post_data = On#g'\
      /usr/local/php/etc/php.ini
      sed-i 's#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g'/usr/local/php/etc/php.ini
      sed-i 's#; cgi.fix_pathinfo=0#cgi.fix_pathinfo=0#g'/usr/local/php/etc/php.ini
      在php.ini中配置APC
      1
      2
      3
      echo-e '[apc]\nextension="apc.so"\napc.enabled = 1\napc.cache_by_default = on\n\
      apc.shm_segments = 1\napc.shm_size = 64M\napc.ttl = 7200\napc.user_ttl = 7200\n\
      apc.num_files_hint = 0\napc.write_lock = On\n' >> /usr/local/php/etc/php.ini
      创建www用户和web目录
      1
      2
      3
      4
      /usr/sbin/groupaddwww
      /usr/sbin/useradd-g www www -s /sbin/nologin
      mkdir-p /data/www/abc
      chown-R www:www /data/www/abc
      创建php-fpm配置文件:
      在/usr/local/php/etc/目录中创建php-fpm.conf文件:
      1
      2
      mv/usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php-fpm.conf.bak
      vi/usr/local/php/etc/php-fpm.conf
      添加以下代码(<value name=”max_children”>10</value>中10为php-cgi的进程数,可以自行修改,1个进程大约消耗20MB左右内存)
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      131
      132
      133
      134
      135
      136
      137
      138
      139
      140
      141
      142
      143
      144
      145
      146
      147
      148
      149
      150
      151
      152
      153
      154
      155
      156
      157
      <?xml version="1.0"?>
      <configuration>
       
          All relative paths inthis config are relative to php's installprefix
       
          <section name="global_options">
       
              Pid file
              

      在vSphere 5中配置ESXi防火墙实例

       

      ESXi 5防火墙是VMware vSphere 5一个新特性,可以通过vSphere Client或命令行配置。ESXi 5防火墙以前只存在于刚刚停止使用的ESX hypervisor中。VMware曾经声称ESXi不需要防火墙,因为轻量级hypervisor几乎不会开启任何服务或端口,这样不会被攻击。
        我认为VMwareESXi 5中增加防火墙有以下几点原因。使用防火墙,ESXi 5 能够延续原有ESX Server的这一显著特性。同时,防火墙给用户及合作伙伴发出了一个信号,那就是VMware在致力于安全。最后,vSphere 5仍旧像之前一样安全,甚至更好。
        和ESX Server防火墙一样,新的ESXi 防火墙只保护管理接口,并不保护单个的虚拟机。ESXi防火墙是一个面向服务的无状态防火墙,这意味着它不追踪网络会话而只评估经过的每个数据包。也就是说,ESXi防火墙是一个完全不同的防火墙引擎,消除了对定义端口规则或服务的iptables及规则集的使用。对于远程主机来说,你可以指定允许访问每个服务的IP地址或IP地址范围。当然你可以使用vSphere Client或命令行配置这些参数。
        使用vSphere Client配置ESXi防火墙
        ESXi 5防火墙默认是开启的,位于ESXi server管理接口和网络之间。
        安装完ESXi 5防火墙后,除了用于管理的默认TCPUDP服务,比如SSH(端口号22),DNS(端口号53),DHCP(端口号68)之外,初始配置阻止所有的输入、输出流量。需要注意的是ESXi 主机的ICMPping操作使用该协议)默认是启用的。
        你可以在vSphere Client中查看并编辑输入、输出的TCPUDP端口号。在“主机配置”选项卡下,单击“软件安全配置文件”,选择“属性”,你将看到ESXi防火墙和主机上用于网络访问的服务相关联。如果服务被创建,并且勾选了复选框,那么该服务的流量就能够穿过防火墙。
        同样也可以定义能够通过指定端口访问ESXi主机的IP地址或IP地址范围。单击“防火墙”按钮然后输入允许的IP地址即可完成配置。
       
        使用命令行配置ESXi防火墙
        你可以使用PowerCLIvSphere Management AssistantvSphere管理助手)或ESXi主机的命令行配置ESXi防火墙。但是首先你必须在ESxi主机上启用Tech Support ModeRemote Tech Support Mode。比如在启用Remote Tech Support Mode后就可以通过安全Shell连接到ESXi 5主机了。以下几个文件是配置ESXi 防火墙的关键文件。
      规则集配置文件:(/etc/vmware/firewall/service.xml)该文件包含默认的防火墙规则,由端口和协议两部分组成。服务配置文件:(/etc/vmware/services/service.xml)该文件列出了默认的服务及防火墙规则分组。
        虽然你也可以通过vSphere Client启用、禁用规则,或者打开、关闭服务,但是增加新的防火墙规则只能通过命令行操作。你可以通过编辑这些文件(比如在命令行下输入“vi /etc/vmware/firewall/service.xmlte”命令)添加规则。然后使用esxcli网络防火墙刷新命令启用防火墙规则。
        通过命令也可以启用/禁用整个防火墙,启用/禁用规则,或者为防护墙规则添加/删除指定的IP地址或IP地址范围

       

      VMware ESXI 虚拟磁盘工具 - vmkfstools 使用实例

       

      一 虚拟磁盘类型 

      Centos6.3 + php5.3 + nginx1.2.2 + mysql5.5服务器搭建过程及问题记录

       

      一.配置环境

        OS:Centos6.3

      CentOS 6.3编译安装Nginx1.2.2+MySQL5.5.25a+PHP5.4.5

       准备篇:
      一、配置好IP、DNS 、网关,确保使用远程连接工具能够连接服务器
      CentOS 设置IP地址、网关、DNS教程:
      二、配置防火墙,开启80端口、3306端口
      vi /etc/sysconfig/iptables
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT #允许80端口通过防火墙
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT #允许3306端口通过防火墙
      特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面
      添加好之后防火墙规则如下所示:
      系统运维 温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接
      #########################################################
      # 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 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
      -A INPUT -j REJECT --reject-with icmp-host-prohibited
      -A FORWARD -j REJECT --reject-with icmp-host-prohibited
      COMMIT
      #########################################################
      /etc/init.d/iptables restart #最后重启防火墙使配置生效
      三、关闭SELINUX
      vi /etc/selinux/config
      #SELINUX=enforcing #注释掉
      #SELINUXTYPE=targeted #注释掉
      SELINUX=disabled #增加
      :wq 保存,关闭
      shutdown -r now #重启系统
      四 、系统约定
      软件源代码包存放位置:/usr/local/src
      源码包编译安装位置:/usr/local/软件名字
      五、下载软件包
      1、下载nginx(目前稳定版)

      2、下载pcre (支持nginx伪静态)

      4、下载MySQL

      5、下载php

      6、下载cmake(MySQL编译工具)

      7、下载libmcrypt(PHPlibmcrypt模块)

      以上软件包使用WinSCP工具上传到/usr/local/src目录
      WinSCP下载地址:
      六、安装编译工具及库文件(使用CentOS yum命令安装)
      yum install make apr* autoconf automake curl-devel gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel gd kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype libjpeg* libpng* php-common php-gd ncurses* libtool* libxml2 libxml2-devel patch
      安装篇
      以下是用putty工具远程登录到服务器,在命令行下面操作的
      一、安装cmake
      cd /usr/local/src
      tar zxvf cmake-2.8.8.tar.gz
      cd cmake-2.8.8
      ./configure
      make #编译
      make install #安装
      二、安装mysql
      groupadd mysql #添加mysql组
      useradd -g mysql mysql -s /bin/false #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统
      mkdir -p /data/mysql #创建MySQL数据库存放目录
      chown -R mysql:mysql /data/mysql #设置MySQL数据库目录权限
      mkdir -p /usr/local/mysql #创建MySQL安装目录
      cd /usr/local/src
      tar zxvf mysql-5.5.25a.tar.gz #解压
      cd mysql-5.5.25a
      cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc #配置
      make #编译
      make install #安装
      cd /usr/local/mysql
      cp ./support-files/my-huge.cnf /etc/my.cnf #拷贝配置文件(注意:如果/etc目录下面默认有一个my.cnf,直接覆盖即可)
      vi /etc/my.cnf #编辑配置文件,在 [mysqld] 部分增加下面一行
      datadir = /data/mysql #添加MySQL数据库路径
      :wq! #保存退出
      ./scripts/mysql_install_db --user=mysql #生成mysql系统数据库
      cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld #把Mysql加入系统启动
      chmod 755 /etc/init.d/mysqld #增加执行权限
      chkconfig mysqld on #加入开机启动
      vi /etc/rc.d/init.d/mysqld #编辑
      basedir = /usr/local/mysql #MySQL程序安装路径
      datadir = /data/mysql #MySQl数据库存放目录
      service mysqld start #启动
      vi /etc/profile #把mysql服务加入系统环境变量:在最后添加下面这一行
      export PATH=$PATH:/usr/local/mysql/bin
      :wq! #保存退出
      下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。
      ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
      ln -s /usr/local/mysql/include/mysql /usr/include/mysql
      shutdown -r now #需要重启系统,等待系统重新启动之后继续在终端命令行下面操作
      mysql_secure_installation #设置Mysql密码
      根据提示按Y 回车
      然后输入2次密码
      继续按Y 回车,直到设置完成
      或者直接修改密码/usr/local/mysql/bin/mysqladmin -u root -p password "123456" #修改密码
      service mysqld restart #重启
      到此,mysql安装完成!
      三、安装pcre
      cd /usr/local/src
      mkdir /usr/local/pcre #创建安装目录
      tar zxvf pcre-8.31.tar.gz
      cd pcre-8.31
      ./configure --prefix=/usr/local/pcre #配置
      make
      make install
      四、安装 nginx
      cd /usr/local/src
      groupadd www #添加www组
      useradd -g www www -s /bin/false #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统
      tar zxvf nginx-1.2.2.tar.gz
      cd nginx-1.2.2
      ./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-openssl=/usr/ --with-pcre=/usr/local/src/pcre-8.31
      注意:--with-pcre=/usr/local/src/pcre-8.31指向的是源码包解压的路径,而不是安装的路径,否则会报错
      make
      make install
      /usr/local/nginx/sbin/nginx #启动nginx
      设置nginx开启启动
      vi /etc/rc.d/init.d/nginx #编辑启动文件添加下面内容
      =======================================================
      #!/bin/bash
      # nginx Startup script for the Nginx HTTP Server
      # it is v.0.0.2 version.
      # chkconfig: - 85 15
      # description: Nginx is a high-performance web and proxy server.
      # It has a lot of features, but it's not for everyone.
      # processname: nginx
      # pidfile: /var/run/nginx.pid
      # config: /usr/local/nginx/conf/nginx.conf
      nginxd=/usr/local/nginx/sbin/nginx
      nginx_config=/usr/local/nginx/conf/nginx.conf
      nginx_pid=/usr/local/nginx/logs/nginx.pid
      RETVAL=0
      prog="nginx"
      # Source function library.
      . /etc/rc.d/init.d/functions
      # Source networking configuration.
      . /etc/sysconfig/network
      # Check that networking is up.
      [ ${NETWORKING} = "no" ] && exit 0
      [ -x $nginxd ] || exit 0
      # Start nginx daemons functions.
      start() {
      if [ -e $nginx_pid ];then
      echo "nginx already running...."
      exit 1
      fi
      echo -n $"Starting $prog: "
      daemon $nginxd -c ${nginx_config}
      RETVAL=$?
      echo
      [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
      return $RETVAL
      }
      # Stop nginx daemons functions.
      stop() {
      echo -n $"Stopping $prog: "
      killproc $nginxd
      RETVAL=$?
      echo
      [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
      }
      reload() {
      echo -n $"Reloading $prog: "
      #kill -HUP `cat ${nginx_pid}`
      killproc $nginxd -HUP
      RETVAL=$?
      echo
      }
      # See how we were called.
      case "$1" in
      start)
      start
      ;;
      stop)
      stop
      ;;
      reload)
      reload
      ;;
      restart)
      stop
      start
      ;; 

      Powered By Z-BlogPHP 1.5.2 Zero & Theme by Washun Copyright Csuper All Rights Reserved. 湘ICP备18017694 网络是工具,不是玩具 QQ:493754678 [登录]