LEMP是一组用于开发运行Web程序的开源软件简称,各首字母依次代表:Linux,Nginx(发音:Engine X),MySQL,PHP;与传统的LAMP相比,使用的Web服务器是Nginx替代Apache;Nginx是一款开源免费的高性能HTTP服务器,它稳定,功能强大,配置简单,消耗资源少;在国内有相当大的市场,很流行。
下面就来介绍在Ubuntu下如何安装。
在安装软件之前,确保你登录Ubuntu的用户有root操作权限,可以使用sudo
命令。
本篇文章主要使用Ubuntu的apt-get来安装所有的程序,因此在安装之前确保使用最新的软件包库,应该先使用如下命令对apt-get进行一次更新:
sudo apt-get update
安装MySQL,我们在终端中键入如下命令:
sudo apt-get install mysql-server mysql-client
New password for the MySQL "root" user: <-- 你的root用户密码
Repeat password for the MySQL "root" user: <-- 确认你的root用户密码
Nginx已经做为一个软件安装包在Ubuntu系统库中,因此同上面安装MySQL一样,直接在终端键入如下命令,进行安装:
sudo apt-get install nginx
为了检测Nginx是否安装成功,在终端中直接运行如下命令,启动Nginx:
sudo service nginx start
如果一切顺利,在浏览器中输入:http://localhost/ 你将会看到如下画面:
默认情况下,Nginx设置的默认根目录为:/usr/share/nginx/www.
可以进入该目录查看上面页面HTML。
同样安装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的配置文件进行一些简单的修改,如下使用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虚拟主机配置目录:
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的配置功能详情,我们可以创建一个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