Ubuntu下安装Nginx, MySQL, PHP (LEMP)

关于LEMP

LEMP是一组用于开发Web程序的开源软件简称,各首字母依次代表:Linux,Nginx(发音:Engine X),MySQL,PHP;与传统的LAMP相比,使用的Web服务器是Nginx替Apache;Nginx是一款开源的高性能HTTP服务器,它稳定,功能强大,配置简单,消耗资源少;在国内有相当大的市场,很流行。

下面就来介绍在Ubuntu下如何安装。


首先

在安装软件之前,确保你登录Ubuntu的用户有root操作权限,可以使用sudo命令。


第一步,更新Apt-Get

本篇文章主要使用Ubuntu的apt-get来安装所有的程序,因此在安装之前确保使用最新的软件包库,应该先使用如下命令对apt-get进行一次更新:

sudo apt-get update

第二步,安装MySQL

安装MySQL,我们在终端中键入如下命令:

sudo apt-get install mysql-server mysql-client

此时系统自动进行MySQL的安装,而在此期间,安装程序会问你,向其提供设置数据库root用户的密码;该密码将用于以后使用root@locathost用户登录MySQL数据库;
New password for the MySQL "root" user:   <-- 你的root用户密码
Repeat password for the MySQL "root" user:   <-- 确认你的root用户密码


第三步,安装Nginx

Nginx已经做为一个软件安装包在Ubuntu系统库中,因此同上面安装MySQL一样,直接在终端键入如下命令,进行安装:

sudo apt-get install nginx

为了检测Nginx是否安装成功,在终端中直接运行如下命令,启动Nginx:

sudo service nginx start

如果一切顺利,在浏览器中输入:http://localhost/ 你将会看到如下画面:

Ubuntu下安装Nginx, MySQL, PHP (LEMP)_第1张图片

默认情况下,Nginx设置的默认根目录为:/usr/share/nginx/www.可以进入该目录查看上面页面HTML。


第四步,安装PHP

同样安装PHP使用如下命令:

sudo apt-get install php5

而为了以后开发使PHP兼具一些其它功能,我们还要安装一些PHP的常用扩展组件,如下在终端中执行:

sudo apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-fpm

在这里我们使用了php5-fpm组件,用于PHP与Nginx的结合通过mod_fastcgi模式;关于php5-fpm组件的介绍详情可以参考:https://www.zybuluo.com/phper/note/50231


第五步,配置PHP

我们需要对PHP的配置文件进行一些简单的修改,如下使用Vim编辑打开php5-fpm目录中的php.ini文件:

 sudo vim /etc/php5/fpm/php.ini

找到行cgi.fix_pathinfo=1,将1改为0.

cgi.fix_pathinfo=0

如果在这里设置成数字1,那么PHP解析器在处理文件请求时,则会尽量将请求作为一个可执行的PHP文件来执行,这样就存在一系列的安全问题,因此在这里将其设置为0,确保PHP只执行对应扩展名的程序文件。

举例来说,开启的危害就是假设你的网站有http://xx.com/a.jpg这样的一张图片,我通过http://xx.com/a.jpg/foo.php就可以查看到这个文件的二进制内容,意思就是可以通过php来执行它.问题就来了,如果你的网站允许用户上传图片,那么用户就可以构造一些恶意的代码,并伪装成图片上传.然后通过上面说的那种方式就可以在你网站的服务器上面通过php跑恶意代码了.

详情参见:http://www.laruence.com/2010/05/20/1495.html


接着我们还需要对php5-fpm的配置做一下小的改动,使用Vim编辑器,打开php5-fpm的配置文件:

sudo vim /etc/php5/fpm/pool.d/www.conf

找到listen = 127.0.0.1:9000这一行,将其修改为/var/run/php5-fpm.sock:

listen = /var/run/php5-fpm.sock

这里的目地是,使php-fpm以Unix socket方式运行,避免了TCP的开销.

修改后,保存并退出,然后重启php5-fpm:

sudo service php5-fpm restart


第六步,配置Nginx

该节主要讲解,如何在Nginx下设置虚拟主机,首先进入Nginx虚拟主机配置目录:

cd /etc/nginx/sites-available

使用ls -l命令你将会看到有一个默认的配置文件,default,在这里我们使用default做为模板,构建新的配置:

sudo cp default demo

在这里复制default,命名为demo,然后编辑demo文件,修改内容如下:

[...]
server {
        charset utf-8;    # 默认编码

        listen   80;
     

        root /usr/share/nginx/www;    # 虚拟主机目录
        index index.php index.html index.htm;  # 设置引导文件,添加index.php支持

        server_name example.com;      # 虚拟主机域名

        access_log  /var/log/nginx/example.com-access.log;  # 访问日志
        error_log   /var/log/nginx/example.com-error.log;   # 错误日志

        location / {
                try_files $uri $uri/ /index.html;
        }

        error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
              root /usr/share/nginx/www;
        }

        # pass the PHP scripts to FastCGI server listening on the php-fpm socket
        # 通过mod_fastcgi模式解析执行PHP文件请求
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;   # 修改mod_php模式127.0.0.1:9000为上面安装的mod_fastcgi模式
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
                
        }

}
[...]

保存后,demo文件并没有在Nginx中生效,为了使其生效,我们需在/etc/nginx/sites-enabled中建立demo文件的链接文件:

cd /etc/nginx/sites-enabled
sudo ln -s  /etc/nginx/sites-available/demo demo

最后重载Nginx服务器,便其配置生效:

sudo service nginx reload


第七步,创建一个php info页面

为了验证我们以上配置是否成功,且查看PHP的配置功能详情,我们可以创建一个phpinfo.php的文件,使用PHP默认方法,列出PHP详情信息;

根据上面配置的demo文件,我们在/usr/share/nginx/demo目录下,使用vim新建一个名为phpinfo.php的文件

cd /usr/share/nginx/demo
sudo vim phpinfo.php

在其中进入如下代码:

<?php
phpinfo();
?>

然后保存后,退出。

由于上面配置Nginx的虚拟主机域名是example.com,因此我们还要在系统host文件中加一条IP指向:

sudo vim /etc/hosts

如上使用vim在系统hosts文件中加了一条

127.0.0.1 example.com

最后在浏览器中键入: http://example.com/phpinfo.php, 查看是否访问成功,哈哈,说说你看到了什么~


参考:

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-12-04

https://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-lemp-on-ubuntu-12.04-lts



你可能感兴趣的:(Ubuntu下安装Nginx, MySQL, PHP (LEMP))