基于最新的Ubuntu 14.04(2014年9月)搭建nginx、php、mysql环境,

以下全部命令行操作:

1 由于需要大量的权限操作,方便起见临时提升权限,使用root账号

sudo su

2 安装apt源管理工具、添加nginx和php的安装源

apt-get install python-software-properties
add-apt-repository ppa:nginx/stable
add-apt-repository ppa:ondrej/php5

3,更新系统软件

apt-get update

4、安装mysql

apt-get install mysql-server

注:在安装过程中,会要求你输入MySQL的root账号的密码。

5、安装php及对mysql的支持

apt-get install php5 php5-fpm php5-mysql php-apc

如果mysqli扩展安装不上,执行如下命令:

aptitude install php5-mysql

登陆mysql

mysql -u root -p 

6、根据实际需要,选择性的安装php的各类功能模块(具体请自行百度)

apt-get install php-pear php5-dev php5-curl apt-get install php5-gd php5-intl php5-imagick apt-get install php5-imap php5-mcrypt php5-memcache apt-get install php5-ming php5-ps php5-pspell apt-get install php5-recode php5-snmp php5-sqlite apt-get install php5-tidy php5-xmlrpc php5-xsl

7、安装nginx

apt-get install nginx

8、配置php

vi /etc/php5/fpm/php.ini 找到:;cgi.fixpathinfo=1 改为:cgi.fixpathinfo=0

9、配置nginx

