LNMP平台的搭建

LNMP平台简介

LNMP指的是多款软件的集合。L指的是Linux系统,N指的是Nginx网站服务器,M指的是Mariadb数据库软件,P指的是php软件。Linux目前是一款最流行的免费开源的操作系统。Nginx可以做为高性能的HTTP和反向代理服务器,也可以作为IMAP/POP3/SMTP代理服务器。

关于Nginx学习与入门,可参考本人下面这篇文章,详细介绍了Nginx相关知识【https://www.qcloud.com/community/article/593436 】。Mysql是一个小型关系型数据库管理系统。PHP是一种在服务器端执行的嵌入HTML文档的脚本语言。

软件安装

源码安装Nginx

  • 安装依赖包
[root@cc]# yum -y insstall gcc gcc-c++ make pcre pcre-devel openssl zlib
[root@cc]# tar -xf  nginx-1.8.0.tar.gz -C /usr/local/    //解包
[root@cc]# cd /usr/local/nginx-1.8.0
[root@cc]# ./configure --with-http_ssl_module            //配置
[root@cc]# make                                          //编译
[root@cc]# make install                                  //安装
  • 将nginx程序做个软连接,方便执行
[root@cc]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin   //连接

Nginx软件包采用的是模块化的设计,模块分为内置模块和第三方模块。

Nginx服务器安装好之后,程序的主目录在/usr/local/nginx下,该目录下分别为conf(主配置文件目录),html(网页根目录),logs(日志文件目录),sbin(主程序目录)。Nginx默认无执行脚本,需要手动输入命令来管理。常用的命令如下:

  • 启动主程序
[root@cc]# nginx
  • 关闭主程序
[root@cc]# nginx -s stop
  • 重载nginx配置
[root@cc]# nginx -s reload

Nginx默认监听本机80端口。

安装Mariadb数据库

Mariadb:多线程,多用户的SQL数据库管理系统。软件包:mariadbmariadb-server;服务:mariadb

安装软件包:

[root@cc]# yum -y install mariadb mariadb-server mariadb-devel

重启服务

[root@cc]# systemctl restart mariadb

Mariadb默认监听本机3306端口。

安装php软件

PHP: 一种编程语言,最初用于设计生产动态网站。与PERL,PYTHON类似。软件包:php php-mysql php-fpm。php-fpm软件用来连接nginx。php-mysql用来连接数据库。

[root@cc]# yum –y install php php-mysql
[root@cc]# rpm -ivh php-fpm

php默认监听本机9000端口。

启动服务

  • nginx
[root@cc]# nginx                              //前面已经做好软连接
  • mariadb
[root@cc]# systemctl restart mariadb        
[root@cc]# systemctl enable  mariadb          //开机自启动
  • php
[root@cc]# systemctl restart php-fpm
[root@cc]# systemctl enable  php-fpm

建立LNMP平台

Nginx与php的内在联系

Nginx只能处理静态的页面请求,php处理动态页面请求。当用户连接Nginx80端口时,首先由Nginx判断请求是静态还是动态,若是静态页面,Nginx直接将请求结果返回给客户机;若是动态页面,则nginx将请求转交给本机的9000端口。php监听本机9000端口,正好由php解释器去处理动态页面。最终将请求结果返回给Nginx,再由Nginx将结果返回给客户端。

php连接Mariadb

php连接Mariadb数据库,进行数据的读取。

测试LNMP平台

测试目标

  • 配置Fast-CGI支持PHP网页
  • 创建PHP测试页面,测试使用PHP连接数据库的效果

测试方案

使用2台RHEL7虚拟机,其中一台作为LNMP服务器(192.168.4.5)、另外一台作为测试用的Linux客户机(192.168.4.100),如图-1所示。

处理步骤

  • 确认所有服务已经启动
  • [root@cc]# netstat -anutp | grep 80 //Nginx [root@cc]# netstat -anutp | grep 3306 //Mariadb [root@cc]# netstat -anutp | grep 9000 //php
  • 修改Nginx主配置文件
[root@cc]# vim /usr/local/nginx/conf/nginx.conf 
location / {
            root   html;
            index  index.php  index.html   index.htm;
           }
 location  ~  \.php$  {                //修改Nginx连接php的配置部分
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi.conf;
        }
  • 编写测试php的代码
[root@cc]# vim /usr/local/nginx/html/test.php   //php初始界面
<?php
phpinfo();
?>

客户端测试:

[root@cc]# firefox http://192.168.4.5/test.php

访问页面如图2:

  • 编写测试php连接Mariadb的代码
[root@cc]# vim /usr/local/nginx/html/testmysql.php
...
vim /usr/local/nginx/html/test3.php
<?php
$mysqli = new mysqli('localhost','root','','mysql');
if (mysqli_connect_errno()){
    die('Unable to connect!'). mysqli_connect_error();
}
$sql = "select * from user";
$result = $mysqli->query($sql);
while($row = $result->fetch_array()){
    printf("Host:%s",$row[0]);
    printf("</br>");
    printf("Name:%s",$row[1]);
    printf("</br>");
}
?>
...

客户端测试:

[root@cc]# firefox http://192.168.4.5/testmysql.php

测试结果如图3:

总结

  1. php-fpm扩展包用来连接Nginx和php,没有它,LNMP平台搭建失败。php-mysql用来连接php和mysql,同样不可或缺少。
  2. 启动Nginx服务时,若服务无法启动,则检查是否本机80端口被某种服务占用。检查是否由语法错误。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux运维学习

linux学习第三十二篇:linux任务计划cron,chkconfig工具,systemd管理服务,unit介绍,target介绍

linux任务计划cron crontab -u :指定某个用户,不加-u选项则为当前用户; -e :制定计划任务; -l :列出计划任务; ...

1727
来自专栏Laoqi's Linux运维专列

恢复删除的数据

923
来自专栏北京马哥教育

架构师分享 Docker 新手入门完全指南

下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。

903
来自专栏喵了个咪的博客空间

[喵咪Liunx(3)]端口转发工具rinetd

[喵咪Liunx(3)]端口转发工具rinetd ? 前言 今天笔者为大家带来了另外一款非常优秀的Liunx工具,这个工具有什么用呢?它能帮助我们解决一些特定场...

35613
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装和配置GitLab

GitLab CE或Community Edition是一个开源应用程序,主要用于托管Git存储库,以及其他与开发相关的功能,如问题跟踪。它旨在使用您自己的基础...

1001
来自专栏菩提树下的杨过

IIS7.5中神秘的ApplicationPoolIdentity

IIS7.5中(仅win7,win2008 SP2,win2008 R2支持),应用程序池的运行帐号,除了指定为LocalService,LocalSystem...

17610
来自专栏java思维导图

Docker完全指南,入门必读好文!

https://wdxtub.com/2017/05/01/docker-guide/

723
来自专栏Java学习123

windows环境下 curl 安装和使用

3206
来自专栏纯洁的微笑

Docker(四):Docker 三剑客之 Docker Compose

前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一...

2993
来自专栏Java后端技术

Centos7安装Nginx实战

  最近在写一些自己的项目,用到了nginx,所以自己动手来在Centos7上安装nginx,以下是安装步骤。

993

扫码关注云+社区