设为首页 收藏本站
查看: 2767|回复: 0

LNMP架构介绍与搭建

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-12-6 13:15:58 | 显示全部楼层 |阅读模式
笔记内容:
  • 12.1 LNMP架构介绍
  • 12.2 MySQL安装
  • 12.3/12.4 PHP安装
  • 12.5 Nginx介绍
笔记日期:2017.10.18


12.1 LNMP架构介绍
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
  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服务器。

12.2 MySQL安装
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
  因为之前安装了mysql,所以我得先卸载:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
还需要删除库文件目录:
rm -rf /data/mysql/*


卸载完后下载mysql的二进制包:
http://mirrors.sohu.com/mysql/My ... bc2.5-x86_64.tar.gz
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
下载好后解压
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
如果出现这个错误:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
就安装:
yum install -y perl-Module-Install.noarch
如果出现这个错误:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
然后再安装:
yum install libaio* -y


拷贝配置文件:
cp support-files/my-default.cnf  /etc/my.cnf
vim /etc/my.cnf 配置文件为以下内容:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
拷贝启动脚本:
cp support-files/mysql.server /etc/init.d/mysqld
然后定义basedir和datadir的路径:
vim /etc/init.d/mysqld 脚本文件为以下内容:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
完成以上操作后启动mysql服务:
/etc/init.d/mysqld start
启动成功:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
查看一下端口是否正常监听,mysql默认端口为3306:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
将mysql加入服务列表里面去,并设置为开机启动:
chkconfig --add mysqld
chkconfig mysqld on
然后就可以用service命令去启动或关闭mysql了

12.3/12.4 PHP安装
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
 因为之前我安装过php所以得先删除之前make的文件,没有编译过的可以跳过这一步,忽略:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
php5.6下载地址:
http://cn2.php.net/distributions/php-5.6.30.tar.gz
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
下载好后解压:
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 watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
我这报错了,少了curl包:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
解决办法:安装这个包,重新再执行configure即可:
yum -y install libcurl-devel
这种缺少包的情况,少啥装啥就是了,一般都是php缺少的包都是后缀为-devel的包。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
然后编译安装:
make && make install
安装成功:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
在sbin目录下有一个php-fpm文件,这个文件是用来启动php服务的:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
这个文件同样的可以使用-m -i -t等选项
使用-t可以测试配置文件是否正常:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
因为还没有拷贝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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
拷贝启动脚本:
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检测一下配置文件有没有问题:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
没有问题后就启动服务:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
我这报错了,没有php-fpm用户,可能是我刚刚忘记执行添加用户的命令了吧:
useradd -s /sbin/nologin php-fpm
添加php-fpm用户后再启动就成功了:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
查看一下进程:

完成以上操作,php-fpm就安装成功了。

12.5 Nginx介绍
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
  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。

12.6 Nginx安装
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
在官网下载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/
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
执行configure 检查编译环境,参数方面根据自己的需求去配置:
./configure --prefix=/usr/local/nginx
成功:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
执行成功后编译安装:
make && make install
成功:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
安装成功后,编辑启动脚本:
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
那么就检查一下你的启动脚本文件里的这两行有没有问题:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
一般都是因为这两行没有写,或者写错了
设置开机启动:
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
配置文件内容的一些作用:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
检查配置文件有没有错误:
/usr/local/nginx/sbin/nginx -t
结果如图就是没错误:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
没有问题就可以启动nginx 了:
service nginx start
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
查看一下进程:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
检查一下有没有在监听80端口:
netstat -lntp |grep 80
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
确认启动成功后,使用curl测试一下是否能访问nginx:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
结果如图则是没问题。


测试一下nginx是否能解析php:
1.在nginx的html目录下创建一个php文件:
vim /usr/local/nginx/html/1.php
2.编辑内容如下:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
3.使用curl去访问php文件,如图则是能够成功解析:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg

12.7 默认虚拟主机
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
首先把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
文件内容如下:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
然后检查一下配置文件有没有错误:
/usr/local/nginx/sbin/nginx -t
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
重新加载配置文件:
/usr/local/nginx/sbin/nginx -s reload
使用curl命令测试一下:
watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=.jpg
结果如图,则默认虚拟主机就配置完成了。
至此LNMP环境搭建就完成了,由于大部分都是编译安装,所以看起来会比较复杂



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421313-1-1.html 上篇帖子: CentOS7下的LNMP环境搭建Dedecms网站 下篇帖子: LAMP的rpm包安装与简单测试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表