Ubuntu14.04下搭建LAMP和LNMP之nginx与php的配置

窝前几天因为某些原因就尝试安装了ubuntu14.04,然后就尝试在此环境下搭建LANMP了,呵呵呵呵呵。
当然在搭建的过程中,少不了问问度娘和谷歌==只是,搜索到的文章都好老,不太适合了。不过窝最后还是成功搭建了呢,所以窝就在自己的博客上,写点经验。

1.安装nginx

ubuntu下,使用apt管理软件包,在安装方面还是比较简单的。需要联网环境下,在终端输入

sudo apt-get install nginx

如果你是root用户,就不需要用sudo开头了。第一次使用sudo命令提升权限需要输入自己用户密码,注意在密码输入时,界面是不会有任何反应的,不要以为这个出错了哦。下载之前,会询问是否进行,输入y回车完成安装。
ubuntu下nginx配置文件的分布如下:
所有的配置文件都在/etc/nginx下
虚拟主机配置在了/etc/nginx/sites-available下
程序文件在/usr/sbin/nginx
日志放在了/var/log/nginx中
在/etc/init.d/下创建了启动脚本nginx
默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本 默认的虚拟主机的目录设置在了 /var/www,请参考/etc/nginx/sites-available里的配置)

2.启动nginx,看看是否工作。

sudo /etc/init.d/nginxstart

用浏览器打开http://localhost/。

3.安装php和mysql


sudoapt-get install php5-cli php5-cgi mysql-server php5-mysql
sudo apt-get install spawn-fcgi

如果提示已经安装过,那就不用费时间了~

4.配置nginx

开始配置。
先说明几点。在/etc/nginx目录下,存放的是所有的nginx配置文件。现在窝们要配置的是nginx与php的交互。窝们在nginx配置文件中,告诉nginx跟php交互的方法就可以了。
首先,看看/etc/nginx下有什么文件吧~

root@ACGNTalk:/etc/nginx# ls
conf.d mime.types nginx.conf sites-enabled
fastcgi_params naxsi_core.rules proxy_params uwsgi_params
koi-utf naxsi.rules scgi_params win-utf
koi-win naxsi-ui.conf.1.4.1 sites-available

可能会跟你的有点出入。
在这里,nginx.conf是主配置文件,里面用include语句指向了不同配置文件的位置,比如:

##
# VirtualHost Configs (虚拟主机配置)
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

这是说,虚拟主机的配置文件是/etc/nginx/conf.d/*.conf和/etc/nginx/sites-enabled/*。
当然也有一些基本的配置是nginx.conf它本身做的。根据include的指引,转向sites-enabled目录。
结果里面只有一个软连接指向/etc/nginx/sites-available/default,使用文本编辑器查看编辑它,有条件的可以用gedit,没有的话就vim。因为来看怎样配置nginx的读者还是比较喜欢图形界面的吧?

gedit /etc/nginx/sites-enabled/default

权限不足请用sudo提升权限。后面会指出一点,就是最好不要直接在默认文件上修改,可以先复制一个,然后在复制品上修改。
在打开的文本中,找到这么一句话:

# pass the PHP scripts to FastCGI server listeningon 127.0.0.1:9000

这句话后面就是配置php脚本的监听端口。在这句下面填写上与php交互的配置。

location ~ \.php$ {

#指定fastcgi的位置
include /etc/nginx/fastcgi_params;

#指定监听端口9000
fastcgi_pass 127.0.0.1:9000;

#指定主页
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
}

注意窝标红加粗的地方,那里应该替换成自己网站的根目录。

这样,nginx与php的交互配置就算是完成了。其实ngin要实现与php交互,必须通过
fastcgi php。

现在来重启所有服务:

/etc/init.d/nginx stop && /etc/init.d/nginx start && spawn-fcgi -a 127.0.0.1 -p 9000 -C 10 -u www-data -f /usr/bin/php-cgi

那窝们怎么知道php语言已经可以执行了呢?那当然是用php语言写一个网页来打开一下就知道了。

cd 进入自己设置的网站根目录,创建index.php

vi index.php

保存后,打开地址:127.0.0.1/index.php

这样的界面,就说明成功了。

5.一些注意事项

前面有提到过,就是不要直接在默认配置文件上修改。
还是回到这句话,

include /etc/nginx/sites-enabled/*;

虚拟主机的配置不是只读取/etc/nginx/sites-ena bled/default文件的,是会读取所有在/etc/nginx/sites-enabled/的文件!因此窝们自己创建一个配置文件,只要符合语法格式,nginx也是会执行相应配置的!那么,所谓的语法格式是咋么样的?这个就从它的默认配置文件default可以学习到。

这句话还有第二个重点,就是include指向的不是配置文件本体,而只是一个软链接。为什么要搞成这样呢?
其实这样的目的在于,可以更加灵活的指定配置方案。

/etc/nginx/sites-enabled/defaul指向的是/etc/nginx/sites-available/default文件。可以在sites-available目录下创建很多个不同的配置文件,比如目录下有文件:配置方案1,配置方案2,配置方案3,default。只要窝们在sites-enabled目录下创建一个方案1文件的软链接,那么nginx就会执行配置1。想要切换成配置3时,只要删除sites-enabled/方案1软链接,然后生成方案3的软链接就可以了。这样是不是很方便?!

相关推荐