这里是教大家如何在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是否可用。

CentOS编译安装LNMP环境的更多相关文章

  1. Centos 6.8编译安装LNMP环境

    Centos 6.8编译安装LNMP环境 参考资料: http://www.jb51.net/article/107429.htm https://phperzh.com/articles/1360 ...

  2. CentOS 7 安装 LNMP 环境(PHP7 + MySQL5.7 + Nginx1.10)

    记录下在CentOS 7 安装 LNMP 环境(PHP7 + MySQL5.7 + Nginx1.10)过程笔记. 工具 VMware版本号 : 12.0.0 CentOS版本 : 7.0 一.修改 ...

  3. SaltStack之编译安装LNMP环境

    使用saltstack编译安装LNMP环境 一,系统版本查看 二,安装salt-master和salt-minion 安装配置过程参考SaltStack概述及安装 三,修改配置文件 /etc/salt ...

  4. CentOS 6.5 编译安装 LNMP环境

    建立一个软件包目录存放 mkdir -p /usr/local/src/ 清理已经安装包 rpm -e httpd rpm -e mysql rpm -e php yum -y remove http ...

  5. CentOS 6.4 linux下编译安装 LNMP环境

    1.nginx编译安装 2.PHP编译安装 3.mysql编译安装 4.NGINX配置模板 5.CentOS 6.4 php-fpm 添加service 添加平滑启动/重启

  6. 源码编译安装lnmp环境

    一.源码编译安装步骤 首先说明源码安装的好处   速度快,可自定义路径 主要有三步:1.配置 进入源码安装包  ./configure --prefix=/uer/local/nginx  可指定参数 ...

  7. 源码编译安装lnmp环境(nginx-1.14.2 + mysql-5.6.43 + php-5.6.30 )------踩了无数坑,重装了十几次服务器才会的,不容易啊!

    和LAMP不同的是,LNMP中的N指的是Nginx(类似于Apache的一种web服务软件),并且php是作为一个独立服务存在的,这个服务叫做php-fpm,Nginx直接处理静态请求,动态请求会转发 ...

  8. centos6源码编译安装lnmp环境

    操作系统 版本 64位 CentOS-6.6    10.0.0.20 安装环境所需依赖包 yum -y install gcc automake autoconf libtool make gcc- ...

  9. CentOS下编译安装LNMP环境

    一.卸载系统预安装的LAMP软件 rpm -qa|grep httpd rpm -e httpd httpd-tools rpm -qa|grep mysql rpm -e mysql mysql-l ...

随机推荐

  1. JavaScript(1)——变量、函数声明及作用域

    这是我的第一篇博客文章,本人不才,文笔也不好,所以可能写的有点凌乱.有什么不对的地方还望见谅.不过每天进步一小步,总有一天会迈出那一大步.以下内容是我对变量.函数声明及函数表达式.作用域的理解. [变 ...

  2. AutoTile 自动拼接(三) 学习与实践

    今天把 图像数据保存完善了一下.天冷,没打多少字,见谅. 接着昨天说的,首先我们打开u3d,做一个空物体gameobject,然后做几个sprite,如下图所示 上面的sprite 排成四个 正方形. ...

  3. String Stringbuilder Stringbuffer的区别

    String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能 ...

  4. POJ 3307 Smart Sister

    先找出所有的数,排序,然后o(1)效率询问 #include<cstdio> #include<cstring> #include<cmath> #include& ...

  5. vbs 截图

    'VBS截屏.vbs '  Win7x64 测试通过(已安装Word2007): '参考: '  http://qtp.blogspot.com/2010/02/screenshot-vbscript ...

  6. 优化之sitemap+RSS

    RSS也叫聚合, RSS是在线共享内容的一种简易方式,也叫聚合内容,Really Simple Syndication. 通常在时效性比较强的网站或网络平台上应用RSS订阅功能可以更快速获取信息,网站 ...

  7. L6,Percy Buttons

    expressions: knock at敲打 knock off 碰掉,I knock the vase off the table 下班,He always knocks off six o'cl ...

  8. jq的遍历节点

    1.child()方法 该方法用于取得匹配元素的子元素集合 2.next() 该方法用于取得匹配元素后面紧邻的同辈元素, 3.prev() 该方法用于取得匹配元素前面紧邻的同辈元素 4.sibling ...

  9. nginx 504 Gateway Time-out 解决办法

    今天用PHP执行一个非常耗时的文件[ps:自己有用,大概3分钟] 但是执行到一分钟后显示 nginx 504 Gateway Time-out 于是修改php-ini.php中的max_executi ...

  10. iOSFMDB和CoreData

    转发:http://wenku.baidu.com/link?url=LSPSZSPxN4pVwWNwqEXSoY0-jlnXq-_14C7qV1FV9_gFIMPjdKlXrG4Nrh_08EZS1 ...