150Nginx 运维基础入门--LNMP系统安装

实验原理

什么是 LNMP
首先这里要简单介绍下 LAMP 和 LNMP,这两个都是在网站服务器架构中的系统环境。

上节中我们简单介绍过:
LAMP 指的是:Linux+Apache+MySQL+Perl/PHP/Python
LNMP 指的是:Linux+Nginx+MySQL+PHP

我们可以从表面看出,这两个框架大致的区别就在于 Apache 和 Nginx 上面(其实,远远不止这些)。我们在上节已经分析了 Nginx 与 Apache 的各种优缺点,这里就不再多加赘述。

这就是 LNMP 的组成:


image.png

实验步骤

LNMP 系统安装(L-N-M-P)
前期准备(环境要求,库依赖):
如果你的物理机上用 apt-get 安装了老版的 Nginx,或者你的 Nginx 有问题,可以使用 sudo apt-get purge nginx 命令删除已安装的 Nginx。

针对后面的 nginx 源码编译安装(如果选择 apt-get 的方式则不需要,我们在这里会有简单的库依赖列表,需要读者参照解决。

ssl 功能需要 openssl

gzip 模块需要 zlib

rewrite 模块需要 pcre

这些库可以点击后在相应官网进行下载、解压、编译、安装。(下载最新的最好)

L(Linux 安装)

在 LNMP 中的作用或角色:
Linux 是一类 Unix 计算机操作系统的统称,是目前最流行的免费操作系统。LNMP 中以它作为平台。
Linux 的常见发行版有:debian、centos、ubuntu、fedora、gentoo 等。
我们实验楼的环境本身就是 ubuntu,可直接进行下一步操作。如果想拥有自己的 ubuntu 实验环境,赶紧动手实现

N(Nginx 安装)

在 LNMP 中的作用或角色:Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
安装方式
决定因素:主要针对不同人群、不同需求,对于一般新手而言 apt-get 就够了;如果你乐于折腾,需要定制,那就源码安装吧(这里只会简单叙述)。强烈建议 apt-get 直接安装。
(1)直接 apt-get 安装

sudo apt-get update
sudo apt-get install -y nginx
image.png

这里要是安装失败的,很可能就是源的问题了。现在的软件源比较完整,基本都包含了 Nginx,如果源列表实在没有, 进入系统设置-软件更新切换另一个源就好了,ubuntu 官方源(国内速度较慢)、souhu 源、163 都有(更换源最后记得 sudo apt-get update 更新软件包列表数据库,不然不会生效)。
ubuntu 因为安全策略,每次执行安装命令时一般需要加上 sudo 去操作。建议在安装过程中使用 sudo 而不是直接切换到 root 用户,这样虽然表面繁琐,但是安全。
(2)源码安装
这个方法比较繁琐这里简单阐述下,因为 ubuntu 默认的策略是什么库都不安装,经过上面的库依赖解决,可以从中了解到 Nginx 依赖的库有哪些,并且可以定制安装组件或者不安装组件,开机启动或开机不启动等等。

nginx 源 下载最新的源代码压缩包,解压编译安装就好。

Linux 中最好把源代码存放在 /usr/local/src 文件夹中

完成安装后的测试
所有的启动配置文件都在 /etc/init.d/nginx 这个目录下,所以相关操作都可以在这个文件夹启动命令,这其实就是一个启动脚本。
启动命令:

sudo /etc/init.d/nginx start

# 或者使用如下的命令

sudo service nginx start

启动完毕后,打开浏览器,访问 http://localhost 一定要刷新以确认。

image.png

在实验楼的新版本环境里,由于环境升级的时候安装了 apache,apache 的 html 文件覆盖了 nginx 的文件,所以也可能会展示 apache 的页面:
image.png

停止命令:

sudo /etc/init.d/nginx stop

# 或者使用如下的命令

sudo service nginx stop

停止过后,再打开浏览器,访问 http://localhost 同样需要刷新确认

image.png

重启命令:

sudo /etc/init.d/nginx restart

# 或者使用如下的命令

sudo service nginx restart

nginx 安装后的初级配置
在后面的章节中,关于 Nginx 的配置有较详细的讲解及实战。这里只是基础的配置

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

PHP 需要配置 location ~ .php$ {},所以要让 php 与 nginx 一起工作,就得在这个配置文件中配置这个模块。
找到 location ~ .php 配置段,修改内部配置为如下内容:

location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
image.png

紧接着测试配置文件是否正确:

sudo nginx -t
image.png

测试成功以后重载配置文件,使配置文件生效:

sudo service nginx reload

image.png

关于测试的话要等下面的 php 一同配置好后一起测试
如果对 nginx default 配置还不是很清楚的或者有兴趣的读者可以参考 示例 1示例 2

M(MySQL 安装)

安装
MySQL 是一个小型关系型数据库管理系统,其安装分为服务端与客户端
安装命令如下:(由于实验楼环境中已经装有 Mysql。安装部分就省略掉。)

sudo apt-get install mysql-server mysql-client

然后你会看见输入密码的界面,你只需接下来输入管理员密码就行。
如果不安装,直接使用环境中的 MySQL,只需要在环境中使用 sudo service mysql start 启动 MySQL,MySQL 用户为 root,密码为空。
修改 MySQL 的配置文件

sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

将 bind-address = 127.0.0.1 注释掉(在对应的行前面添加 # ),就可以远程连接数据库了


image.png

P(php 安装)

在 LNMP 中的作用或角色:nginx 本身不能处理 PHP,它只是个 web 服务器,当接收到请求后,如果是 php 请求,则发给 php 解释器处理,并把结果返回给客户端。
php-fpm 是一个守护进程(FastCGI 进程管理器)用于替换 PHP FastCGI 的大部分附加功能,对于高负载网站是非常有用的。

sudo apt-get install -y php7.0-fpm

安装好以后连同上面的 Nginx 一同测试:
现在创建一个探针文件保存在 /var/www/html 目录下(这个目录就是刚刚 nginx 配置文件中 root 目录),以便测试。

sudo vim /var/www/html/phpinfo.php
image.png

接下来使用命令启动 php7.0-fpm 服务:

sudo service php7.0-fpm start

然后访问 http://localhost/phpinfo.php记得刷新
接下来你就会看见:

image.png

修改各模块配置文件

修改各个模块配置文件,达到能互相支持的目的:
(1)首先,要想让 php 支持 MySQL,还需要安装一系列的配套模块。
在刚才打开的网页中,这是没有装模块的界面,搜索可以看出,里面没有任何 MySQL 的启动信息


image.png

你需要安装 php-mysql 模块,使用如下命令进行安装:

sudo apt-get install php-mysql

安装好以后,紧接着你需要需要重启 php

sudo service php7.0-fpm restart

这是装好以后的表现:


image.png

(2)改变监听端口
在某些情况下我们需要改变服务器监听的端口。
因为套接字是通过绑定 ip 端口连接的,那就只需要将刚才的 Nginx 的 default(所在目录 /etc/nginx/sites-available/)配置中的端口打开,改成你想要监听的端口。

# 这是 Nginx 的 default 文件
sudo vim /etc/nginx/sites-available/default
server {
  # 把 80 修改为 9000
  listen 9000 default_server;
  listen [::]:9000 default_server ipv6only=on;

  root /var/www/html;
  index index.html index.htm;

  # Make site accessible from http://localhost/
  server_name localhost;
}

命令重载配置文件,使之生效:

sudo service nginx reload
sudo service nginx restart

好了以后直接刷新刚才的页面 http://localhost:9000/phpinfo.php记得刷新)就完成了

注意事项

如果运行不正常,用 service nginx status 查看运行状态。
启动,重启,关闭 Nginx 记得加 sudo,不然可能会失败。
如果还是不能启动,查看 log,这个文件会告诉你失败的原因。

tail /var/log/nginx/error.log
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容