zoukankan      html  css  js  c++  java
  • CentOS编译安装LNMP环境

    这里是教大家如何在centos下利用源码编译安装LNMP环境。

    工具/原料

    • centos服务器一台

    • 自用电脑一台

    准备篇

    1. 配置好IP、DNS 、网关,确保使用远程连接工具能够连接服务器

    2. 配置防火墙,开启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端口这条规则的下面,添加好之后防火墙规则如下所示:

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

      # 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  #最后重启防火墙使配置生效    

    3. 关闭SELINUX

      vi /etc/selinux/config  #编辑

      #SELINUX=enforcing       #注释掉 

      #SELINUXTYPE=targeted    #注释掉 

      SELINUX=disabled         #增加 

      :wq #保存退出

      shutdown -r now   #重启系统

    4. 系统约定

      软件源代码包存放位置:/usr/local/src

      源码包编译安装位置:/usr/local/软件名字

    5. 下载软件包

      1.下载nginx

       http://nginx.org/download/nginx-1.2.0.tar.gz

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

      ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz

      3、下载MySQL(目前稳定版)

      http://mysql.mirror.kangaroot.net/Downloads/MySQL-5.5/mysql-5.5.25.tar.gz

      由于版本更新可能以前版本已不存在,可http://mysql.mirror.kangaroot.net/Downloads下载相应版本。

      4、下载php

      http://www.php.net/releases/

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

      http://www.cmake.org/files/v2.8/cmake-2.8.8.tar.gz

      6、下载libmcrypt(PHPlibmcrypt模块)

      ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz

    6. 6

      安装编译工具及库文件(使用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 freetype-devel

      END

    安装篇

    1. 安装cmake

      cd /usr/local/src 

      tar zxvf cmake-2.8.8.tar.gz 

      cd cmake-2.8.8 

      ./configure make           #编译 

      make install   #安装

    2. 安装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.25.tar.gz  #解压    

      cd mysql-5.5.25    

      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安装完成!    

    3. 安装pcre

      cd /usr/local/src    

      mkdir /usr/local/pcre  #创建安装目录    

      tar  zxvf pcre-8.30.tar.gz    

      cd pcre-8.30    

      ./configure  --prefix=/usr/local/pcre  #配置    

      make    

      make install    

    4. 安装 nginx

      cd /usr/local/src    

      groupadd  www  #添加www组    

      useradd -g  www www -s /bin/false  #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统    

      tar  zxvf nginx-1.2.0.tar.gz    

      cd nginx-1.2.0    

      ./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.30    

      #注意:--with-pcre=/usr/local/src/pcre-8.30指向的是源码包解压的路径,而不是安装的路径,否则会报错    

      make    

      make install    

      /usr/local/nginx/sbin/nginx   #启动nginx    

      vi /etc/rc.d/init.d/nginx    #设置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    

             ;;    

                     

      status)    

             status $prog    

             RETVAL=$?    

             ;;    

      *)    

             echo $"Usage: $prog {start|stop|restart|reload|status|help}"    

             exit 1    

      esac    

      exit $RETVAL    

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

      :wq!  #保存退出    

      chmod 775  /etc/rc.d/init.d/nginx  #赋予文件执行权限    

      chkconfig nginx on    #设置开机启动    

      /etc/rc.d/init.d/nginx restart   #重启    

    5. 安装libmcrypt

      cd /usr/local/src    

      tar zxvf  libmcrypt-2.5.7.tar.gz   #解压    

      cd  libmcrypt-2.5.7 #进入目录    

      ./configure    #配置    

      make             #编译    

      make install   #安装    

      1. 安装php

        cd /usr/local/src    

        tar -zvxf php-5.3.13.tar.gz    

        cd  php-5.3.13    

        mkdir -p /usr/local/php5  #建立php安装目录    

        ./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-gd --with-iconv  --with-zlib  --enable-xml --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curlwrappers --enable-mbregex  --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --with-jpeg-dir --with-freetype-dir #配置    

        make   #编译    

        make install    #安装    

        cp  php.ini-production   /usr/local/php5/etc/php.ini  #复制php配置文件到安装目录    

        rm -rf /etc/php.ini   #删除系统自带配置文件    

        ln -s /usr/local/php5/etc/php.ini  /etc/php.ini    #添加软链接    

        cp  /usr/local/php5/etc/php-fpm.conf.default   /usr/local/php5/etc/php-fpm.conf      #拷贝模板文件为php-fpm配置文件    

        vi  /usr/local/php5/etc/php-fpm.conf  #编辑    

        user = www    #设置php-fpm运行账号为www    

        group = www   #设置php-fpm运行组为www    

        pid = run/php-fpm.pid    #取消前面的分号    

        cp /usr/local/src/php-5.3.13/sapi/fpm/init.d.php-fpm   /etc/rc.d/init.d/php-fpm  #设置 php-fpm开机启动,拷贝php-fpm到启动目录    

        chmod +x /etc/rc.d/init.d/php-fpm  #添加执行权限    

        chkconfig php-fpm on    #设置开机启动    

        vi /usr/local/php5/etc/php.ini    #编辑配置文件    

        找到:disable_functions =    

        修改为:disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,escapeshellcmd,dll,popen,disk_free_space,checkdnsrr,checkdnsrr,getservbyname,getservbyport,disk_total_space,posix_ctermid,posix_get_last_error,posix_getcwd, posix_getegid,posix_geteuid,posix_getgid, posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid, posix_getrlimit, posix_getsid,posix_getuid,posix_isatty, posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid, posix_setpgid,posix_setsid,posix_setuid,posix_strerror,posix_times,posix_ttyname,posix_uname    

        #列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。    

        找到:;date.timezone =    

        修改为:date.timezone = PRC   #设置时区    

        找到:expose_php = On    

        修改为:expose_php = OFF  #禁止显示php版本的信息    

        PS:在编译PHP的过程中可能会报UNDEFINED REFERENCE TO `LIBICONV_OPEN 无法编译PHP LIBICONV错误.

          出错解决方案:解决方法:
                                          #wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
                                          #tar -zxvf libiconv-1.13.1.tar.gz
                                          #cd libiconv-1.13.1
                                          # ./configure --prefix=/usr/local/libiconv
                                          # make
                                          # make install

                                          最后再重新编译php,指定 iconv的位置  --with-iconv=/usr/local/libiconv

    6. 配置nginx支持php

      vi /usr/local/nginx/conf/nginx.conf      #编辑配置文件    

      user   www  www;          #首行user去掉注释,修改Nginx运行组为www www;必须与/usr/local/php5/etc/php-fpm.conf中的user,group配置相同,否则php运行出错    

      index  index.php  index.html index.htm;    #添加index.php    

      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000    

      #    

      location ~ .php$ {    

         root           html;#此处和server下面root保持一致,默认为html    

         fastcgi_pass   127.0.0.1:9000;    

         fastcgi_index  index.php;    

         fastcgi_param  SCRIPT_FILENAME   /usr/local/nginx/html/$fastcgi_script_name;    

         include        fastcgi_params;     

      注意:取消FastCGI server部分location的注释,并要注意fastcgi_param行的参数,改为/data/webroot/(此为网站根目录绝对路径)$fastcgi_script_name

      /etc/init.d/nginx restart  #重启nginx

      END

    测试篇

    1

    访问http://ip地址    出现欢迎使用nginx,说明配置成功。默认web目录 /usr/local/nginx/html/可以自己写程序测试PHP是否可用。

  • 相关阅读:
    dotnet 新项目格式与对应框架预定义的宏
    dotnet 线程静态字段
    dotnet 线程静态字段
    dotnet 通过 WMI 拿到显卡信息
    dotnet 通过 WMI 拿到显卡信息
    dotnet 通过 WMI 获取指定进程的输入命令行
    dotnet 通过 WMI 获取指定进程的输入命令行
    dotnet 通过 WMI 获取系统信息
    dotnet 通过 WMI 获取系统信息
    PHP show_source() 函数
  • 原文地址:https://www.cnblogs.com/penciler/p/4254622.html
Copyright © 2011-2022 走看看