lnmp编译安装教程(非常详解)

互联网十八般武艺 互联网十八般武艺

lnmp环境是我们大型WEB服务器常用的一个环境了,在这里我来给各位整理了一篇非常详细的lnmp环境编译安装步骤,希望下文可以帮助到各位.

linux采用的是centos,软件包统一放在/usr/local/src目录下.由于 centos源比较老,而且更新起来也比较慢,此处建议你换成163源,提示:如果你真打算采用这种编译安装php的话,请至少安排半天时间来完成,如果是在虚拟机里测试的话,建议调大内存以让时间更短,我本机给了虚拟机2G内存,在安装完成后可以再设置小点内存跑.安装的时候请按顺序安装.

更改yum源:

  1. #更换到163源
  2. cd/etc/yum.repos.d/
  3. wgethttp://mirrors.163.com/.help/CentOS6-Base-163.repo
  4. mvCentOS-Base.repoCentOS-Base.repo.bak
  5. mvCentOS6-Base-163.repoCentOS-Base.repo
  6. #先更新一下
  7. yumcleanall
  8. yummakecache
  9. yumupdate(这步比较慢,建议先不要运行)

准备lnmp安装环境:先采用yum包安装一些依赖的东西:

  1. yum-yinstallgccgcc-c++autoconflibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-devellibxml2libxml2-develzlibzlib-develglibcglibc-develglib2glib2-develbzip2bzip2-develncursesncurses-develcurlcurl-devele2fsprogse2fsprogs-develkrb5krb5-devellibidnlibidn-developensslopenssl-developenldapopenldap-develnss_ldapopenldap-clientsopenldap-serversmakecmakelibtool*gittree

下载一些软件都放在/usr/local/src下,安装libiconv:

  1. cd/usr/local/src
  2. wgethttp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
  3. tarzxvflibiconv-1.14.tar.gz
  4. cdlibiconv-1.14/
  5. ./configure--prefix=/usr/local
  6. make&&makeinstall

在我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");

把这句删除换成如下几句:

  1. #ifdefined(__GLIBC__)&&!defined(__UCLIBC__)&&!__GLIBC_PREREQ(2,16)
  2. _GL_WARN_ON_USE(gets,"getsisasecurityhole-usefgetsinstead");
  3. #endif
  4. //然后
  5. cd..
  6. make&&makeinstall

下载并安装libmcrypt:

  1. cd/usr/local/src
  2. wgetftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
  3. tar-zxvflibmcrypt-2.5.7.tar.gz
  4. cdlibmcrypt-2.5.7
  5. ./configure
  6. make
  7. makeinstall
  8. cdlibltdl/
  9. ./configure--enable-ltdl-install
  10. make
  11. makeinstall

下载并安装mbash 网址:http://mhash.sourceforge.net/,下载下来之后用winscp这种工具传到linux的/usr/local/src目录下:

  1. cd/usr/local/src
  2. tar-jxvfmhash-0.9.9.9.tar.bz2
  3. cdmhash-0.9.9.9
  4. ./configure
  5. make
  6. makeinstall

下载并安装mcript:

  1. cd/usr/local/src
  2. tarzxvfmcrypt-2.6.8.tar.gz
  3. cdmcrypt-2.6.8/
  4. #注意一下这步运行下,不然下面可能报错
  5. exportLD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
  6. ./configure
  7. make
  8. makeinstall
  9. ln-s/usr/local/lib/libmcrypt.la/usr/lib/libmcrypt.la
  10. ln-s/usr/local/lib/libmcrypt.so/usr/lib/libmcrypt.so
  11. ln-s/usr/local/lib/libmcrypt.so.4/usr/lib/libmcrypt.so.4
  12. ln-s/usr/local/lib/libmcrypt.so.4.4.8/usr/lib/libmcrypt.so.4.4.8
  13. ln-s/usr/local/lib/libmhash.a/usr/lib/libmhash.a
  14. ln-s/usr/local/lib/libmhash.la/usr/lib/libmhash.la
  15. ln-s/usr/local/lib/libmhash.so/usr/lib/libmhash.so
  16. ln-s/usr/local/lib/libmhash.so.2/usr/lib/libmhash.so.2
  17. ln-s/usr/local/lib/libmhash.so.2.0.1/usr/lib/libmhash.so.2.0.1
  18. ln-s/usr/local/bin/libmcrypt-config/usr/bin/libmcrypt-config

