搭建完全分离式LNMP平台的简单案例

2023-11-09

案例拓扑图

wKioL1Q9NNyDOYpoAADB-wCoxsg241.jpg

安装配置nginx服务器


编译安装nginx时,需要事先安装 开发包组"Development Tools"和"Server Platform Development",同时还需专门安装pcre-devel包。

 
 
  1. # yum -y groupinstall "Development Tools"   
  2. # yum -y groupinstall "Server Platform Development"   
  3. # yum -y install pcre-devel 

首先添加nginx用户组和nginx用户

 
 
  1. # groupadd -r nginx   
  2. # useradd -g nginx -r nginx 

创建编译安装是所需要的目录

 
 
  1. # mkdir -pv /var/tmp/nginx/client 

编译安装nginx

 
 
  1. # tar xf nginx-1.4.7.tar.gz   
  2. # cd nginx-1.4.7   
  3. # ./configure \   
  4.   --prefix=/usr/local/nginx \   
  5.   --sbin-path=/usr/local/nginx/sbin/nginx \   
  6.   --conf-path=/etc/nginx/nginx.conf \   
  7.   --error-log-path=/var/log/nginx/error.log \   
  8.   --http-log-path=/var/log/nginx/access.log \   
  9.   --pid-path=/var/run/nginx/nginx.pid  \   
  10.   --lock-path=/var/lock/nginx.lock \   
  11.   --user=nginx \   
  12.   --group=nginx \   
  13.   --with-http_ssl_module \   
  14.   --with-http_flv_module \   
  15.   --with-http_stub_status_module \   
  16.   --with-http_gzip_static_module \   
  17.   --http-client-body-temp-path=/var/tmp/nginx/client/ \   
  18.   --http-proxy-temp-path=/var/tmp/nginx/proxy/ \   
  19.   --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \   
  20.   --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \   
  21.   --http-scgi-temp-path=/var/tmp/nginx/scgi \   
  22.   --with-pcre   
  23. # make && make install 

