当前位置: 首页 > news >正文

烂泥:学习ubuntu之快速搭建LNMP环境

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

本文由秀依林枫提供友情赞助,首发于烂泥行天下

现在公司使用的都是ubuntu系统,这几天由于个别项目需要,需要搭建一个LNMP环境。为了快速搭建这个环境,我使用是apt-get方式进行安装。具体的操作步骤,看下面的文章。

PS:按照在centos系统下nginx与php-fpm集成是行不通的,因为按照centos下配置的话,nginx访问的主页是空白的。

一、安装nginx

我们首先来安装nginx,使用如下命令:

sudo apt-get -y install nginx

clip_image001

nginx安装完毕后,我们来查看nginx都安装了什么文件。使用如下命令进行查看,如下:

dpkg -S nginx

clip_image002

通过上图,我们可以看出nginx默认的安装位置是/etc/nginx目录,而且nginx的配置文件nginx.conf也是在该目录下。

除此之外,nginx的默认网站目录在/usr/share/nginx/html下,默认nginx网站配置文件为/etc/nginx/sites-available/目录下的default文件。

现在我们来启动nginx,可以使用如下命令:

sudo /etc/init.d/nginx start

sudo service nginx start

以上两条命令都可以启动nginx,我个人比较倾向于使用第一条命令,因为这个是直接通过nginx的启动脚本来启动的。

netstat –tunlp

sudo lsof -i :80

clip_image003

通过网页进行访问看看实际效果,如下:

clip_image004

或者通过curl命令进行访问,如下:

curl http://192.168.1.9

clip_image005

二、安装php与php-fpm

nginx安装完毕后,我们现在来安装php与php-fpm,使用如下命令,如下:

sudo apt-get -y install php5 php5-fpm php5-cli

clip_image006

查看php版本,如下:

php5 -v

clip_image007

三、nginx与php-fpm集成

nginx与php安装完毕后,我们现在开始把nginx与php集成。其实nginx与php集成是通过fastcgi来实现,而fastcgi我们一般使用的是php-fpm。

php-fpm与nginx通信方式有两种,一种是TCP方式,一种是unix socket方式。

TCP方式就是使用TCP端口连接,一般是127.0.0.1:9000。

Socket是使用unix domain socket连接套接字/dev/shm/php-cgi.sock(很多教程使用路径/tmp,而路径/dev/shm是个tmpfs,速度比磁盘快得多),在服务器压力不大的情况下,tcp和socket差别不大,但是在压力比较满的时候,使用套接字方式,效果确实比较好。

3.1 TCP方式

先来修改nginx的默认网站文件default,如下:

sudo vi /etc/nginx/sites-available/default

location ~ \.php$ {

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi_params; }

clip_image008

现在来修改nginx的fastcgi_params文件,添加如下命令。

注意:这个命令一定要添加,否则nginx与php集成后,网页会显示空白。

sudo vi /etc/nginx/fastcgi_params

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

clip_image009

修改nginx的默认主页,如下:

sudo vi /usr/share/nginx/html/index.php

<?php phpinfo(); ?>

clip_image010

现在我们再来修改php的配置文件php.ini,如下:

sudo vi /etc/php5/fpm/php.ini +758

clip_image011

除此之外,我们还需要修改php-fpm的配置文件www.conf,如下:

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

listen = 127.0.0.1:9000

clip_image012

以上修改完毕后,我们现在来重启nginx与php-fpm,如下:

sudo /etc/init.d/nginx restart

sudo /etc/init.d/php5-fpm restart

clip_image013

现在我们来访问nginx,如下:

http://192.168.1.9/index.php

clip_image014

现在来查看系统的端口,如下:

netstat -tunlp

clip_image015

以上就是php-fpm与nginx的TCP通信方式。

3.2 socket方式

修改nginx的默认网站文件default,如下:

sudo vi /etc/nginx/sites-available/default

location ~ \.php$ {

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_index index.php;

include fastcgi_params; }

clip_image016

现在再来修改php-fpm的配置文件www.conf,如下:

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

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

clip_image017

其他的修改和TCP方式连接的是一样的,现在我们再来重启nginx与php-fpm。如下:

sudo /etc/init.d/nginx restart

sudo /etc/init.d/php5-fpm restart

clip_image013[1]

现在我们再来看看,php-fpm是否占用系统端口。如下:

clip_image018

可以看到此时php-fpm并没有占用系统端口。

四、安装mysql

现在来开始安装mysql,如下:

sudo apt-get –y install mysql-server mysql-client php5-mysql

clip_image019

clip_image020

clip_image021

mysql安装完毕后,我们现在来使用php连接mysql。创建ilanni.php文件,内容如下:

sudo vi /usr/share/nginx/html/ilanni.php

<?php

$host='127.0.0.1';

$root='root';

$pwd='123456';

$con= mysql_connect($host,$root,$pwd);

if ( $con == false ) {

echo "connect false";

} else{

echo "connect true";

}

?>

clip_image022

现在来通过php来访问mysql,如下:

clip_image023

通过上图,我们可以看到php已经正常连接mysql数据库,这也说明mysql也已经安装成功。

转载于:https://my.oschina.net/lanni654321/blog/476312

相关文章:

  • U盘安装Windows
  • C语言时间处理
  • PHP IDE 框架 服务器 相关
  • liux下ftp链接服务器的常用命令
  • 最近有个需求,就是把某个网址跳转到另外一个网址
  • socket server framework 框架
  • ASP.NET异步处理
  • 第六回 煤渣场对垒藏高人 小饭馆煮面论英雄[林大帅作品连载]
  • grunt安装
  • PCA的数学原理
  • Codeforces Round #302 (Div. 1)
  • Pencil OJ 01 开发的准备
  • 证明整数为平方数
  • 虚拟机类加载机制
  • 命令别名alias设置
  • 【node学习】协程
  • Debian下无root权限使用Python访问Oracle
  • ES学习笔记(12)--Symbol
  • Java 网络编程(2):UDP 的使用
  • JavaScript学习总结——原型
  • Java的Interrupt与线程中断
  • Laravel Mix运行时关于es2015报错解决方案
  • Netty 4.1 源代码学习:线程模型
  • oldjun 检测网站的经验
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • tensorflow学习笔记3——MNIST应用篇
  • vue中实现单选
  • 今年的LC3大会没了?
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 算法---两个栈实现一个队列
  • 通过git安装npm私有模块
  • 为视图添加丝滑的水波纹
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 一文看透浏览器架构
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (初研) Sentence-embedding fine-tune notebook
  • (六)Hibernate的二级缓存
  • (一) springboot详细介绍
  • (已解决)什么是vue导航守卫
  • (转) Face-Resources
  • (转)iOS字体
  • (转载)深入super,看Python如何解决钻石继承难题
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .net 简单实现MD5
  • .Net6使用WebSocket与前端进行通信
  • .Net环境下的缓存技术介绍
  • .Net中间语言BeforeFieldInit
  • ??eclipse的安装配置问题!??
  • @JSONField或@JsonProperty注解使用
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • @private @protected @public