安装mysql(mysql5.6.13),先检查一下mysql是否已经存在了,如果存在就删除mysql:

  1. rpm-qa|grepmysql
  2. #我的显示如下(如果没有任何显示就表示没有mysql呢)
  3. mysql-libs-5.1.73-3.el6_5.i686
  4. #如果存在就卸载mysql
  5. rpm-emysql-libs-5.1.73-3.el6_5.i686--nodeps
  6. #此时再运行
  7. rpm-qa|grepmysql
  8. #发现没有任何显示

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

useradd -M -s /sbin/nologin mysql

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

  1. cd/usr/local/src
  2. tar-zxfmysql-5.6.13.tar.gz
  3. cdmysql-5.6.13
  4. #注意下面是cmake.注意点
  5. cmake.
  6. make&&makeinstall
  7. #复制mysql配置文件
  8. cpsupport-files/my-default.cnf/etc/my.cnf
  9. #创建系统数据库表
  10. cd/usr/local/mysql
  11. scripts/mysql_install_db--user=mysql
  12. #更改权限
  13. cd/usr/local/mysql
  14. chown-Rroot:mysql.
  15. chown-Rmysql:mysqldata
  16. #把mysql添加到系统服务中去
  17. cp/usr/local/mysql/support-files/mysql.server/etc/init.d/mysqld
  18. #启动mysql启动的时候,一直不动的话按下enter.,就行了
  19. /usr/local/mysql/bin/mysqld_safe--user=mysql&
  20. #查看mysql是否启动
  21. netstat-tunpl|grep3306
  22. #或者pstree,看到有mysqld进程也行
  23. #修改mysql密码
  24. /usr/local/mysql/bin/mysqladmin-urootpassword"xxxxx"
  25. #进入mysql中删除空密码和匿名用户
  26. /usr/local/mysql/bin/mysql-uroot-p
  27. selecthost,user,passwordfrommysql.user;
  28. deletefrommysql.userwherepassword=""oruser="";
  29. flushprivileges;
  30. #也可以在mysql修改用户密码(只是说明一下)
  31. setpasswordform'root'@'localhost'=password('123456');
  32. #关闭mysql的时候可以使用
  33. /usr/local/mysql/bin/mysqladmin-uroot-pshutdown
  34. //phpfensi.com
  35. #把mysql添加到开机启动
  36. vim/etc/rc.local
  37. #在最后再加一行
  38. /usr/local/mysql/bin/mysqld_safe--user=mysql&
  39. #最后做一个软链接方便使用mysql
  40. ln-s/usr/local/mysql/bin/mysql/usr/bin/

nginx安装(此处我本人安装了基于nginx改版的tengine,nginx的安装跟这基本完全一样,你完全可以参照并完整安装).

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

pcre安装:

  1. cd/usr/local/src
  2. tar-jxfpcre-8.31.tar.bz2
  3. cdpcre-8.31
  4. ./configure
  5. make&&makeinstall

zlib安装:

  1. cd/usr/local/src
  2. tar-zxfzlib-1.2.8.tar.gz
  3. cdzlib-1.2.8
  4. ./configure
  5. make&&makeinstall

openssl安装:

  1. cd/usr/local/src
  2. tar-zxfopenssl-1.0.1c.tar.gz
  3. cdopenssl-1.0.1c
  4. ./config
  5. make&&makeinstall
  6. //注意这时我安装tengine了,如果你用nginx,完全参照安装就行
  7. cd/usr/local/src
  8. useradd-M-s/sbin/nologinnginx
  9. #如果是nginx,请把这里换成nginx
  10. tar-zxftengine-2.0.1.tar.gz
  11. cdtengine-2.0.1
  12. #注意的是with-pcre这些都指向/usr/local/src这种目录,这非常奇怪
  13. ./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--with-http_concat_module=shared(注:如果是nginx的话不需要--with-http_concat_module=shared)
  14. make&&makeinstall
  15. #做软链接方便nginx启动
  16. ln-s/usr/local/nginx/sbin/nginx/usr/bin/
  17. #修改nginx配置文件
  18. vim/usr/local/nginx/conf/nginx.conf

