Ubuntu系统下lnmp环境搭建和Nginx多站点配置
最近需要使用Ubuntu作为服务器搭建Lnmp环境,顺便将操作过程写下来,与大家分享。如有不足之处,欢迎大家提出不同意见。(本文默认读者已经熟悉相关linux命令的使用,比如创建文件和文件夹,编辑文件的命令等。)
操作系统:Ubuntu 15.10
本系统是新装的,所以没有Nginx、mysql和php环境。如果之前有装过这些环境的还得先把之前的软件先卸载。
一、安装MySQL
直接输入命令:sudoapt-get install mysql-server mysql-client
中间需要你输入root账户的密码,按要求操作就可以了。
二、安装Nginx
直接输入命令:sudo apt-get install nginx

在本地浏览器输入127.0.0.1,出现以下页面说明安装成。

三、安装PHP5
直接输入命令:sudo apt-get install php5-fpm

安装完还要安装需要用到的拓展,比如:
php5-mysql、php5-gd、php5-json、php5-curl……
具体可以使用命令sudo apt-cache search php5查看拓展信息。
然后使用命令sudo apt-get install php5-mysql php5-gd php5-json php5-curl 进行拓展安装。
安装完写个test.php文件测试下,执行结果如图:
<?php
$a="php test\n";
echo $a;
?>

