中小型企业架构——LNMP架构功能介绍

文章目录

  • LNMP介绍
  • Nginx编译安装
  • 编译安装Mysql数据库
  • 编译安装PHP环境解析
  • 部署Discuz!社区论坛Web应用

LNMP介绍

LNMP指的是一个基于CentOS/Debian编写的Nginx、Linux、MySQL、PHP,可以在独立主机上轻松的安装LNMP生产环境。本案例主要介绍LNMP框架安装方法以及部署Discuz!社区论坛应用。
##案例概述##
1、LNMP指的是一个基于CentOS/Debian编写的Nginx、Linux、MySQL、PHP,可以在独立主机上轻松的安装LNMP生产环境。本案例主要介绍LNMP框架安装方法以及部署Discuz!社区论坛应用。
2、Nginx作为Web服务器:相比Apache,Nginx使用更少的资源,支持更多的并发连接,体现更高的效率。Nginx作为负载均衡服务器:Nginx既可以在内部直接支持Rails和PHP,也可以支持作为HTTP代理服务器对外进行服务。Nginx 采用C语言进行编写,不论是系统资源开销还是 CPU使用效率都比Perlbal要好的多。Nginx作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm描述了成功并且美妙的使用经验。Nginx安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级
3、MySQL,是一个关系型数据库管理系统,由瑞典MySQL,AB公司开发,目前被Oracle公司收购。MySQL 是最流行的关系型数据库管理系统之一,在WEB`应用方面,MySQL是较好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MysQL作为网站数据库。
4、PHP-FPM(FastCGI Process Manager: FastCGI进程管理器)是一个PHPFastCGI管理器,由于Nginx服务器不能处理动态页面,需要由 Nginx把动态请求交给 php-fpm 处理。

Nginx编译安装

安装环境依赖包

  [root@localhost ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel
   注:pcre-devel        #支持正则表达式
      zlib-devel        #软件包的开发包,一个函数库
 

解压缩,并编译安装nginx

  [root@localhost ~]# tar zxf nginx-1.12.2.tar.gz
  [root@localhost ~]# cd nginx-1.12.2/
  [root@localhost nginx-1.12.2]# ./configure \
 --prefix=/usr/local/nginx \
  --user=nginx \
  --group=nginx \
  --with-http_stub_status_module ###统计状态模块
  [root@localhost nginx-1.12.2]# make && make install

新建nginx管理用户

[root@localhost ~]# useradd -M -s /sbin/nologin nginx  ###创建一个不可登录的程序用户
路径优化,便于系统管理
使Nginx命令的运行更加方便,可以使主程序nginx创建链接文件,以便管理员执行“nginx”命令就可以调用Nginx的主程序

[root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/bin ###优化执行路径
[root@localhost ~]# nginx ###启动服务
[root@localhost ~]# netstat -anpt | grep nginx ###查看nginx服务是否开启
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      16429/nginx: master

附加:

[root@localhost ~]# killall -s QUIT nginx ###选项-s QUIT等于-3 停止服务
[root@localhost ~]# netstat -anpt | grep nginx

[root@localhost ~]# killall -s HUP nginx ###选项-s HUP等于-1 重新加载
[root@localhost ~]# netstat -anpt | grep nginx
25 tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      16488/nginx: master

制作管理脚本并执行

 [root@localhost ~]# vi /etc/init.d/nginx ###制作管理脚本
 #!/bin/bash
 #chkconfig: 35 20 80
 #description: nginx server
 PROG="/usr/local/nginx/sbin/nginx"
 PIDF="/usr/local/nginx/logs/nginx.pid"
 
 case "$1" in
     start)
        $PROG
        ;;
     stop)
        killall -s QUIT $(cat $PIDF)
        ;;
     restart)
        $0 stop
        $0 start
        ;;
     reload)
        killall -s HUP $(cat $PIDF)
        ;;
     *)
        echo "Usage: $0 {start|stop|reload|status}"
        exit 1
 esac
 exit 0 [root@server3 init.d]# chmod +x nginx 
[root@server3 init.d]# chkconfig --add nginx 
[root@server3 init.d]# netstat -anpt | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3472/nginx: master  

测试nginx服务是否正常
中小型企业架构——LNMP架构功能介绍_第1张图片

编译安装Mysql数据库

安装环境

 [root@localhost ~]# yum -y install \
 ncurses \                     #字符终端包
 ncurses-devel \
 bison \                       #函数库
 cmake                         #没有configure用cmake

创建不可登录的用户

 [root@localhost ~]# useradd -s /sbin/nologin mysql

上传安装包到/opt目录下解压缩并进行cmake配置

[root@server3 opt]# tar xf mysql-5.7.20.tar.gz
[root@server3 opt]# cd mysql-5.7.20/

 [root@server3 mysql-5.7.20]# 
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \       #指定将 mysql 数据库程序安装路径。     
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ #指定套接字文件的存储路径,数据库连接的通讯文件
-DSYSCONFDIR=/etc \                             #系统的配置文件目录
-DSYSTEMD_PID_DIR=/usr/local/mysql \            #pid文件的目录
-DDEFAULT_CHARSET=utf8  \                       #指定默认使用的字符集编码,如 utf8。
-DDEFAULT_COLLATION=utf8_general_ci \           #适用于 UTF-8 字符集的通用规则。
-DWITH_INNOBASE_STORAGE_ENGINE=1 \              #安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \               #安装ARCHIVE存储引擎 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \             #安装ARCHIVE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \            #安装FEDERATED存储引擎 
-DMYSQL_DATADIR=/usr/local/mysql/data \   #数据文件存放路径
-DWITH_BOOST=boost \    //支持boost
-DWITH_SYSTEMD=1  //ID

编译安装

 [root@localhost mysql-5.7.20]# make && make install

数据库目录进行权限调整

 [root@localhost ~]# chown -R mysql:mysql /usr/local/mysql/

建立调整配置文件

复制代码

#清空内容
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
附加:make的过程就是构建过程,就是把源码文件经过编译器,编译完成之后生成指定性文件(二进制文件),他人无法识别

调整配置文件权限

 [root@localhost ~]# chown mysql:mysql /etc/my.cnf

设置环境变量(识别到bin目录下命令)

 [root@localhost ~]# echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >>/etc/profile
 [root@localhost ~]# echo 'export PATH' >> /etc/profile
 [root@localhost ~]# source /etc/profile

初始化数据库


 [root@localhost ~]# cd /usr/local/mysql/
 [root@localhost mysql]#bin/mysqld \
 --initialize-insecure \                  #初始化命令
 --user=mysql \                           #指定用户
 --basedir=/usr/local/mysql \             #指定工作目录
 --datadir=/usr/local/mysql/data          #指定数据存放位置

编辑启动文件

 [root@localhost ~]# cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/

启动mysql数据库并查看状态


 [root@localhost ~]# systemctl start mysqld
 [root@localhost ~]# netstat -anpt | grep mysqld
 tcp6       0      0 :::3306                 :::*                    LISTEN      67263/mysqld

设置登录数据库密码

[root@localhost mysql]# mysqladmin -u root -p passwordEnter password:                  #默认空密码直接回车
New password:                            #设定新密码 这边设置abc123
Confirm new password:                    #再次输入密码
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

编译安装PHP环境解析

安装GD库及GD库相关程序

[root@localhost ~]# yum -y install \
libjpeg \					#jpeg图片识别
libjpeg-devel \				#jpeg开发包
libpng libpng-devel \		#png图片识别还有开发包
freetype freetype-devel \	#freetype 识别字体
libxml2 \					#xml文件格式识别
libxml2-devel \
zlib zlib-devel \			#zlib压缩
curl curl-devel \			#curl 支持文件上传下载,网页端的下载
openssl openssl-devel		#身份验证去连接网站

解压缩源码包

[root@localhost ~]# cd /opt
[root@localhost opt]# tar jxf php-7.1.10.tar.bz2

configure配置属性,make编译

--prefix=/usr/local/php \							#指定安装目录
--with-mysql-sock=/usr/local/mysql/mysql.sock \		#指向mysql的sock文件,用以后台程序去连接数据库
--with-mysqli \										#客户终端工具,可以直接去访问mysql服务器,去找它进行定义存储过程,事务的处理一些功能
--with-zlib \
--with-curl \
--with-gd \											#gd是一个图像化的处理
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \                               #字体
--with-openssl \
--enable-fpm \										#fpm 是指动态请求的模块
--enable-mbstring \									#mbstring 多节点字符串
--enable-xml \										#xml 启用xml格式支持
--enable-session \									#支持session会话
--enable-ftp \										#网页可以ftp的功能
--enable-pdo \										#pdo 类似一个通用的接口一样,下面的不同的数据库的数据,会统一接口接收
--enable-tokenizer \ 								#tokenizer 是一个函数库
--enable-zip										#zip 压缩


#make编译
[root@localhost php-7.1.10]# make && make install
安装最后一步显示为
Installing PDO headers:           /usr/local/php/include/php/ext/pdo/

配置PHP的三个配置文件
php有三个配置文件,php.ini 核心配置文件,php-fpm.conf 进程服务配置文件,www.conf扩展配置文件

 [root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini
 [root@localhost php-7.1.10]# vi /usr/local/php/lib/php.ini
 date.timezone = Asia/Shanghai
 mysqli.default_socket = /usr/lcoal/mysql/mysql.sock

验证安装的模块

/usr/local/php/bin/php -m

配置及优化fpm模块

  [root@localhost php-7.1.10]# cd /usr/local/php/etc/
  [root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
  [root@localhost etc]# cd php-fpm.d/
  [root@localhost php-fpm.d]# cp www.conf.default www.conf
  [root@localhost etc]# vi php-fpm.conf
  pid = run/php-fpm.pid ###去掉;号
  
  [root@localhost etc]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
  [root@localhost etc]# netstat -ntap | grep 9000
 tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN       118685/php-fpm: mas
 
 [root@localhost etc]# ln -s /usr/local/php/bin/* /usr/local/bin
 [root@localhost etc]# ps aux | grep -c "php-fpm" ###查看php-fpm进程数
 4

配置Nginx支持PHP功能

  [root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf  //合适的地方添加,不是修改
   location ~ \.php$ {
              root           /var/www/aa;
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
              include        fastcgi.conf;
          }

设置检验网页index.php,并重启服务

  [root@localhost ~]# vi /var/www/aa/index.php
 
 
 [root@localhost ~]# systemctl restart nginx

在客户端测试 http://20.0.0.10/index.php

中小型企业架构——LNMP架构功能介绍_第2张图片

测试数据库工作是否正常

  [root@localhost ~]# mysql -u root -p
  Enter password: ###输入之前设置的密码
  
  mysql> create database test;
  Query OK, 1 row affected (0.00 sec)
  
  mysql> grant all on bbs.* to 'bbsuser'@'%' identified by 'admin123';
  Query OK, 0 rows affected, 1 warning (0.01 sec)
  
 mysql> grant all on bbs.* to 'bbsuser'@'localhost' identified by 'admin123';
 Query OK, 0 rows affected, 1 warning (0.00 sec)
 
 mysql> flush privileges;
 Query OK, 0 rows affected (0.01 sec)
 
 [root@localhost ~]# vi /usr/local/nginx/html/index.php ###更改测试页内容
 Success!";
 else echo "Fail!!";
 ?>
 [root@localhost ~]# systemctl restart nginx

在客户端输入 http://20.0.0.10/index.php测试,出现success!即为正常

部署Discuz!社区论坛Web应用

安装Discuz文件


  [root@localhost ~]# cd /opt
  [root@localhost opt]# unzip Discuz_X3.4_SC_UTF8.zip ###将安装包放在/opt目录下并解压缩
  [root@localhost opt]# cd dir_SC_UTF8/
  [root@localhost dir_SC_UTF8]# cp -r upload /var/www/aa/bbs
  [root@localhost dir_SC_UTF8]# cd /var/www/aa/bbs/
  ###给安装论坛的文件权限
  [root@localhost bbs]# chown -R root:nginx ./config
  [root@localhost bbs]# chown -R root:nginx ./data
  [root@localhost bbs]# chown -R root:nginx ./uc_client
  [root@localhost bbs]# chown -R root:nginx ./uc_server
  [root@localhost bbs]# chmod -R 777 ./config
  [root@localhost bbs]# chmod -R 777 ./data
  [root@localhost bbs]# chmod -R 777 ./uc_client
  [root@localhost bbs]# chmod -R 777 ./uc_server
  [root@localhost bbs]# systemctl restart nginx

在客户端输入 http://20.0.0.10/bbs/install/index 进行论坛安装
安装完毕再用http://20.0.0.10/bbs/index.php登录论坛
登录http://20.0.0.10/bbs/admin.php可以直接进管理中心

你可能感兴趣的:(nginx,linux,mysql,php)