把#user nobody 改成 user nginx;

  1. #测试一下nginx配置文件
  2. nginx-t
  3. #启动nginx
  4. nginx
  5. #说一下nginx启动的一些事情
  6. #一般来说在nginx的配置文件修改后进行如下操作,nginx-t检测一下配置文件是否正确,如果正确的话
  7. #再使用nginx-sreload使nginx平滑启动
  8. #把nginx添加到开机启动
  9. vim/etc/rc.local
  10. #在最后新加一行
  11. /usr/local/nginx/sbin/nginx
  12. #查看nginx是否启动
  13. netstat-tunpl|grep80
  14. pstree看下有没有nginx就行了

安装php:

  1. cd/usr/local/src
  2. useradd-M-s/sbin/nologinphp
  3. tar-jxfphp-5.5.12.tar.bz2
  4. cdphp-5.5.12
  5. ./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
  6. makeZEND_EXTRA_LIBS='-liconv'
  7. makeinstall
  8. cpphp.ini-development/usr/local/php/etc/php.ini
  9. #配置php-fpm
  10. cd/usr/local/php/etc
  11. cpphp-fpm.conf.defaultphp-fpm.conf
  12. vimphp-fpm.conf
  13. user=nobody
  14. group=nobody
  15. 改为
  16. user=php
  17. group=php
  18. #启动php-fpm
  19. /usr/local/php/sbin/php-fpm
  20. #把php-fpm添加到开机启动
  21. vim/etc/rc.local
  22. #最后一行加上
  23. /usr/local/php/sbin/php-fpm
  24. #修改nginx配置文件使之支持php
  25. vim/usr/local/nginx/conf/nginx.conf
  26. #location~\.php${
  27. #roothtml;
  28. #fastcgi_pass127.0.0.1:9000;
  29. #fastcgi_indexindex.php;
  30. #fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
  31. #includefastcgi_params;
  32. #}
  33. 修改为
  34. location~\.php${
  35. fastcgi_pass127.0.0.1:9000;
  36. fastcgi_indexindex.php;
  37. fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
  38. includefastcgi_params;
  39. }
  40. #也顺便把gzip给开启下吧

gzip on前面的#去掉

修改完配置之后:nginx -s reload

ok,现在来测试一下环境.

  1. cd/usr/local/nginx
  2. cdhtml
  3. vimtest.php

写上:<?php phpinfo();?>

然后访问一下localhost/test.php,正常的话,就一切正常了,如果出问题的话,请看nginx有没有启动,php-fpm有没有启动,注明几个问题如果修改php配置文件的时候,需要重启php-fpm就可以了.

  1. #先关闭php-fpm
  2. pkillphp-fpm
  3. #然后运行
  4. /usr/local/php/sbin/php-fpm
  5. #就可以了可以看到php-fpm就启动了pstree可以看到这个进程
  6. pstree

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

  1. ln-s/usr/local/php/sbin/php-fpm/usr/bin/
  2. ln-s/usr/local/php/bin/php/usr/bin/

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

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

  1. location~^(.+\.php)(.*)${
  2. fastcgi_pass127.0.0.1:9000;
  3. fastcgi_indexindex.php;
  4. fastcgi_split_path_info^(.+\.php)(.*)$;
  5. fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
  6. fastcgi_paramPATH_INFO$fastcgi_path_info;
  7. fastcgi_paramPATH_TRANSLATED$document_root$fastcgi_path_info;
  8. includefastcgi_params;
  9. }

相关广告
  • lnmp编译安装教程(非常详解) lnmp编译安装教程(非常详解) lnmp编译安装教程(非常详解)
相关阅读

lnmp编译安装教程(非常详解)

2019/10/10 17:44:52 | 谷歌SEO算法 | GDPR