ubuntu下配置nginx+php+mysql详解


Posted in PHP onSeptember 10, 2015

1、更新

sudo apt-get update

2、安装nginx

sudo apt-get intsall nginx

Ubuntu安装之后的文件结构大致为:

* 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下  3water.com 

*程序文件在/usr/sbin/nginx * 日志放在了/var/log/nginx中

*并已经在/etc/init.d/下创建了启动脚本nginx

* 默认的虚拟主机的目录设置在了/var/www/nginx-default

下面可以启动nginx来看看效果(请确保80端口没有其他服务在使用):

sudo /etc/init.d/nginx start

#或者简单的

service nginx start

然后打开浏览器,查看http://localhost/ 看看是否看到了”Welcome to nginx!” 如果看到了,说明安装成功.

当然,基本上,这块儿都不会出问题. 如果运行不成功,可以先

sudo killall apache2

杀掉apache进程

3、安装php

sudo apt-get install php5 php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-tidy php5-xmlrpc php5-sqlite php5-xsl

4、安装spawn-fcgi

为什么要安装spawn-fcgi呢,它用来控制php-cgi进程,以防止进程崩溃或是单进程的效率太低.

网上很多人都说要使用spawn-fcgi必须得安装lighttpd,实际上不必要,可以直接安装spawn-fcgi

运行:

sudo apt-get install spawn-fcgi

5、配置

接下来就是最让人头疼的配置.

配置Nginx和spawn-fcgi配合运行

(1).在/etc/nginx/fastcgi_params 文件最后,加入一行,可以用

sudo vi /etc/nginx/fastcgi_params

加入此行:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

(2).另外需要在PHP-CGI的配置文件(Ubuntu 上此配置文件位于/etc/php5/cgi/php.ini)中,找到cgi.fix_pathinfo选项,修改为:

cgi.fix_pathinfo=1;

这样php-cgi方能正常使用SCRIPT_FILENAME这个变量.

(3).打开/etc/nginx/sites-available/default文件在

server {
listen 80;
server_name localhost;

下面添加web根目录的绝对地址,这里是使用的是nginx的默认地址

root /var/www/nginx-default

即root和server_name同级这段即相当于apache的默认目录

如果没有这个的话,容易在执行php 文件的时候,会提示”No input file specified”.

我就曾在此绕了好大个圈子才发现问题.然后修改

#location ~ .php$ {
#fastcgi_pass 127.0.0.1:9000;
#fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
#includefastcgi_params;
#}

修改成 

location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include /etc/nginx/fastcgi_params; #包含fastcgi的参数文件地址

6、开始fast_cgi进程

sudo /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

7、设置开机启动fastcgi进程并启动

sudo vi /etc/rc.local

添加下一行

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

如果打开php文件出现:No input file specified请检查php.ini的配置中

cgi.fix_pathinfo=1

doc_root=

还有,每个虚机要根据自己不同的虚机设置不同的目录,要保证这个路径正确.

检查/etc/nginx/sites-available下的配置文件中,server内包含 root 及地址 而非location内的root

启动

fast-cgisudo /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

参数含义如下

* -f 指定调用FastCGI的进程的执行程序位置,根据系统上所装的PHP的情况具体设置
* -a 绑定到地址addr
* -p 绑定到端口port
* -s 绑定到unix socket的路径path
* -C 指定产生的FastCGI的进程数,默认为5(仅用于PHP)
* -P指定产生的进程的PID文件路径
* -u和-g FastCGI使用什么身份(-u 用户 -g 用户组)运行,Ubuntu下可以使用www-data,其他的根据情况配置,如nobody、apache等现在可以在web根目录下放个探针或php文件测试一下了

8、安装mysql

sudo apt-get install mysql-server mysql-client

中间会提示输入Root用户密码,依次输入即可.

启动MySQL

sudo /etc/init.d/mysql start

测试mysql服务是否正常:

运行

mysql -uroot -p

输入mysql密码

show databases;

如果看到下面的内容

| Database |
| information_schema |
| mysql |

则mysql已正确安装了.

至此,ubuntu下的nginx+php+mysql就安装完成了.

PHP 相关文章推荐
php操作excel文件 基于phpexcel
Jul 02 PHP
php 邮件发送问题解决
Mar 22 PHP
PHP实现多图片上传类实例
Jul 26 PHP
支持中文的PHP按字符串长度分割成数组代码
May 17 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
Aug 23 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
yii2实现根据时间搜索的方法
May 25 PHP
PHP的Json中文处理解决方案
Sep 29 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
Feb 17 PHP
PHP实现电商订单自动确认收货redis队列
May 17 PHP
PHP实现的策略模式简单示例
Aug 25 PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 #PHP
基于JQuery+PHP编写砸金蛋中奖程序
Sep 08 #PHP
四个常见html网页乱码问题及解决办法
Sep 08 #PHP
php图片水印添加、压缩、剪切的封装类实现
Apr 18 #PHP
php验证码实现代码(3种)
Sep 07 #PHP
PHP Web木马扫描器代码分享
Sep 06 #PHP
使用php-timeit估计php函数的执行时间
Sep 06 #PHP
You might like
颠覆常识!无色透明的咖啡诞生了(中日双语)
2021/03/03 咖啡文化
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
使用PHPMailer实现邮件发送代码分享
2014/10/23 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
学习JS面向对象成果 借国庆发布个最新作品与大家交流
2009/10/03 Javascript
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
Vue组件之高德地图地址选择功能的实例代码
2019/06/21 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
详解Python中find()方法的使用
2015/05/18 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
基于python实现模拟数据结构模型
2020/06/12 Python
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
海南地接欢迎词
2014/01/14 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
内科护士节演讲稿
2014/09/11 职场文书
项目负责人岗位职责
2015/02/15 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
求职简历自我评价范文
2015/03/10 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
web前端之css水平居中代码解析
2021/05/20 HTML / CSS
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/06 其他游戏