php安装成功!
安装过程到这里算是完成,接下来就是配置让Nginx做php5-fpm的代理了。(不懂php5-fpm是什么鬼的同学就自己去搜索吧,后面还有fastcgi等概念也都应该了解下。大神请无视~)
四、配置nginx做代理
进入/etc/nginx目录,打开nginx.conf配置文件可以在http模块底部看到一行:
include /etc/nginx/sites-enabled/*;
因此我们可以在/etc/nginx/sites-enables目录下新建个配置文件test.conf,内容如下:

其中设置fastcgi_pass 为127.0.0.1:9000,那么还需要到/etc/php5/fpm/pool.d/www.conf文件中找到:
listen = /var/run/php5-fpm.sock
将其注释,在下方新增一行:
listen = 127.0.0.1:9000

保存退出后重启php5-fpm:service php5-fpm restart
给test.conf中配置的是8080 端口,所以还要配置防火墙开启8080端口(后面多站点的配置端口同理):sudo ufw allow 8080
在配置的站点的根目录也就是说/var/www/test下新建文件index.php:
<?php
Phpinfo();
?>
配置完在本地浏览器输入:127.0.0.1:8080 竟然出现空白页面,找到/etc/nginx/fastcgi_params,也就是前面test.conf文件中include fastcgi_params的文件,在其头部新增一行:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#设置脚本文件请求的路径。
保存后重启nginx或者使用命令:nginx –s reload 重新加载配置文件。到浏览器刷新,成功

五、不同端口多站点配置
像第一个站点一样先在/var/www目录下新建两个文件test2和test3分别作为另外两个站点的目录。
新建测试文件/var/www/test2/index.php:
<?php
$test=”test2 site \n”;
echo $test;
?>
再新建测试文件/var/www/test3/index.php:
<?php
$test=”test3 site \n”;
echo $test;
?>
然后到/etc/nginx/sites-enabled目录下新建两个站点配置文件,像刚刚新建的test.conf一样。配置文件:/etc/nginx/sites-enabled/test2.conf

配置文件:/etc/nginx/sites-enabled/test3.conf

配置完,sudo nginx –s reload重新加载配置文件。防火墙开启相应8082和8083端口。
测试站点test2:本地浏览器输入:127.0.0.1:8082

测试站点test3:本地浏览器输入:127.0.0.1:8083

六、80端口做多站点配置
以上是不同端口多个站点配置,下面我们看看在80端口如何做多站点配置
上面的操作已经实现了不同端口多个站点的配置,现在修改/etc/nginx/sites-enable/test2.conf和/etc/nginx/sites-enable/test3.conf两个配置文件,将监听的端口全部改为80端口。站点目录不变:


改完重新加载nginx配置文件
使用刚刚在配置文件里设置的server_name来访问,也就是test2.com和test3.com,还得修改host文件。打开/etc/host文件,新增两行:
127.0.0.1 test2.com
127.0.0.1 test3.com
打开本地浏览器分别输入test2.com和test3.com查看结果:


配置成功!
总结:
1、 每次修改完nginx配置文件之后都需要让重新加载配置文件,也可以重启。php5-fpm也一样。
2、本文虽然讲解如何搭建环境,和配置环境,但对于相应环境的运行原理并没有做过多讲讨论。所以,要想真正熟悉相应环境的运行原理,还得下点功夫去了解相应的知识点。例如fastcgi_params文件的作用,nginx配置文件中每个模块的功能,和php5-fpm的机制等。
3、安装配置过程中难免会出现一些意想不到的问题,这种情况下要学会分析日志定位问题。日志一般都放在/var/log目录下,比如刚刚配置第一个站点是访问遇到空白页面,但是看/var/log/nginx/access.log日志却显示状态码为200,这说明nginx是收到请求的,只是没有把请求的内容发给php5-fpm,所以定位到问题是出现在nginx和php5-fpm的通信上。
Ubuntu系统下lnmp环境搭建和Nginx多站点配置的更多相关文章
- Ubuntu系统下QEMU环境搭建
(这篇文章是在搭建QEMU环境时,在网上找到了一些教程资料,并在实际操作中遇到的一些问题的整理) 下载Linux内核 下载内核有两种方法,一种是用git直接下载内核代码树,方便后面的内核开发.另一种是 ...
- centos7系统下 docker 环境搭建
运行环境: VMware Workstation Pro 在虚拟机中安装centos7系统, 选择最小安装, 网络连接方式选择的桥接(与宿主机在同一IP段)centos7一定要安装64位, docke ...
- LNMP环境搭建:Nginx安装、测试与域名配置
Nginx作为一款优秀的Web Server软件同时也是一款优秀的负载均衡或前端反向代理.缓存服务软件 2.编译安装Nginx (1)安装Nginx依赖函数库pcre pcre为“perl兼容正则表达 ...
- Linux下-LNMP环境搭建博客网站(全过程)
通常我们所说的LNMP是指一个网站基本的组织框架,即Linux系统支持,Nginx静态服务,Mysql数据库支持以及PHP动态编程语言支持.目前Mysql数据库被Oracle数据库分析公司收购,其创始 ...
- ubuntu环境下lnmp环境搭建(2)之Nginx
1. ubuntu编译安装nginx http://www.cnblogs.com/zhangjun516/archive/2013/02/03/2890990.html 1. 手动编译安装 Ngin ...
- Linux 下LNMP环境搭建_【all】
LNMP = Linux + Nginx + Mysql + PHP 1.0 Linux环境搭建 Linux 系统安装[Redhat] 1.1. FastCGI介绍 1.什么是CGI(common g ...
- 在阿里云Centos下LNMP环境搭建
首先,需要安装C语言的编译环境,因为Nginx是C语言编写的.通常大多数Linux都会默认安装GCC,如果没有的话,可以如下安装. 安装make: yum -y install gcc automak ...
- php手动搭建wamp环境(一)--之 Windows系统下PHP环境搭建
1.PHP环境搭建的前提是 Apache HTTP Server (Apache 服务器)已经安装部署成功,并可以正常访问到服务器的主页面.Apache HTTP Server 的安装部署已经在上一篇 ...
- node在Fedora 22系统下开发环境搭建
事实上,环境搭建在linux系统还是比較简单的,下载已经编译好的包,配置一下环境变量. 或者下载源代码,自己编译. 这里记录一下,主要是node版本号变化节奏很块的情况下.怎样配置一次环境变量就不要再 ...
随机推荐
- js三级地区联动
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head ...
- 常用 Git 命令
拉取远端仓库代码: 如果本地已经存在文件夹,先cd进去,然后敲命令: git fetch (作用是拉取远端仓库里的代码) git merge (作用是将远端仓库里的代码与本地仓库里的代码合并,如果有冲 ...
- Linux正则表达式
正则表达示的组成: 一般字符:没有特殊意义的字符 特殊字符(meta字符):元字符,有在正则表达式中有特殊意义 正则表达式中常见的meta字符 POSIX BRE与ERE中都有的meta字符 \ 通常 ...
- SpringMVC中如何在网站启动、结束时执行代码(详细,确保可用)
在一个网站启动.结束时,我们经常有些操作是需要执行的. 熟悉Asp.net的朋友,使用Global.asax很容易就搞定,在其中有Application_Start和Application_E ...
- 批量下载小说网站上的小说(python爬虫)
随便说点什么 因为在学python,所有自然而然的就掉进了爬虫这个坑里,好吧,主要是因为我觉得爬虫比较酷,才入坑的. 想想看,你可以批量自动的采集互联网上海量的资料数据,是多么令人激动啊! 所以我就被 ...
- Visual Studio高级调试技巧
1. 设置软件断点,运行到目标位置启动调试器 方法①:使用汇编指令(注:x64 c++不支持嵌入汇编) _asm 方法②:编译器提供的方法 __debugbreak(); 方法③:使用windows ...
- POCO库——Foundation组件之加解密Crypt
加解密Crypt:内部提供多种加解密方式.信息摘要提取.随机数产生等,具体的算法内部实现不做研究学习: DigestEngine.h :DigestEngine类作为各种摘要提取的基类,提供必要的接口 ...
- Chrome Extension 检查视图(无效)处理方法
最近闲来无事,简单看了下Chrome扩展的开发,并且开发一个小小的翻译插件(TranslateBao)作为练手,开发细节不详述了,如果有新学习chrome extension开发的新人,可以参考源码, ...
- 【leetcode】Roman to Integer
题目描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range fr ...
- viewgager
CycleRotationView:自定义控件,主要功能是实现类似与各种商城首页的广告轮播图.其实像这种比较常见的自定义控件早就满大街了,虽然说"不要重复发明轮子",但是不代表不用 ...