mkdir /www chmod 755 /www 创建一个 /www 目录设置为 755 权限 vi /etc/nginx/sites-enabled/default 找到:root /usr/share/nginx/html; 改为:root /www; 说明:将网站根目录设置到/www 目录下,注意不要写成 /www/ 这种格式, 这个习惯性的小小洁癖给我带来了意想不到的困扰,后面细说。 找到:index index.html index.htm; 改为:index index.php index.html index.htm; 说明:在默认索引文件中增加 index.php 找到:location ~ .php$ { * } 区块 做如下调整(改动之处于行末有注释): location ~ .php$ { tryfiles $uri =404; #增加 fastcgisplitpathinfo ^(.+.php)(/.+)$; #反注释

NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

With php5-cgi alone:

fastcgi_pass 127.0.0.1:9000;

With php5-fpm:

fastcgipass unix:/var/run/php5-fpm.sock; #反注释 fastcgiindex index.php; #反注释 include fastcgi_params; #反注释 }

10、解决php-fpm与nginx的小bug

按上述步骤操作后,由于nginx与php-fpm之间的一个小bug,会导致这样的现象: 网站中的静态页面 *.html 都能正常访问,而 *.php 文件虽然会返回200状态码, 但实际输出给浏览器的页面内容却是空白。 简而言之,原因是nginx无法正确的将 *.php 文件的地址传递给php-fpm去解析, 相当于php-fpm接受到了请求,但这请求却指向一个不存在的文件,于是返回空结果。 为了解决这个问题,需要改动nginx默认的fastcgiparams配置文件: vi /etc/nginx/fastcgiparams 在文件的最后增加一行: fastcgiparam SCRIPTFILENAME $documentroot$fastcgiscriptname; 关于这行的内容,多说几句,其中有两个参数: $documentroot 即是指网站的根目录,也就是我们在前面刚设置的 root /www; $fastcgiscriptname 则是指网站上的各个 *.php 文件名(其实是文件的相对路径) 这两个合在一起形成完整的 php file path,比如你的网站有个 /test/script.php 文件, nginx传递给php-fpm的完整路径就是:/www/test/script.php 我在前面说配置nginx时,写成了 root /www/; 这种写法,对于nginx不成问题, 但它在向php-fpm传递php文件路径时,会形成:/www//test/script.php 这样的文件地址无效(获取不到正确的php文件),于是出现返回空白的问题。 这个问题是如此之隐蔽,以至于我花了大量时间在查看LOG、寻找资料和调整设置上。

11,重启各项服务

service php5-fpm reload service nginx reload 重新加载各项配置改动。

12、测试

vi /www/index.php 内容: <?php echo phpinfo(); ?> 请打开你的浏览器访问:http://localhost 若一切正常,将输出php环境信息,效果如: http://image.baidu.com/i?word=phpinfo%28%29 附录: 1,一些编辑修改工作涉及到 vi 的使用,如果不会操作,请访问这个链接: http://linux.vbird.org/linux_basic/0310vi.php 2,我参考的所有资料中,最有价值的两篇,感谢前辈作者们: http://blog.segmentfault.com/ipanda/1190000000477401 http://imcn.me/html/y2014/20291.html 3,Ubuntu是个好玩具,自06年之后,再度推荐下: http://www.ubuntu.com 注意:别去用那个集成了一堆垃圾软件的所谓中国版。 如果你是为了搭建网站(而非日常家用),建议选用ubuntu server英文版。 limingx.com / 2014-09-13

基于ubuntu 14搭建nginx+php+mysql环境的更多相关文章

  1. linux上搭建nginx+php+mysql环境详细讲解

    1.mysql安装 #安装编译环境 yum install -y gcc gcc-c++ gcc-devel g++ g++-devel; yum install -y wget yum instal ...

  2. windows下搭建nginx+php+mysql环境

    一.下载需要的东西 1.nginx:http://nginx.org/en/download.html 2.php:http://php.net/downloads.php 3.mysql:(暂时先不 ...

  3. MySQL 忘记root密码解决方法,基于Ubuntu 14.10

    忘记MySQL root密码解决方法,基于Ubuntu 14.10 忘了mysql密码,从网上找到的解决方案记录在这里. 编辑mysql的配置文件/etc/mysql/my.cnf,在[mysqld] ...

  4. Ubuntu 14.04下java开发环境的搭建--3--Tomcat及MySQL的安装

    前面两篇文章,已经说明了JDK和Eclipse 的安装方法,下面简单说一下,Tomcat及MySQL的安装方法. Tomcat的安装. 在合适的地方解压apache-tomcat-6.0.39.tar ...

  5. 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!

    写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...

  6. Win7搭建nginx+php+mysql开发环境以及websocket聊天实例测试

    Win7搭建nginx+php+mysql开发环境以及websocket聊天实例测试一.下载相关安装包 1.下载nginx最新版本(nginx1.3.13版之后才支持websocket协议) 下载地址 ...

  7. 在阿里云 ECS 搭建 nginx https nodejs 环境(三、nodejs)

    在阿里云 ECS 搭建 nginx https nodejs 环境(三.nodejs) 在阿里云 ECS 搭建 nginx https nodejs 环境(三.nodejs) 第一步 指定版本源 执行 ...

  8. 在Linux(Ubuntu)下搭建ASP.NET Core环境并运行 继续跨平台

    最新教程:http://www.cnblogs.com/linezero/p/aspnetcoreubuntu.html 无需安装mono,在Linux(Ubuntu)下搭建ASP.NET Core环 ...

  9. 【转】基于Ubuntu 14.04 LTS编译Android4.4.2源代码

    原文网址:http://blog.csdn.net/gobitan/article/details/24367439 基于Ubuntu 14.04 LTS编译Android4.4.2源代码       ...

随机推荐

  1. option(recompile)

    Ref: http://www.cnblogs.com/CareySon/archive/2013/05/04/PlanCacheInSQLServerPart2.html https://msdn. ...

  2. console 输出信息

    console.info 用于输出提示性信息 console.error用于输出错误信息 console.warn用于输出警示信息 console.debug用于输出调试信息 console.info ...

  3. io与nio的区别

    传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大.使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数 ...

  4. CentOS下搭建LAMP环境详解

    前言:在这里将介绍如何在CentOS下搭建LAMP环境(全部使用源码编译安装),用于web服务器开发. •LAMP: Linux + Apache + PHP + Mysql. •系统: CentOS ...

  5. MVC中使用EF增删改查,简单的例子

    //这个是分页数据和总页数类 public class SummaryBase<TModel> { public SummaryBase(); public IList<TModel ...

  6. 【笔记】js parentsNode,lastChild,appendChild,insertBefore,nextSibling的意义及运用

    这几天看书看到这几个属性做几个笔记 parentNode:顾名思义,就是获取某元素的父元素等同于jq的parent(). *注意一下,在调用parentNode 方法的时候 调用的对象必须是用ID 或 ...

  7. IIS的配置

    一.首先是安装IIS.打开控制面板,找到“程序与功能”,点进去 二.点击左侧“打开或关闭Windows功能” 三.找到“Internet 信息服务”,按照下图打勾即可 等待安装完成 四.安装完成后,再 ...

  8. HTML5 Web app开发工具Kendo UI Web中如何绑定网格到远程数据

    在前面的文章中对于Kendo UI中的Grid控件的一些基础的配置和使用做了一些介绍,本文来看看如何将Kendo UI 中的Grid网格控件绑定到远程数据. 众所周知Grid网格控件是用户界面的一个重 ...

  9. 关于mysql的几个必知点

    实际运用中遇到的才了解到的 导出sql文件时navicat导出的sql文件形式是一条记录一个insert语句,所以文件会比较大点,后续插入也会比较慢,而用mysqldump命令导出的sql文件会合并插 ...

  10. 09B-独立按键消抖实验02——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线--普利斯队长精心奉献   实验目的: 1.复习按键的设计 2.用模块化设计的方式实现每次按下按键0,4个LED显示状态以二进制加法格式加1,每次按下按键1,4个LED显示状态以二进制加法格式减 ...