lnmp超详细编译安装教程

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

更改yum源

  1. #更换到163源
  2. cd /etc/yum.repos.d/
  3. wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
  4. mv CentOS-Base.repo CentOS-Base.repo.bak
  5. mv CentOS6-Base-163.repo CentOS-Base.repo
  6.  
  7. #先更新一下
  8. yum clean all
  9. yum makecache
  10. yum update(这步比较慢,建议先不要运行)

准备lnmp安装环境

先采用yum包安装一些依赖的东西

  1. 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

下载一些软件都放在/usr/local/src下

安装libiconv

  1. cd /usr/local/src
  2. wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
  3. tar zxvf libiconv-1.14.tar.gz
  4. cd libiconv-1.14/
  5. ./configure --prefix=/usr/local
  6. 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)

  1. cd libiconv-1.14/srclib

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

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

把这句删除换成如下几句

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

然后

  1. cd ..
  2. make && make install

下载并安装libmcrypt

  1. cd /usr/local/src
  2. wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
  3. tar -zxvf libmcrypt-2.5.7.tar.gz
  4. cd libmcrypt-2.5.7
  5. ./configure
  6. make
  7. make install
  8. cd libltdl/
  9. ./configure --enable-ltdl-install
  10. make
  11. make install

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

  1. cd /usr/local/src
  2. tar -jxvf mhash-0.9.9.9.tar.bz2
  3. cd mhash-0.9.9.9
  4. ./configure
  5. make
  6. make install

下载并安装mcript

  1. cd /usr/local/src
  2. tar zxvf mcrypt-2.6.8.tar.gz
  3. cd mcrypt-2.6.8/
  4.  
  5. #注意一下这步运行下,不然下面可能报错
  6. export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
  7.  
  8. ./configure
  9. make
  10. make install
  1. ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
  2. ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
  3. ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
  4. ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
  5. ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
  6. ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
  7. ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
  8. ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
  9. ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
  10. ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config

安装mysql(mysql5.6.13)

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

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

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

  1. useradd -M -s /sbin/nologin mysql

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

  1. cd /usr/local/src
  2. tar -zxf mysql-5.6.13.tar.gz
  3. cd mysql-5.6.13
  4. #注意下面是cmake .注意点
  5. cmake .
  6. make && make install
  7. #复制mysql配置文件
  8. cp support-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 -R root:mysql .
  15. chown -R mysql:mysql data
  16.  
  17. #把mysql添加到系统服务中去
  18. cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
  19. #启动mysql启动的时候,一直不动的话按下enter.,就行了
  20. /usr/local/mysql/bin/mysqld_safe --user=mysql &
  21. #查看mysql是否启动
  22. netstat -tunpl | grep 3306
  23. #或者pstree,看到有mysqld进程也行
  24. #修改mysql密码
  25. /usr/local/mysql/bin/mysqladmin -u root password "xxxxx"
  26. #进入mysql中删除空密码和匿名用户
  27. /usr/local/mysql/bin/mysql -u root -p
  28. select host,user,password from mysql.user;
  29. delete from mysql.user where password="" or user="";
  30. flush privileges;
  31. #也可以在mysql修改用户密码(只是说明一下)
  32. set password form 'root'@'localhost' = password('123456');
  33. #关闭mysql的时候可以使用
  34. /usr/local/mysql/bin/mysqladmin -u root -p shutdown
  35.  
  36. #把mysql添加到开机启动
  37. vim /etc/rc.local
  38. #在最后再加一行
  39. /usr/local/mysql/bin/mysqld_safe --user=mysql &
  40.  
  41. #最后做一个软链接方便使用mysql
  42.  
  43. 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 -jxf pcre-8.31.tar.bz2
  3. cd pcre-8.31
  4. ./configure
  5. make && make install

zlib安装

  1. cd /usr/local/src
  2. tar -zxf zlib-1.2.8.tar.gz
  3. cd zlib-1.2.8
  4. ./configure
  5. make && make install

openssl安装

  1. cd /usr/local/src
  2. tar -zxf openssl-1.0.1c.tar.gz
  3. cd openssl-1.0.1c
  4. ./config
  5. make && make install

