关于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/ 你将会看到如下画面:
默认情况下,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, 查看是否访问成功,哈哈,说说你看到了什么~
参考: