美文网首页服务器方面php我爱编程
基于ubuntu 14搭建nginx+php+mysql环境

基于ubuntu 14搭建nginx+php+mysql环境

作者: 康熙微博私访记 | 来源:发表于2016-05-22 23:58 被阅读385次

    基于ubuntu 14搭建nginx+php+mysql环境

    2014-09-13 02:40:16
    前段时间的折腾,颇费一番周折,过程中发现网上的许多资料比较老旧过时了,
    所以在这里也简单把过程重新整理一遍,争取一帖解决问题。
    基于最新的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.fix_pathinfo=1
    改为:cgi.fix_pathinfo=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$ {
    try_files $uri =404; #增加
    fastcgi_split_path_info ^(.+.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:

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

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

    按上述步骤操作后,由于nginx与php-fpm之间的一个小bug,会导致这样的现象:
    网站中的静态页面 *.html 都能正常访问,而 *.php 文件虽然会返回200状态码,
    但实际输出给浏览器的页面内容却是空白。
    简而言之,原因是nginx无法正确的将 *.php 文件的地址传递给php-fpm去解析,
    相当于php-fpm接受到了请求,但这请求却指向一个不存在的文件,于是返回空结果。
    为了解决这个问题,需要改动nginx默认的fastcgi_params配置文件:
    vi /etc/nginx/fastcgi_params
    在文件的最后增加一行:
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    关于这行的内容,多说几句,其中有两个参数:
    $document_root 即是指网站的根目录,也就是我们在前面刚设置的 root /www;
    $fastcgi_script_name 则是指网站上的各个 *.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环境

        本文链接:https://www.haomeiwen.com/subject/mwharttx.html