zoukankan      html  css  js  c++  java
  • LNMP环境源码搭建

    以前LNMP环境是由运维搭建,自己搭建的时候查找了很多资料,这是我见过的最棒的资料,将过程记录下来分享给大家

      为啥使用LNMP而不是LAMP下面来谈谈Nginx的技能

       Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,已经在一些俄罗斯的大型网站上运行多年,目前很多国内外的门户网站、行业网站也都在是使用Nginx,相当的稳定。Nginx相当的稳定、功能丰富、安装配置简单、低系统资源……

      Linux采用的是centOs,软件包统一放在/usr/local/src目录下,至于为啥放在这儿是一种约定俗成的东西,如果centOs源比较老,可以换成163的源。

      更换到163源 cd/etc/yum.repos.d/


      wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

      mv CentOS-Base.repo CentOS-Base.repo.bak

      mv CentOS6-Base-163.repo CentOS-Base.repo


      安装一下工具 更新yum


      yum clean all

      yum makecache

      yum update

      yum -y install vim

      更多的yum命令使用 man yum

      采用yum包安装一些依赖关系的包

      yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-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 make cmake libtool* git tree


      下载LNMP需要的编译应用和包


      下载的文件都放在/usr/local/src目录下,使用wget下载,如果没有wget使用yum包安装 yum -y install wget,下面罗列软件包地址,可以依照地址修改文件名下载最新版本。exp:如果想下载mhash最新包,在浏览器搜索http://jaist.dl.sourceforge.net/project/mhash/mhash/

      

    找到相应的软件包,替换名字就可以了。

      切换到/usr/local/src目录 cd /usr/local/src wget相应的软件包
    所需要的软件包:

    mhash-0.9.9.9
    http://jaist.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.gz

    mcrypt-2.6.8
    http://jaist.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz

    ncurses
    http://down1.chinaunix.net/distfiles/ncurses-5.9.tar.gz

    pcre-8.31.tar.bz2
    http://exim.mirror.fr/pcre/pcre-8.31.tar.bz2

    zlib-1.2.8.tar.gz
    http://iweb.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz

    freetype-2.3.5.tar.bz2
    http://down1.chinaunix.net/distfiles/freetype-2.3.5.tar.bz2

    openssl-1.0.1c.tar.gz
    http://down1.chinaunix.net/distfiles/openssl-1.0.1c.tar.gz

    php-5.5.29.tar.bz2
    http://cn2.php.net/distributions/php-5.5.29.tar.bz2
    安装libiconv

     cd /usr/local/src

    wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
    tar zxvf libiconv-1.14.tar.gz 
    cd libiconv-1.14/ 
    ./configure --prefix=/usr/local 
    make && make install

    在我make && make install的时候出现错误了error: ‘gets’ undeclared here (not in a function)。如果你不要遇到遇到,如果遇到请做如下修改:(国外的这文章记录了http://www.itkb.ro/kb/linux/patch-libiconv-pentru-glibc-216

    cd libiconv-1.14/srclib

    编辑stdio.in.h文件,搜索这句话

    _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
    

    把这句注释()添加换成如下几句

    #if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
     _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
    #endif
    

    然后重新编译安装

    cd ..
    make && make install
    

    下载并安装libmcrypt

    cd /usr/local/src
    wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
    tar -zxvf libmcrypt-2.5.7.tar.gz
    cd libmcrypt-2.5.7
    ./configure
    make 
    make install 
    cd libltdl/ 
    ./configure --enable-ltdl-install 
    make 
    make install
    

    安装mbash

    cd /usr/local/src
    tar -jxvf mhash-0.9.9.9.tar.bz2
    cd mhash-0.9.9.9
    ./configure
    make 
    make install 
    

    下载并安装mcript

     cd /usr/local/src
    tar zxvf mcrypt-2.6.8.tar.gz 
    cd mcrypt-2.6.8/ 
    

    注意一下这步运行下,不然下面可能报错

    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
    
    ./configure 
    make 
    make install
    
    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
    

    安装mysql(mysql5.6.13)

    先检查一下mysql是否已经存在了,如果存在就删除mysql

    rpm -qa | grep mysql

    我的显示如下(如果没有任何显示就表示没有mysql呢)

    mysql-libs-5.1.73-3.el6_5.i686

    如果存在就卸载mysql

    rpm -e mysql-libs-5.1.73-3.el6_5.i686 --nodeps

    此时再运行

    rpm -qa | grep mysql

    发现没有任何显示

    添加一个mysql用户(nologin用户并且没有家目录)

    useradd -M -s /sbin/nologin mysql

    初次编译mysql的时候时间比较长,请耐心等待吧

    cd /usr/local/src
    tar -zxf mysql-5.6.13.tar.gz
    cd mysql-5.6.13
    

    注意下面是cmake .注意点

    cmake .
    make && make install
    

    复制mysql配置文件

    cp support-files/my-default.cnf /etc/my.cnf
    

    创建系统数据库表

    cd /usr/local/mysql
    scripts/mysql_install_db --user=mysql
    

    更改权限

    cd /usr/local/mysql
    chown -R root:mysql .
    chown -R mysql:mysql data
    

    把mysql添加到系统服务中去

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

    启动mysql启动的时候,一直不动的话按下enter.,就行了

    /usr/local/mysql/bin/mysqld_safe --user=mysql &

    查看mysql是否启动

    netstat -tunpl | grep 3306

    或者pstree,看到有mysqld进程也行

    修改mysql密码

    /usr/local/mysql/bin/mysqladmin -u root password "xxxxx"

    进入mysql中删除空密码和匿名用户

    /usr/local/mysql/bin/mysql -u root -p
    select host,user,password from mysql.user;
    delete from mysql.user where password="" or user="";
    flush privileges;
    

    也可以在mysql修改用户密码(只是说明一下)

    set password form 'root'@'localhost' = password('123456');

    关闭mysql的时候可以使用

    /usr/local/mysql/bin/mysqladmin -u root -p shutdown

    把mysql添加到开机启动

    vim /etc/rc.local

    在最后再加一行

    /usr/local/mysql/bin/mysqld_safe --user=mysql &

    最后做一个软链接方便使用mysql

    ln -s /usr/local/mysql/bin/mysql /usr/bin/

    nginx安装

    nginx安装前编译安装pcre zlib openssl[openssl安装用./config]

    pcre安装

    cd /usr/local/src
    tar -jxf pcre-8.31.tar.bz2
    cd pcre-8.31
    ./configure
    make && make install
    

    zlib安装

    cd /usr/local/src
    tar -zxf zlib-1.2.8.tar.gz
    cd zlib-1.2.8
    ./configure
    make && make install
    

    openssl安装

    cd /usr/local/src
    tar -zxf openssl-1.0.1c.tar.gz
    cd openssl-1.0.1c
    ./config
    make && make install
    

    安装Nginx

    cd /usr/local/src
    useradd -M -s /sbin/nologin nginx
    

    解压Nginx

    tar -zxf nginx-2.0.1.tar.gz
    cd tengine-2.0.1
    

    注意的是with-pcre这些都指向/usr/local/src这种目录 (with-pcre指向安装目录,如果在安装的时候 --prefx=''更改了新的安装目录,在编译的时候要指向相应的安装目录)

    ./configure --with-pcre=/usr/local/src/pcre-8.31 --with-http_ssl_module --with-zlib=/usr/local/src/zlib-1.2.8 --with-openssl=/usr/local/src/openssl-1.0.1c
    

    make && make install

    做软链接方便nginx启动

    ln -s /usr/local/nginx/sbin/nginx /usr/bin/

    修改nginx配置文件

    vim /usr/local/nginx/conf/nginx.conf
    把#user nobody 改成 user nginx;

    测试一下nginx配置文件

    nginx -t
    

    启动nginx

    nginx
    

    说一下nginx启动的一些事情

    一般来说在nginx的配置文件修改后进行如下操作,nginx -t检测一下配置文件是否正确,如果正确的话

    再使用nginx -s reload 使nginx平滑启动

    把nginx添加到开机启动

    vim /etc/rc.local

    在最后新加一行

    /usr/local/nginx/sbin/nginx

    查看nginx是否启动

    netstat -tunpl | grep 80
    pstree 看下有没有nginx就行了

    安装php

    cd /usr/local/src
    useradd -M -s /sbin/nologin php
    tar -jxf php-5.5.12.tar.bz2
    cd php-5.5.12
    
    ./configure --enable-opcache --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 --enable-mbstring=all --with-pdo-mysql --enable-sockets --enable-mbstring --enable-fpm --with-curl --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --enable-xml --with-gd --with-mcrypt --with-libxml-dir=/usr --enable-xml --with-openssl --with-iconv=/usr/local/iconv
    
    make ZEND_EXTRA_LIBS='-liconv'
    make install
    
    cp php.ini-development /usr/local/php/etc/php.ini
    

    配置php-fpm

    cd /usr/local/php/etc
    cp php-fpm.conf.default php-fpm.conf
    vim php-fpm.conf
    


    `user = nobody
    group = nobody`
    改为
    `user = php
    group = php`

    启动php-fpm

    /usr/local/php/sbin/php-fpm

    把php-fpm添加到开机启动

    vim /etc/rc.local

    最后一行加上

    /usr/local/php/sbin/php-fpm

    修改nginx配置文件使之支持php

    vim /usr/local/nginx/conf/nginx.conf
    #location ~ .php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}
    

    修改为

    location ~ .php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    

    也顺便把gzip给开启下吧

    gzip on前面的#去掉

    修改完配置之后
    nginx -s reload

    ok,现在来测试一下环境

    cd /usr/local/nginx 
    cd html
    vim test.php
    

    写上

    <?php 
    phpinfo();
    

    然后访问一下localhost/test.php,正常的话,就一切正常了

    如果出问题的话,请看nginx有没有启动,php-fpm有没有启动

    注明几个问题如果修改php配置文件的时候,需要重启php-fpm就可以了

    先关闭php-fpm

    pkill php-fpm

    然后运行

    /usr/local/php/sbin/php-fpm

    就可以了可以看到php-fpm就启动了pstree可以看到这个进程

    pstree

    为了更方便的使用php和php-fpm,我做了两个链链接

    ln -s /usr/local/php/sbin/php-fpm /usr/bin/
    ln -s /usr/local/php/bin/php /usr/bin/

    nmp安装就彻底完成了,有什么问题可以联系我QQ1017109588 [这里没没讲到如何优化一些配置的问题,以后可以会写文章分析]

    在些也特别说明一下nginx如何支持path_info这种形式。配置文件中可以这样写。当然可能对你不需要

    location ~ ^(.+.php)(.*)$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info ^(.+.php)(.*)$;
     
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param        PATH_INFO                $fastcgi_path_info;
            fastcgi_param        PATH_TRANSLATED        $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
    

    LNMP环境搭建完成 你还可以装一些扩展 例如memcache redisd等

    总结

    1. 总结:编译安装的过程中 操作系统环境不同 软件包依赖 可能会出现一些报错

    2. 遇到报错不要慌张 可以去Google一下 大部分的问题都可以解决

    喝水不忘挖井人,感谢原文作者分享,原文请链接

    https://wujunze.com/lnmp_compile_install.jsp转载请保留原文链接

    参考

    Nginx官方文档
    MySQL官方文档
    PHP官方文档


       

  • 相关阅读:
    策略模式
    装饰模式
    责任链模式
    算法_快速排序
    算法_二分查找
    数据结构学习笔记_表
    集合遍历remove时ConcurrentModificationException异常
    LinkedHashMap笔记
    Windows相关命令
    高效率幂运算
  • 原文地址:https://www.cnblogs.com/Bighua/p/7573815.html
Copyright © 2011-2022 走看看