在阿里云上部署LNMP的实验经历

实验概述

本实验提供LNMP(linux+nginx+mysql+php)服务器环境配置。首先,准备安装环境;然后,分别安装nginx服务器、mysql数据库和php语言环境;最后,修改nginx服务器配置文件,使Nginx支持php语言环境。

image.png

实验目标

完成此实验,有能力掌握:

  1. 搭建简单的LNMP网站环境

2. Nginx服务器的安装和部署

3. MySQL数据库的安装

4. PHP语言环境的安装和部署

学前建议

  1. 了解Linux的基本命令;

2. 了解基本的网站搭建知识

免费学习地址:

https://edu.aliyun.com/lab/courses/14107e607fe742a88a60d1148d7b405c/detail?purchaseRecordId=727eb936178e44aeae0cc52c2d0cd5b4

1.1 背景知识
LNMP简介

LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。

Linux:是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统。代表版本有:debian、centos、ubuntu、fedora、gentoo等。
Nginx:是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Mysql:是一个小型关系型数据库管理系统。
PHP:是一种在服务器端执行的嵌入HTML文档的脚本语言。
这四种软件均为免费开源软件,组合到一起,成为一个免费、高效、扩展性强的网站服务系统。

Nginx简介和使用场景

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为 “engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过三年了。Igor Sysoev在建立的项目时,使用基于BSD许可。

为什么Nginx的性能要比Apache高得多?这得益于Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的 Squid、Memcached都采用的是epoll网络I/O模型。

处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别:假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。而epoll版 宿管大妈会先记下每位同学的房间号,你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。如果来了10000个人,都要 找自己住这栋楼的同学时,select版和epoll版宿管大妈,谁的效率更高,不言自明。同理,在高并发服务器中,轮询I/O是最耗时间的操作之 一,select和epoll的性能谁的性能更高,同样十分明了。

在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。

第 2 章:实验内容

2.2 实验资源申请
2.3 安装开发包和库文件

在部署LNMP环境之前,首先,用户需要安装Nignx服务器,MySQL数据库,以及PhP环境相关的开发包和库文件,若缺少开发包或库文件,会导致后续LNMP环境部署失败。

  1. 远程登录到“LNMP环境”的ECS服务器,请使用本实验提供的ECS服务器的“外网地址”,“用户名”和“密码”。


    image.png
  2. 输入命令cat /etc/redhat-release,查看当前Linux系统版本。

说明:本实验使用CentOS 6.5版本,若Linux系统为Ubuntu或者CentOS的低版本,可能会导致实验脚本不可用。


image.png
  1. 执行命令:chkconfig iptables off,关掉防火墙,避免实验中出现服务器无法访问的情况。在真实的生产环境中,请根据实际需求,配置相应的防火墙规则。


    image.png

4. 执行如下命令,安装LNMP环境所需的开发包和库文件,若不安装,则会导致后续的LNMP环境安装失败。例如:openssl等。

yum -y install ntp make openssl openssl-devel pcre pcre-devel libpng    libpng-devel libjpeg-6b libjpeg-devel-6b freetype freetype-devel gd     gd-devel zlib zlib-devel gcc gcc-c++ libXpm libXpm-devel ncurses        ncurses-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel imake     autoconf automake screen sysstat compat-libstdc++-33 curl curl-devel

注意:拷贝时,请勿换行,否则会导致部分开发包和库文件没有安装,以及后续操作中,安装错误等问题。


image.png

安装过程需要等待1分钟左右。安装完成后,页面显示“Complete!”。

5. 在真实的生产环境中,若用户的服务器中,已安装的apache、mysql、php。请执行命令 yum remove mysql httpd php 卸载相关软件,否则系统原有软件会对部署的LNMP环境中数据有影响。由于本实验中提供的ECS环境,没有安装如上软件,因此,页面提示“Package xx available, but not installed.” (xx为软件名,例如mysql 等)。

image.png

至此,已完成LNMP环境的所需的基本开发包和库环境的相关安装和部署。