为nginx提供SysV init脚本

 
 
  1. # vim /etc/rc.d/init.d/nginx 
 
 
  1. #!/bin/sh   
  2. #   
  3. # nginx - this script starts and stops the nginx daemon   
  4. #   
  5. # chkconfig:   - 85 15    
  6. # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \   
  7. #               proxy and IMAP/POP3 proxy server   
  8. # processname: nginx   
  9. # config:      /etc/nginx/nginx.conf   
  10. # config:      /etc/sysconfig/nginx   
  11. # pidfile:     /var/run/nginx.pid   
  12.      
  13. # Source function library.   
  14. . /etc/rc.d/init.d/functions  
  15.      
  16. # Source networking configuration.   
  17. . /etc/sysconfig/network  
  18.      
  19. # Check that networking is up.   
  20. [ "$NETWORKING" = "no" ] && exit 0   
  21.      
  22. nginx="/usr/local/nginx/sbin/nginx" 
  23. prog=$(basename $nginx)   
  24.      
  25. NGINX_CONF_FILE="/etc/nginx/nginx.conf" 
  26.      
  27. [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx  
  28.      
  29. lockfile=/var/lock/subsys/nginx  
  30.      
  31. make_dirs() {   
  32.    # make required directories   
  33.    user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`   
  34.    options=`$nginx -V 2>&1 | grep 'configure arguments:'`   
  35.    for opt in $options; do  
  36.        if [ `echo $opt | grep '.*-temp-path'` ]; then  
  37.            value=`echo $opt | cut -d "=" -f 2`   
  38.            if [ ! -d "$value" ]; then  
  39.                # echo "creating" $value   
  40.                mkdir -p $value && chown -R $user $value   
  41.            fi  
  42.        fi  
  43.    done  
  44. }   
  45.      
  46. start() {   
  47.     [ -x $nginx ] || exit 5   
  48.     [ -f $NGINX_CONF_FILE ] || exit 6   
  49.     make_dirs   
  50.     echo -n $"Starting $prog: "  
  51.     daemon $nginx -c $NGINX_CONF_FILE   
  52.     retval=$?   
  53.     echo  
  54.     [ $retval -eq 0 ] && touch $lockfile   
  55.     return $retval   
  56. }   
  57.      
  58. stop() {   
  59.     echo -n $"Stopping $prog: "  
  60.     killproc $prog -QUIT   
  61.     retval=$?   
  62.     echo  
  63.     [ $retval -eq 0 ] && rm -f $lockfile   
  64.     return $retval   
  65. }   
  66.      
  67. restart() {   
  68.     configtest || return $?   
  69.     stop   
  70.     sleep 1   
  71.     start   
  72. }   
  73.      
  74. reload() {   
  75.     configtest || return $?   
  76.     echo -n $"Reloading $prog: "  
  77.     killproc $nginx -HUP   
  78.     RETVAL=$?   
  79.     echo  
  80. }   
  81.      
  82. force_reload() {   
  83.     restart   
  84. }   
  85.      
  86. configtest() {   
  87.   $nginx -t -c $NGINX_CONF_FILE   
  88. }   
  89.      
  90. rh_status() {   
  91.     status $prog   
  92. }   
  93.      
  94. rh_status_q() {   
  95.     rh_status >/dev/null 2>&1   
  96. }   
  97.      
  98. case "$1" in  
  99.     start)   
  100.         rh_status_q && exit 0   
  101.         $1   
  102.         ;;   
  103.     stop)   
  104.         rh_status_q || exit 0   
  105.         $1   
  106.         ;;   
  107.     restart|configtest)   
  108.         $1   
  109.         ;;   
  110.     reload)   
  111.         rh_status_q || exit 7   
  112.         $1   
  113.         ;;   
  114.     force-reload)   
  115.         force_reload   
  116.         ;;   
  117.     status)   
  118.         rh_status   
  119.         ;;   
  120.     condrestart|try-restart)   
  121.         rh_status_q || exit 0   
  122.             ;;   
  123.     *)   
  124.         echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"  
  125.         exit 2   
  126. esac 

为此脚本赋予执行权限

 
 
  1. # chmod +x /etc/rc.d/init.d/nginx 

将nginx服务添加至服务管理列表,并让其开机自动启动

 
 
  1. # chkconfig --add nginx   
  2. # chkconfig nginx on 

编辑配置文件/etc/nginx/nginx.conf,在server段内添加如下内容

 
 
  1. location ~ \.php$ {   
  2.     fastcgi_pass   10.170.2.90:9000;   
  3.     fastcgi_index  index.php;   
  4.     fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;   
  5.     include        fastcgi_params;   

启动nginx服务

 
 
  1. # vim /etc/init.d/nginx start 

测试nginx是否工作起来,在浏览器中键入10.170.2.80,可以得到如下页面

wKioL1Q9LSiw-gBgAAG9vqavcsc123.jpg

安装PHP服务器


编译安装php

 
 
  1. # tar xf php-5.4.26.tar.bz2   
  2. # cd php-5.4.26   
  3. # ./configure --prefix=/usr/local/php5 --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-sockets --enable-fpm --with-mcrypt --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2   
  4. # make && make install 

为php提供配置文件

 
 
  1. # cp php.ini-production /etc/php.ini 

配置php-fpm

 
 
  1. # cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm   
  2. # chmod +x /etc/rc.d/init.d/php-fpm   
  3. # chkconfig --add php-fpm   
  4. # chkconfig php-fpm on   
  5. # cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf 

编辑配置文件/usr/local/php5/etc/php-fpm.conf,将以下选项修改为相对应的值

 
 
  1. pm.max_children = 50   
  2. pm.start_servers = 5   
  3. pm.min_spare_servers = 2   
  4. pm.max_spare_servers = 8   
  5. pid = /usr/local/php5/var/run/php-fpm.pid 

在/var/www/html目录下提供测试页面index.php,其内容为

 
 
  1. <h1>hello,nginx</h1>   
  2. <?php   
  3.         $link = mysql_connect('10.170.2.36','testuser','******');   
  4.         if ($link)   
  5.                 echo "Success...";   
  6.         else  
  7.                 echo "Failure...";   
  8.     
  9.         mysql_close();   
  10.         phpinfo();   
  11. ?> 

启动php-fpm服务

 
 
  1. # /etc/init.d/php-fpm start 

测试nginx服务器与php服务器是否能够建立通信,在浏览器中键入10.170.2.80/index.php,可以得到如下页面

wKioL1Q9M63ijdb-AAI2nNDl8qs444.jpg

页面中显示Failure...,是因为后端的数据库还没有进行相应的配置

安装MariaDB服务器


编译安装mariadb-5.5.36

 
 
  1. # tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local   
  2. # cd /usr/local/   
  3. # ln -sv mariadb-5.5.36-linux-x86_64/ mysql   
  4. # mkdir -pv /mysql/data   
  5. # groupadd -r mysql   
  6. # useradd -g mysql -s /sbin/nologin -M -d /mysql/data -r mysql   
  7. # chown -R mysql:mysql /mysql   
  8. # chown -R mysql:mysql /mysql/data 

为数据库提供配置文件:

 
 
  1. # cd mysql   
  2. # mkdir /etc/mysql   
  3. # chown -R root.mysql ./*   
  4. # cp support-files/my-large.cnf /etc/mysql/my.cnf   
  5. 修改文件/etc/mysql/my.cnf文件内容,在thread_concurrency = 8行下添加一行:   
  6. datadir = /mysql/data 

为数据库提供SysV启动脚本,并设置为开机启动:

 
 
  1. # cp support-files/mysql.server /etc/init.d/mysqld   
  2. # chkconfig --add mysqld   
  3. # chkconfig mysqld on 

初始化数据库并启动数据库:

 
 
  1. # echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh   
  2. # source /etc/profile.d/mysql.sh    
  3. # echo "/usr/local/mysql/lib" > /etc/ld.so.conf.d/mysql.conf   
  4. # ldconfig   
  5. # ln -sv /usr/local/mysql/include/ /usr/include/mysql   
  6. # scripts/mysql_install_db --user=mysql --datadir=/mysql/data/   
  7. # /etc/init.d/mysqld start 

创建数据库并授权:

 
 
  1. MariaDB [(none)]> CREATE DATABASE testdb;   
  2. MariaDB [(none)]> GRANT ALL ON testdb.* TO dscuser@'10.170.2.%' IDENTIFIED BY '******';   
  3. MariaDB [(none)]> FLUSH PRIVILEGES; 

整体测试LNMP平台


在浏览器中键入10.170.2.80/index.php,可以得到如下页面

wKioL1Q9ND6RPJbOAAI3E1x54NM883.jpg

这次可以看到页面中显示Success...信息。


FROM:  http://os.51cto.com/art/201410/454231.htm

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搭建完全分离式LNMP平台的简单案例 的相关文章

  • Class 00 - 学习编程的方法&不同职业所使用的编程语言

    Class 00 学习编程的方法 不同职业所使用的编程语言 学习编程的方法 什么是编程 不同职业所使用的编程语言 数据分析 网页设计 移动应用开发 Web应用开发 游戏开发 Tips 学习编程语言的技巧 从电子表格到 SQL 再到 R 电子
  • threejs学习01-环境搭建+简单示例

    threejs学习 环境搭建 简单示例 环境搭建 node js vite js three js 轻量级的环境 先安装配置好node 在cmd中输入 node v 来查看node版本 node 配置好后就可以创建一个vite的项目了 先调
  • Vuforia Ground Plane 平面识别

    首先弄出这几个组件 如图 还有 再然后 然后就是关键了 如果Vuforia版本低于8 5 8 就得导入ARcore的arr 也就是这个 这个可以在 https dl google com dl android maven2 com goog
  • createBean方法详解

    前言 createBean是创建Bean的主要方法 该方法位于 AbstractBeanFactory的doGetBean方法中的createBean调用 createBean方法流程图 createBean源码解析 protected O
  • Zabbix监控MongoDB、Nignx、Redis、Php-fpm、SNMP(如打印机)

    Zabbix v3 4 MongoDB v3 4 MongoDB模板 感谢大神 MongoDB for Zabbix https share zabbix com databases mongodb mongodb for zabbix 3
  • better mybatis generator 使用详情

    1 在idea中plugins市场中下载better mybatis generator 安装 2 在idea中打开database 3 添加数据库 连接数据库 4 连接成功之后 如果如下图所示 可以看到schemas下边有连接好的数据库b
  • RoI Pooling 和 RoI Align

    RoI Pooling 和 RoI Align 一 背景和基本概念 1 背景 2 基本概念 二 RoI Pooling原理 1 目的 2 步骤 以输出RoI feature大小为2 2 5为例 Step1 Step2 Step3 Step4
  • python画饼图加牵引线_python-Matplotlib绘制分列式饼图并添加表格

    import matplotlib pyplot as plt import numpy as np import matplotlib as mpl 解决中文乱码和正负号问题 mpl rcParams font sans serif Si
  • 计算机汉字的输入和编辑教案,计算机汉字录入教案.doc

    教育局教研室学科教案纸 授课时间 年 月 日 星期 课 题上期总结与本期计划课 型新授本期总第 1 节教 学 目 标 知识与技能 过程与方法 情感态度与价值观 层 次 要 求了解认识理解应用经历体验反应领悟课 时 教 学 目 标 归纳总结上
  • 包教包会:本地推送 & 远程推送

    什么是推送 注意 和我们常用的抽象通知不同 NSNotification 可以让不在前台运行的app 告知用户app内部发生了什么事情 或者没有运行的app接收到服务器发来的通知 比如离线QQ接受消息 网上商城的打折通知 游戏的版本更新通知
  • 管理后台项目-06-用户管理角色管理模块

    目录 1 路由信息搭建和api文件信息创建 2 用户管理模块 2 1 列表数据获取以及动态渲染 2 2 添加 修改 用户 2 3 删除 批量删除用户 2 4 分配角色 3 角色管理 3 1 修改角色 3 2 分配权限 1 路由信息搭建和ap
  • vue $nextTick()方法实现原理

    什么是 nextTick 在下次 DOM 更新循环结束之后执行延迟回调 简单的理解是 当数据更新了 在dom中渲染后 自动执行该函数 原理 1 nextTick就是一个异步方法 nextTick 方法主要是使用了宏任务或微任务 事件循环机制
  • C++ 特化与重载(12)---《C++ Templates》

    目前为止 我们已经学习了C 如何使一个泛型定义被展开为一族系相关的classes或者function 但是这远远不够 以一个特定替换物取代泛华的templates parameters远远达不到优化的要求 因此 本片中我们将介绍两种机制 用
  • 伺服电机三环(电流环、速度环、位置环)控制原理及参数调节

    原文 https blog csdn net sunjiajiang article details 8252026 运动伺服一般都是三环控制系统 从内到外依次是电流环 速度环 位置环 1 电流环 电流环的输入是速度环PID调节后的输出 我
  • 设计模式(四) 建造者模式

    建造者模式和工厂模式类似 也是一种创建型模式 它们的主要区别在于 工厂模式需要提供一些信息 而对象在最后一步才创建 而建造者模式则是一步一步的创建对象 一个非常典型的建造者的例子是Java中的StringBuilder 通过一步一步的添加字
  • Journal of Proteome Research

    期刊名 Journal of Proteome Research 发表时间 2019年9月 IF 3 78 2018 单位 巴塞尔大学 瑞士 物种 人细胞系 技术 冷冻电子显微镜 Cryo EM 单粒子电子显微镜 一 概述 本文描述了一种
  • C语言的字符串查找函数

    C C string库 string h 提供了几个字符串查找函数 如下 memchr 在指定内存里定位给定字符 strchr 在指定字符串里定位给定字符 strcspn 返回在字符串str1里找到字符串str2里的任意一个字符之前已查找的
  • arma模型matlab代码_时间序列分析ARMA模型(金融计量一)

    以下内容为原创 如有错误请联系纠正 联系作者方式 微信公众号 计量文学 公众号会发布计量学相关文章 软件安装教程 公众号刚起步 希望多多支持 作业说明 1 给出原序列折线图 并加以文字描述 2 给出原序列或差分序列 如果有需要 的自相关函数
  • 深入剖析Kubernetes之声明式 API

    文章目录 声明式 API 编写自定义控制器 声明式 API 到底什么才是 声明式 API 呢 kubectl apply 命令 kubectl replace 的执行过程 是使用新的 YAML 文件中的 API 对象 替换原有的 API 对

随机推荐

  • Vue-Router总结

    路由三大组成部分 router link 导航 link 标签 router view 路由视图 路由页面呈现的地方 new VueRouter 路由配置 routes router link属性 1 to进行页面跳转 更改路径 2 tag
  • 着手MQTT.fx软件应用,利于深入了解MQTT协议数据连接、传递、订阅/发布流程

    第一步 Extras gt Edit connection 第二步 添加连接信息 第三步 选择连接的服务器 第四步 点击连接 成功就变为绿色 第五步 订阅 第六步 发布 第七步 查看订阅数据 这大致就是一个基本的使用过程 MQTT fx的下
  • 软件工程毕业设计题目合集【含源码+论文】

    文章目录 前言 题目1 基于SSM的房屋出租出售系统 br 题目2 基于SSM的房屋租赁系统 br 题目3 基于SSM的个人健康信息管理系统 br 题目4 基于SSM的共享充电宝管理系统 br 题目5 基于SSM的即动运动网站 br 前言
  • 操作系统期末整理!!!重要!!

    操作系统 期末可以过啦 第一章 操作系统引论 1 操作系统的定义 2 操作系统的作用 3 操作系统发展过程 4 各类型操作系统的特点 5 操作系统的基本特征 6 操作系统的基本功能 7 异常和中断的区别 8 为什么说中断是操作系统的核心技术
  • Keil报: warning: #223-D: function “某某某“ declared implicitly 的警告,三个解决方法

    原因 找不到 某某某 函数 解决 看有没有 include 相关头文件 看函数定义有没有出错 函数定义有一点不同就会出现上述原因 我个人遇到的比较奇葩的原因 emmm 人比较奇葩吧 在两个不同的 h文件中写了相同的 ifndef INA H
  • led灯条串联图_三分钟学会DIY个性LED灯

    上篇文章介绍了LED光源 主要介绍LED结构 常用参数 型号 常见品牌等内容 回看的小伙伴请点击照明灯饰专栏 今天主要介绍LED灯的工作原理与常见的LED灯 明白之后DIY自己的个性LED毫无压力 先别跳过下面有干货 一 LED驱动 上篇文
  • GoogLeNet论文阅读笔记

    目录 前言 GoogLeNet论文阅读笔记 Abstract 1 Introduction 2 Related Work 3 Motivation and High Level Considerations 4 Architectural
  • 上升沿_输入输出的上升沿和下降沿是怎么来的,一起看看

    高电平 低电平 上升沿和下降沿的区别 数字电路中 电平从低电平 逻辑信号为0 变为高电平 逻辑信号为1 的那一瞬间叫作上升沿 电平从高电平 逻辑信号为1 变为低电平 逻辑信号为0 的那一瞬间叫作下降沿 高电平触发 是指I O口电平为高电平时
  • Java实现给定两个 int 变量, 交换变量的值

    给定两个 int 变量 交换变量的值 1 创建变量i实现交换 2 不创建临时变量利用加减法实现 public class Solution public static void main String args int a 10 int b
  • C++ C2460 error

    关于该错误的官方说明 https msdn microsoft com en us library 1kf0205c aspx 结构形如 identifier1 uses identifier2 类或结构 identifier2 被声明为其
  • django中的跨域问题以及解决策略

    目录 跨域请求 同源策略 CORS 跨域资源共享 简介 CORS基本流程 解决跨域问题的方法 CORS两种请求详解 预检 解决跨域问题 服务端 简单请求 非简单请求 解决跨域问题 第三方 后端配置 解决跨域问题 前端 跨域请求 跨域是指浏览
  • Object Detection网络框架学习:Faster-RCNN

    经过RCNN和Fast RCNN的积淀 Ross B Girshick在2016年提出了新的Faster RCNN 在结构上 Faster RCN已经将特征抽取 feature extraction proposal提取 bounding
  • Linux找回root密码(Centos 7)

    首先 启动系统 进入开机界面 在界面中按 e 进入编辑界面 手速一定要快 进入编辑界面 使用键盘上的上下键把光标往下移动 找到以 Linux16 开头内容所在的行数 把光标移动到最尾部 在行的最后面输入 init bin sh 接着 输入完
  • vue实现点击两个按钮互相切换背景色

    首先准备两个按钮
  • HTTP中Put和Post的区别

    解释HTTP中Put和Post 它们有什么区别 哪个使用时更加安全 Put和Post都是浏览器向网页服务器提交数据的方法 Put把要提交的数据编码在url中 比如 http hi baidu com mianshiti key1 value
  • 【狂神说Mybatis29道练习题】

    Mybatis Mybatis动态SQL 狂神说学习笔记 29道练习题 Mybatis动态SQL 狂神说学习笔记 29道练习题 以下代码分为工具类 几个配置文件 mybatis config xml 实体类 持久层 mapper映射文件 测
  • 小程序原生和wepy、mpvue、uni-app、taro等主流开发框架,哪个好?这里是深度横评对比

    如下文章为2019年4月发布 2020年的测评版本也已出炉 最新评测点击 跨端开发框架深度横评之2020版 上周 Taro 团队发布了一篇 小程序多端框架全面测评 让开发者对业界主流的跨端框架 有了初步认识 感谢 Taro 团队的付出 不过
  • 【LeetCode】MySQL数据库简单题

    简单题近期打卡 1322 广告效果 1322 1 SQL架构 1322 2 题目要求 1322 3 代码实现 585 2016年的投资 585 1 SQL架构 1327 列出指定时间段内所有的下单产品 1327 1 SQL架构 1327 2
  • 【千律】C++基础:多态性与虚函数

    虚函数 通过父类的指针 指向子类的对象 调用虚函数时 调用子类的函数 include
  • 搭建完全分离式LNMP平台的简单案例

    案例拓扑图 安装配置nginx服务器 编译安装nginx时 需要事先安装 开发包组 Development Tools 和 Server Platform Development 同时还需专门安装pcre devel包 yum y grou