//注意这时我安装tengine了,如果你用nginx,完全参照安装就行

  1. cd /usr/local/src
  2. useradd -M -s /sbin/nologin nginx
  3. #如果是nginx,请把这里换成nginx
  4. tar -zxf tengine-2.0.1.tar.gz
  5. cd tengine-2.0.1
  6. #注意的是with-pcre这些都指向/usr/local/src这种目录,这非常奇怪
  7. ./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)
  8.  
  9. make && make install
  10. #做软链接方便nginx启动
  11. ln -s /usr/local/nginx/sbin/nginx /usr/bin/
  12. #修改nginx配置文件
  13. vim /usr/local/nginx/conf/nginx.conf
  14. 把#user nobody 改成 user nginx;
  15. #测试一下nginx配置文件
  16. nginx -t
  17. #启动nginx
  18. nginx
  19.  
  20. #说一下nginx启动的一些事情
  21. #一般来说在nginx的配置文件修改后进行如下操作,nginx -t检测一下配置文件是否正确,如果正确的话
  22. #再使用nginx -s reload 使nginx平滑启动
  23.  
  24. #把nginx添加到开机启动
  25. vim /etc/rc.local
  26. #在最后新加一行
  27. /usr/local/nginx/sbin/nginx
  28. #查看nginx是否启动
  29. netstat -tunpl | grep 80
  30. pstree 看下有没有nginx就行了

安装php

  1. cd /usr/local/src
  2. useradd -M -s /sbin/nologin php
  3. tar -jxf php-5.5.12.tar.bz2
  4. cd php-5.5.12
  5.  
  6. ./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
  7.  
  8. make ZEND_EXTRA_LIBS='-liconv'
  9. make install
  10.  
  11. cp php.ini-development /usr/local/php/etc/php.ini
  12.  
  13. #配置php-fpm
  14. cd /usr/local/php/etc
  15. cp php-fpm.conf.default php-fpm.conf
  16. vim php-fpm.conf

  17. user = nobody
  18. group = nobody
  19. 改为
  20. user = php
  21. group = php
  22. #启动php-fpm
  23. /usr/local/php/sbin/php-fpm
  24. #把php-fpm添加到开机启动
  25. vim /etc/rc.local
  26. #最后一行加上
  27. /usr/local/php/sbin/php-fpm
  1. #修改nginx配置文件使之支持php
  2. vim /usr/local/nginx/conf/nginx.conf
  3. #location ~ \.php$ {
  4. # root html;
  5. # fastcgi_pass 127.0.0.1:9000;
  6. # fastcgi_index index.php;
  7. # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  8. # include fastcgi_params;
  9. #}
  10. 修改为
  11. location ~ \.php$ {
  12. fastcgi_pass 127.0.0.1:9000;
  13. fastcgi_index index.php;
  14. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  15. include fastcgi_params;
  16. }
  17.  
  18. #也顺便把gzip给开启下吧
  19. gzip on前面的#去掉
  20.  
  21. 修改完配置之后
  22. nginx -s reload

ok,现在来测试一下环境

  1. cd /usr/local/nginx
  2. cd html
  3. vim test.php
  4. 写上
  5. <?php
  6. phpinfo();

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

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

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

  1. #先关闭php-fpm
  2.  
  3. pkill php-fpm 
  4.  
  5. #然后运行
  6.  
  7. /usr/local/php/sbin/php-fpm
  8.  
  9. #就可以了可以看到php-fpm就启动了pstree可以看到这个进程
  10. 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_pass 127.0.0.1:9000;
  3. fastcgi_index index.php;
  4. fastcgi_split_path_info ^(.+\.php)(.*)$;
  5.  
  6. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  7. fastcgi_param PATH_INFO $fastcgi_path_info;
  8. fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
  9. include fastcgi_params;
  10. }
 