2.4 安装nginx服务器

本小节,将主要介绍在Linux系统的ECS实例上,进行LNMP环境中安装Nignx服务器的操作步骤。

说明:本实验中,安装的Nginx服务器版本为Nignx 1.10.1。

  1. 输入命令yum -y install nginx,通过yum的方式安装nginx。
image.png

等待几秒钟,页面显示“Complete!”。证明已完成Nignx的基本安装。

image.png
  1. 使用命令 vi /etc/nginx/conf.d/default.conf,进入nginx配置文件“default.conf”的编辑页面。
image.png

在Nginx配置文件的编辑页面中,默认监听使用ipv4和ipv6。


image.png

使用键盘方向键将光标移动到“listen [::]:80 default_server;”位置,并输入dd命令,删除此行,也就是删除其中监听为ipv6的配置。因为,目前阿里云使用的是ipv4,若使用ipv6,运行时会报错。完成后,输入“:wq”,保存退出编辑页面。

image.png
  1. 输入命令service nginx start,启动nginx服务器。若页面显示“Starting nignx [OK]”,证明Nginx服务器已启动。若报错,请检查如上Nginx配置是否正确。
image.png
  1. 打开浏览器,并在地址栏中,输入云中沙箱提供的ECS实例“公网地址”。若页面显示“Welcome to Nginx on EPEL!”,则证明Nginx服务器已部署且启动成功。
  1. 执行命令chkconfig --levels 235 nginx on,设置2、3、5级别开机启动nginx。通过设置如上开机启动级别,在下次启动或者运行ECS服务器的时候,就可以自动运行Nignx服务器。
image.png

至此,已完成Nginx的全部安装部署,下一小节将介绍如何安装MySQL数据库。

2.5 安装mysql数据库

本小节,将主要介绍在Linux系统的ECS实例上,安装LNMP环境中MySQL数据库的操作步骤。

说明:本实验中,安装的MySQL数据库版本为MySQL 5.1.73版本。

  1. 首先,在安装MySQL之前,执行命令yum -y install mysql mysql-server mysql-devel ,安装mysql及其组件mysql-server,mysql-devel。
image.png

等待几秒钟,页面显示“Complete!”,证明已完成MySQL的安装。

image.png

2. 输入命令service mysqld start,启动mysql数据库。

image.png

等待几秒钟,页面显示“Starting mysqld [ok]”。证明mysql启动成功。

image.png
  1. 输入命令mysql,进入MySQL数据库的命令页面,证明已经成功安装并运行MySQL数据库。
image.png
  1. 在mysql的命令行中,输入exit,页面提示“bye”,退出mysql的命令页面。
image.png
  1. 最后,执行命令chkconfig --levels 235 mysqld on,设置2、3、5级别开机启动mysql。这样,用户在下次启动ECS服务器时,ECS实例会自动运行mysql数据库,无需用户手动启动。
image.png

至此,完成MySQL的全部安装。

2.6 安装php语言环境

本小节,将主要介绍在Linux系统的ECS实例上,安装LNMP环境中安装PHP语言环境的操作步骤。

说明:本实验中,安装的是PHP 5.3.3版本。

  1. 首先,用户执行如下命令,安装php及其常用扩展包。若缺少扩展包,可能会导致php安装或运行失败。

注意:如下命令不能换行,若换行,或导致扩展包或php安装失败。

yum -y install php lighttpd-fastcgi php-cli php-mysql php-gd php-imap php-ldap  php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp     php-soap
image.png

等待几秒钟,界面显示“Complete!”,证明已成功安装Php语言基本环境。

image.png
  1. 完成PHP语言基本环境的安装后。执行如下命令,安装PHP的相关组件。这样,可以使PHP支持MySQL、FastCGI模式。
 yum install php-tidy php-common php-devel php-fpm php-mysql

说明:CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序一般运行在网络服务器上。 CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次。

image.png
等待几秒钟,页面提示“Is this ok [y/N]”,输入y,允许安装大小总计为6.7M的组件。
image.png

