Nginx-Tips-Php-Uploading-Progress-Bar-0000

48次阅读

共计 2930 个字符,预计需要花费 8 分钟才能阅读完成。

本文是关于在 Linux 下安装 Nginx+PHP 并测试文件上传进度模块的一个备忘。

Runtime Environment

操作系统:Ubuntu 13.10 64bit (VMWare, 宿主是 Windows 7 Ultimate)
CPU: 1 x 2 core(i5)
Mem: 3048M
HD: 100G

安装 Nginx

在安装 Nginx 之前,你需要知道如何在 Unity 环境下运行 Terminal(终端)。后文的命令都在 Terminal 下运行。
打开一个 Terminal,准备运行各种命令。

更新 Ubuntu

sudo apt-get update
sudo apt-get upgrade

安装 Nginx:

sudo apt-get install nginx php5-fpm build-essential libc6 libpcre3 libpcre3-dev libpcrecpp0 libssl0.9.8 libssl-dev zlib1g zlib1g-dev 

除 nginx 和 php5-fpm 外,其它都是用于将来编译 nginx 和附加模块所必需的。
官方关于 Nginx 的安装请参考 Here
安装完成后,可以通过浏览器(Ubuntu 下通常是 Firefox)打开 http://localhost 来查看 Nginx 是 …。幸运的话可以看到“Welcome to nginx”的页面。现在 php 功能还没有打开,需要修改 Nginx 的设置文件。
关于 Nignx 配置文件的各种知识,请个人放狗或访问站点 Nginx.org。个人觉得先看看这个扫盲贴,先有个初步概念,然后再动手修改配置文件比较好。

重新启动 Nginx

在后续以及开发过程中,尤其是在学习 Nginx 的配置设定时,会频繁的重新启动 Nginx。使用以下脚本:

sudo /etc/init.d/nginx restart

也可以使用以下命令平滑重启:

sudo /etc/init.d/nginx -s reload

Configure Gedit

因为 Nginx 的设定文件属于 root,所以需要相应权限能够进行修改。在修改设定之前要进行以下准备工作:设置文本编辑器 gedit(显示的名称为 Text Editor),使之能以 root 权限启动。这样我们就能够使用 gedit 随意修改属于 root 的文件而不必担心权限不够不能存盘的问题。个人偏好 gedit。当然,喜欢 vim 的也尽可用之。
在 /usr/share/applications/ 下找 gedit.desktop 文件,以下列命令打开:

gksudo gedit /usr/share/applications/gedit.desktop

根据提示输入密码,我们将在 gedit 中编辑 gedit 的快捷方式配置文件:
将第 19 行修改为:

Actions=Window;Document;Runasroot;

在末尾,添加以下内容:

[Desktop Action Runasroot]
Name=Run as root
Exec=gksudo -k -u root gedit
OnlyShowIn=Unity;

将 Gedit 锁定到 Unity 的侧栏上,以后右键单击该图标,就会有 Run as root 的选项,可以随意编辑各种文件。

Enable PHP

修改 Nginx 设定以打开 PHP 功能
主设定文件 Nginx.conf 现在不用理会。先用 Gedit 打开 /etc/nginx/sites-available/default 文件。
修改根目录指向和添加对 index.php 的支持。个人偏好使用 www 作为网站的根。

# REV:igame@Dec-19-2013: Change root directory from html to www.
# root /usr/share/nginx/html;
root /usr/share/nginx/www;
# REV:igame@Dec-19-2013: Add index.php.
index index.php index.html index.htm;

打开 PHP 功能,默认是注释掉的。

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
# REV:igame@Dec-18-2013: Enable PHP & FastCGI
location ~ \.php$ {
    # REV:igame@Dec-18-2013: Add the try_files tag as www.howtoforge.com's recommendation.
    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;
    
}

现在,重新启动 Nginx 使修改生效。修改也有可能出错,请查看 /var/log/nginx/error.log 来检查:

cat /var/log/nginx/error.log

排除错误后,继续重启 Nginx。

修改 PHP-fpm 设置

修改 /etc/php5/fpm/php.ini,找到 cgi.fix_pathinfo,设置为 cgi.fix_pathinfo=0。

; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo=0

测试 PHP

按官方指引,在网站根目录下创建 info.php 来测试 PHP。内容如下:

<?php
phpinfo();
?>

然后,使用浏览器打开 http://localhost/info.php 就可 …,尽情欣赏吧。


Tips


如果浏览不能打开 info.php,通常是权限问题引起的。使用以下命令修改 info.php 的所有者和所属组:

sudo chown root info.php
sudo chgrp root info.php

Security? What is that?
安装和设置,也请参考这个链接。
再有问题,请放狗搜索。

正文完
 0