lnmp编译安装的更多相关文章

  1. LNMP编译安装教程

    LNMP编译安装教程 此次安装在Centos上,我采用的CentOS的版本是:CentOS release 6.5 (Final) 可以通过以下命令查看:lsb_release -a 一.准备工作: ...

  2. LNMP编译安装(centos7+nginx1.9+mysql5.6+php5.5)

    LNMP编译安装 # 需先配置IP # 软件包的路径 /usr/local/src yum install -y libjpeg-devel libpng-devel freetype-devel c ...

  3. linux lnmp编译安装

    关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #注释掉 #SELINUXTYPE=targeted #注释掉 SELINUX=disabled ...

  4. LNMP编译安装基于centos7.2

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止fir ...

  5. CentOS6.8 x64+Nginx1.3.8/Apache-httpd 2.4.3+PHP5.4.8(php-fpm)+MySQL5.5.28+CoreSeek4.1源码编译安装

    系统为CentOS6.8 x64服务器版精简安装. 准备工作 部署安装目录 /usr/local/* /var/lib/* /var/lib64/* 下载源文件 #cd /usr/local/src ...

  6. centos下编译安装lnmp

    centos下编译安装lnmp 本文以centos为背景在其中编译安装nginx搭建lnmp环境. 编译安装nginx时,需要事先安装 开发包组"Development Tools" ...

  7. 在树莓派1B上编译安装lnmp服务器

    最近一周给部门内部搭建考试系统,选择使用PHPEMS.这是个开源的系统,唯一缺点是PHP的版本比较低,只能使用5.2或5.3.而我的树莓派系统更新后使用apt-get安装得到的PHP版本为5.4.由于 ...

  8. CentOS编译安装LNMP环境

    这里是教大家如何在centos下利用源码编译安装LNMP环境. 工具/原料 centos服务器一台 自用电脑一台 准备篇 配置好IP.DNS .网关,确保使用远程连接工具能够连接服务器 配置防火墙,开 ...

  9. LNMP之编译安装PHP出现的问题

    2010年以前,互联网公司最常用的Web服务组合就是LAMP(即Linux.Apache.MySQL.PHP),近几年随着Nginx Web服务的逐渐流行,又出现了新的Web服务环境组合--LNMP ...

随机推荐

  1. LeetCode "477. Total Hamming Distance"

    Fun one.. the punch line of this problem is quite common in Bit related problems on HackerRank - vis ...

  2. 使用图灵机器人API实现聊天机器人

    使用图灵机器人的API需要先注册,获取key才行,这我就不说了,自己到http://www.tuling123.com/注册一个账号即可. 下面就是一个简单的python调用API实现聊天机器人的简易 ...

  3. vue.js组件

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. EventBus--出现的问题

    --- 1 , EventBus收不到消息问题. 项目中遇到的问题,做搜索商品的时候遇到, 1.情况是一个FragmentActivity包含四个碎片Fragment,在FragmentActivit ...

  5. HBase内部操作日志说明

    版本:0.94-cdh4.2.1 1. Split Region [regionserver60020-splits-1397585864985] INFO org.apache.hadoop.hba ...

  6. openssl之rsa

    格式 openssl rsa [-inform PEM|NET|DER] [-outform PEM|NET|DER] [-in filename] [-passin arg] [-out filen ...

  7. 帝国cms 无法生成静态页

    建立目录不成功!请检查目录权限 安装完了帝国网站管理系统(帝国CMS)之后,没有进行初始化内置数据的步骤,而引起的错误.其实只要你按照安装说明一步一步下来就不会出错. 解决办法:初始化内置数据 帝国c ...

  8. OpenLayers 3 基础知识(一)

    OpenLayers 是一个专为Web GIS 客户端开发提供的JavaScript 类库包,用于实现标准格式发布的地图数据访问. 要在你的网页中使用OpenLayers(现用版本:v3.19,1), ...

  9. php源码之遍历目录下的所有的文件

    <?php //遍历目录下的所有的文件 -- 递归调用 // http://www.manongjc.com/article/1495.html function get_all_file1($ ...

  10. Servers

    Servers¶ Server interface. class novaclient.v1_1.servers.Server(manager, info, loaded=False) Bases: ...