等待几秒钟,页面提示“Complete!”,证明组件已安装成功。此时,PHP支持MySQL和FastCGI模式。

image.png
  1. 执行命令service php-fpm start,启动php-fpm,界面显示“OK”。由于Nginx是个轻量级的HTTP server,必须借助第三方的FastCGI处理器才可以对PHP进行解析,PHP-FPM是一个第三方的FastCGI进程管理器,只用于PHP。
image.png
  1. 最后,执行命令chkconfig --levels 235 php-fpm on,设置2、3、5级别开机启动php-fpm。这样,用户在下次启动ECS服务器时,ECS会自动运行php-fpm,无需用户手动运行。
image.png

至此,已成功安装LNMP的所有环境。下一小节中,用户将配置Nginx服务器,使Nginx支持php语言环境。

2.7 配置nginx支持php

本小节中,将设置Nginx 的配置文件,允许Nginx服务器支持PHP语言环境。

1. 在真实的生产工组环境中,一般均需要备份Nginx配置文件,这样的做法可以快速恢复原有Nginx配置信息。若之后用户需要对配置文件进行修改,均需要在修改前对配置文件进行备份,从而保证Nginx服务器的正常运行:
首先,将Nginx配置文件改为备份文件,执行如下命令:

mv /etc/nginx/nginx.conf /etc/nginx/nginx.confbak

然后,拷贝默认的配置文件作为配置文件,执行如下命令:

cp /etc/nginx/nginx.conf.default /etc/nginx/nginx.conf

执行命令cd /etc/nginx,进入Nginx目录中,使用命令ls查看当前目录中有三个nignx的配置文件:Nginx配置文件“nginx.conf”,Nginx配置备份文件“nginx.confbak”,以及Nginx默认配置文件“nginx.conf.default”。

image.png
  1. 执行命令vim /etc/nginx/nginx.conf,进入nginx配置文件的编辑页面,添加Nginx的fastcgi支持。
image.png

首先,将文件第45行修改为如下内容,也就是首页支持php语言。

index index.php index.html index.htm;
image.png

然后,将文件的65-72行代码前的注释“#”去掉,并替换"root"和“fastcgi_param”参数值为如下内容。也就是,使用/usr/share/nginx/html作为网站根目录,进行访问。

location ~ \.php$ {
       root           /usr/share/nginx/html;
       fastcgi_pass   127.0.0.1:9000;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
           include        fastcgi_params;
       }

image.png

最后,完成如上配置信息修改后,按ESC并输入命令:wq保存并退出编辑页面。

  1. 执行命令vim /etc/php.ini,进入文件php.ini的编辑页面,在结尾的“;Local Variables:”之前添加如下内容。完成后,执行:wq保存并退出编辑页面。
cgi.fix_pathinfo = 1
image.png
image.png

至此,完成LNMP环境的全部搭建内容,下一个小节将验证搭建的LNMP的网站环境。

2.8 查看LNMP网站环境

本小节,主要验证搭建的LNMP服务器是否可用。

  1. 首先,执行如下命令,重启nginx和php-fpm服务器。
service nginx restart
service php-fpm restart

注意:只有重启Nginx和php-fpm服务器。修改的Nginx配置文件中的参数才能生效。

image.png
  1. 执行命令vim /usr/share/nginx/html/info.php,在Nginx的网站访问的主目录下,创建一个info.php文件,并进入新建文件的编辑页面。并在编辑页面中,输入如下代码,用于显示php的基本信息页面。完成后,输入:wq,保存并退出编辑页面。
<?php
  phpinfo();
?>

image.png
  1. 最后,测试nginx是否成功解析php。打开本地浏览器,并在地址栏中输入:http://xxx.xxx.xx.xx/info.php,若页面显示php介绍信息,证明LNMP环境搭建成功。

说明:xxx.xxx.xx.xx为云中沙箱提供ECS实例的“公网地址”。

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

推荐阅读更多精彩内容