LNMP架构介绍与搭建

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

LNMP架构介绍与搭建
LNMP架构和LAMP架构挺像的,只不过一个用的Apache一个用的Nginx。LNMP就是Linux+Nginx+MySQL+PHP,Nginx和Apache一样都是web服务器。

  还有一点不同的是在LNMP结构里php会启动一个服务:php-fpm,而LANP中php只是作为Apache的一个模块存在。Nginx会把用户的动态请求交给php服务去处理,这个php服务就会去和数据库进行交互。用户的静态请求Nginx会直接处理,Nginx处理静态请求的速度要比apache快很多性能上要好,所以apache和Nginx在动态请求处理上区别不大,但如果是静态请求处理的话就会明显发现Nginx要快于apache,而且Nginx能承受的并发量要比apache大,可以承受好几万的并发量,所以大一些的网站都会使用Nginx作为web服务器。

<br>

12.2 MySQL安装


LNMP架构介绍与搭建
因为之前安装了mysql,所以我得先卸载:
LNMP架构介绍与搭建
还需要删除库文件目录:

rm -rf /data/mysql/*

<br>
卸载完后下载mysql的二进制包:
http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
LNMP架构介绍与搭建

下载好后解压

tar -zxfv mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

解压后将目录移动到/usr/local/下,并重新命名为mysql:

mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql

进入到mysql目录下:

cd /usr/local/mysql

如果你的系统没有/data/目录需要先创建:

mkdir /data/

如果你的系统没有myysql用户也需要先创建:

useradd mysql

执行初始化脚本:

./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

如果出现这个错误:
LNMP架构介绍与搭建
就安装:

yum install -y perl-Module-Install.noarch

如果出现这个错误:
LNMP架构介绍与搭建
然后再安装:

yum install libaio* -y

<br>
拷贝配置文件:

cp support-files/my-default.cnf /etc/my.cnf

vim /etc/my.cnf 配置文件为以下内容:
LNMP架构介绍与搭建

拷贝启动脚本:

cp support-files/mysql.server /etc/init.d/mysqld

然后定义basedir和datadir的路径:
vim /etc/init.d/mysqld 脚本文件为以下内容:
LNMP架构介绍与搭建

完成以上操作后启动mysql服务:

/etc/init.d/mysqld start

启动成功:
LNMP架构介绍与搭建

查看一下端口是否正常监听,mysql默认端口为3306:
LNMP架构介绍与搭建

将mysql加入服务列表里面去,并设置为开机启动:

chkconfig --add mysqld
chkconfig mysqld on

然后就可以用service命令去启动或关闭mysql了

<br>

12.3/12.4 PHP安装


LNMP架构介绍与搭建
因为之前我安装过php所以得先删除之前make的文件,没有编译过的可以跳过这一步,忽略:
LNMP架构介绍与搭建

php5.6下载地址:
http://cn2.php.net/distributions/php-5.6.30.tar.gz
LNMP架构介绍与搭建

下载好后解压:

tar -zxvf php-5.6.30.tar.gz

创建php-fpm用户:

useradd -s /sbin/nologin php-fpm

进入解压后的目录:

cd php-5.6.30

执行configure命令检查编译环境,并配置一些参数:

./configure --prefix=/usr/local/php-fpm --with-config-file-path=/usr/local/php-fpm/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --with-pear --with-curl  --with-openssl

LNMP架构介绍与搭建

我这报错了,少了curl包:
LNMP架构介绍与搭建
解决办法:安装这个包,重新再执行configure即可:

yum -y install libcurl-devel

这种缺少包的情况,少啥装啥就是了,一般都是php缺少的包都是后缀为-devel的包。

<br>

LNMP架构介绍与搭建
然后编译安装:

make && make install

安装成功:
LNMP架构介绍与搭建
在sbin目录下有一个php-fpm文件,这个文件是用来启动php服务的:
LNMP架构介绍与搭建
这个文件同样的可以使用-m -i -t等选项
使用-t可以测试配置文件是否正常:
LNMP架构介绍与搭建
因为还没有拷贝php的配置文件所以会报错

拷贝php的配置文件:

cp php.ini-production /usr/local/php-fpm/etc/php.ini

创建一个php-fpm.conf文件:

vim /usr/local/php-fpm/etc/php-fpm.conf

编辑如下内容:

[global]
pid = /usr/local/php-fpm/var/run/php-fpm.pid  //pid存放路径
error_log = /usr/local/php-fpm/var/log/php-fpm.log  //日志存放路径
[www]  //这是一个模块
listen = /tmp/php-fcgi.sock  //监听ip和端口,端口默认为9000
listen.mode = 666  //用来定义php-fcgi.sock文件的权限
user = php-fpm  //定义服务的所属用户
group = php-fpm  //定义服务的所属组
pm = dynamic  //后面这些都是关于进程的信息
pm.max_children = 50
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
rlimit_files = 1024

LNMP架构介绍与搭建

拷贝启动脚本:

cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

更改文件权限:

chmod 755 /etc/init.d/php-fpm

添加到服务列表里,并设置开机启动:

chkconfig --add php-fpm
chkconfig php-fpm on

使用php-fpm -t检测一下配置文件有没有问题:
LNMP架构介绍与搭建

没有问题后就启动服务:
LNMP架构介绍与搭建

我这报错了,没有php-fpm用户,可能是我刚刚忘记执行添加用户的命令了吧:

useradd -s /sbin/nologin php-fpm

添加php-fpm用户后再启动就成功了:
LNMP架构介绍与搭建

查看一下进程:
LNMP架构介绍与搭建
完成以上操作,php-fpm就安装成功了。

<br>

12.5 Nginx介绍


LNMP架构介绍与搭建
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx 可以在大多数 UnixLinux OS 上编译运行,并有 Windows 移植版。 Nginx 的1.4.0稳定版已经于2013年4月24日发布,一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高。Nginx 的源代码使用 2-clause BSD-like license。

<br>

12.6 Nginx安装


LNMP架构介绍与搭建
LNMP架构介绍与搭建
LNMP架构介绍与搭建
在官网下载nginx的源码包,下载地址:
http://nginx.org/en/download.html

下载源码包,下载命令:

wget http://nginx.org/download/nginx-1.12.1.tar.gz

下载好后解压:

tar -zxvf nginx-1.12.1.tar.gz

进入解压后的目录:

cd nginx-1.12.1/

LNMP架构介绍与搭建

执行configure 检查编译环境,参数方面根据自己的需求去配置:
./configure --prefix=/usr/local/nginx
成功:
LNMP架构介绍与搭建
执行成功后编译安装:

make && make install

成功:
LNMP架构介绍与搭建
LNMP架构介绍与搭建

安装成功后,编辑启动脚本:

vim /etc/init.d/nginx

然后将这网址里的文件内容复制进去:
https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/etc_init.d_nginx

编辑完成后,给这个启动脚本文件设置755权限:

chmod 755 /etc/init.d/nginx

把nginx服务添加到服务列表,并设置开机启动:

chkconfig --add nginx

如果添加到服务列表出现这个错误:

service nginx does not support chkconfig

那么就检查一下你的启动脚本文件里的这两行有没有问题:
LNMP架构介绍与搭建
一般都是因为这两行没有写,或者写错了

设置开机启动:

chkconfig nginx on

进入nginx的conf目录:

cd /usr/local/nginx/conf

然后重命名一下配置文件:

mv nginx.conf nginx.conf.bak

因为不使用nginx自带的配置文件,所以需要编辑一个配置文件:

vim nginx.conf

将这网址里的文件内容复制进去:
https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D15Z/nginx.conf
配置文件内容的一些作用:
LNMP架构介绍与搭建
LNMP架构介绍与搭建

检查配置文件有没有错误:

/usr/local/nginx/sbin/nginx -t

结果如图就是没错误:
LNMP架构介绍与搭建

没有问题就可以启动nginx 了:

service nginx start

LNMP架构介绍与搭建

查看一下进程:
LNMP架构介绍与搭建

检查一下有没有在监听80端口:

netstat -lntp |grep 80

LNMP架构介绍与搭建

确认启动成功后,使用curl测试一下是否能访问nginx:
LNMP架构介绍与搭建

结果如图则是没问题。

<br>
测试一下nginx是否能解析php:

1.在nginx的html目录下创建一个php文件:
vim /usr/local/nginx/html/1.php
2.编辑内容如下:
LNMP架构介绍与搭建

3.使用curl去访问php文件,如图则是能够成功解析:
LNMP架构介绍与搭建

<br>

12.7 默认虚拟主机


LNMP架构介绍与搭建
首先把nginx配置文件里定义的虚拟主机删除:

vim /usr/local/nginx/conf/nginx.conf

删除后加上这一行,这是用来引用虚拟主机配置文件的:

include vhost/*.conf;

创建vhost目录:

mkdir /usr/local/nginx/conf/vhost

进入到vhost目录下,创建一个default.conf文件:

cd vhost/
vim default.conf

添加以下内容:

server
{
    listen 80 default_server;  // 有这个标记的就是默认虚拟主机
    server_name aaa.com;  //定义这个虚拟主机的域名
    index index.html index.htm index.php;  //定义索引页
    root /data/wwwroot/default;  //定义网站目录
}

创建default目录:

mkdir -p /data/wwwroot/default/

进入default目录,创建一个html文件:

cd /data/wwwroot/default/
vim index.html

文件内容如下:
LNMP架构介绍与搭建

然后检查一下配置文件有没有错误:

/usr/local/nginx/sbin/nginx -t

LNMP架构介绍与搭建

重新加载配置文件:

/usr/local/nginx/sbin/nginx -s reload

使用curl命令测试一下:
LNMP架构介绍与搭建
结果如图,则默认虚拟主机就配置完成了。

至此LNMP环境搭建就完成了,由于大部分都是编译安装,所以看起来会比较复杂



本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/2046819,如需转载请自行联系原作者

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
运维 负载均衡 关系型数据库
【运维知识进阶篇】用Ansible Roles重构LNMP架构(Linux+Nginx+Mariadb+PHP),实现4个项目一键部署
【运维知识进阶篇】用Ansible Roles重构LNMP架构(Linux+Nginx+Mariadb+PHP),实现4个项目一键部署
112 0
|
6月前
|
关系型数据库 MySQL Linux
Linux环境下LNMP架构实战案例
Linux环境下LNMP架构实战案例
|
8月前
|
运维 负载均衡 关系型数据库
【运维知识进阶篇】Ansible实现一套完整LNMP架构
【运维知识进阶篇】Ansible实现一套完整LNMP架构
139 0
|
8月前
|
关系型数据库 MySQL 应用服务中间件
Linux巩固篇020-Linux LNMP 架构部署动态网站环境
纸上得来终觉浅,绝知此事要躬行
131 0
|
canal 存储 NoSQL
mysql进阶:canal搭建主从|集群架构
之前我们讲解过canal的各种应用,但是对于生产环境来讲,服务高可用是必须保证的。因此canal单节点是不能满足我们的需求的。就需要搭建canal集群。
596 2
mysql进阶:canal搭建主从|集群架构
|
消息中间件 Java 数据处理
云计算服务架构任务池与指令池的搭建和使用,RabbitMQ消息队列
RabbitMQ具有更加灵活的路由规则,且拥有消息确认机制,所以RabbitMQ比较适合作为任务池和指令池的载体。下面将对RabbitMQ的工作原理及常用场景进行深入讲解。 RabbitMQ的内部可以分成两部分:交换机部分和消息队列部分。一般情况下,交换机和消息队列都需要手动创建,且需要使用绑定键以绑定交换机和消息队列的关系。交换机和消息队列的绑定关系可以是多对多的,绑定键可以标识多个绑定关系。
|
关系型数据库 MySQL Linux
Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从
Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从
218 0
Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从
|
存储 机器学习/深度学习 SQL
企业如何搭建敏捷数据湖架构
“数据湖”是当前很多人、很多企业都在谈论的最新流行的话题之一。可是,让我们认真想一想,数据湖是不是像许多流行的IT词一样,很少有人真正知道如何解释它,能够实现什么价值以及如何设计和构建它。
企业如何搭建敏捷数据湖架构
《全渠道电商中台的搭建 ——基于云架构的电商解决方案》电子版地址
全渠道电商中台的搭建 ——基于云架构的电商解决方案
89 0
《全渠道电商中台的搭建 ——基于云架构的电商解决方案》电子版地址
|
关系型数据库 MySQL 应用服务中间件
一键部署 LNMP 架构
一、将安装包传到/opt/目录下 nignx安装包:nginx-1.12.2.tar.gz mysql安装包:mysql-boost-5.7.20.tar.gz php安装包:php-7.1.10.tar.bz2
94 0