LNMP架构详解

LNMP架构详解

(需要本实验的源码包请私信我)

Nginx安装

挂载源码包

[[email protected] ~]# smbclient -L //192.168.100.23/  #访问宿主机
Enter SAMBA\root‘s password:
OS=[Windows 10 Enterprise 17763] Server=[Windows 10 Enterprise 6.3]

    Sharename       Type      Comment
    ---------       ----      -------
    ADMIN$          Disk      远程管理
    C$              Disk      默认共享
    D$              Disk      默认共享
    E$              Disk      默认共享
    F$              Disk      默认共享
    G$              Disk      默认共享
    IPC$            IPC       远程 IPC
    LAMP            Disk
    LAMP-C7         Disk
    LNMP            Disk
    share           Disk
    Users           Disk
[[email protected] ~]# mkdir chen/  #创建挂载点
[[email protected] ~]# mount.cifs //192.168.100.23/LNMP chen/  #挂载
Password for [email protected]//192.168.100.23/LNMP:  

解压nginx包到opt底下

[[email protected] ~]# cd chen/
[[email protected] chen]# ls
mysql-boost-5.7.20.tar.gz  nginx-1.12.2.tar.gz  php-7.1.20.tar.gz
nginx-1.12.0.tar.gz        php-7.1.10.tar.bz2
[[email protected] chen]# tar zxvf nginx-1.12.2.tar.gz -C /opt/

安装nginx环境包

[[email protected] opt]# yum install gcc gcc-c++ pcre-devel zlib-devel -y
#c语言,c++语言,pcre语言,数据压缩用的函数库
已安装:
  gcc.x86_64 0:4.8.5-39.el7          gcc-c++.x86_64 0:4.8.5-39.el7
  pcre-devel.x86_64 0:8.32-17.el7    zlib-devel.x86_64 0:1.2.7-18.el7   

作为依赖被安装:
  cpp.x86_64 0:4.8.5-39.el7
  glibc-devel.x86_64 0:2.17-292.el7
  glibc-headers.x86_64 0:2.17-292.el7
  kernel-headers.x86_64 0:3.10.0-1062.4.1.el7
  libmpc.x86_64 0:1.0.1-3.el7
  libstdc++-devel.x86_64 0:4.8.5-39.el7                                  

作为依赖被升级:
  glibc.x86_64 0:2.17-292.el7       glibc-common.x86_64 0:2.17-292.el7
  libgcc.x86_64 0:4.8.5-39.el7      libgomp.x86_64 0:4.8.5-39.el7
  libstdc++.x86_64 0:4.8.5-39.el7   zlib.x86_64 0:1.2.7-18.el7        

创建nginx用户去管理,安装组件,编译安装

[[email protected] opt]# useradd -M -s /sbin/nologin nginx  #创建nginx用户,不指定家目录,不让它登录本地控制台
[[email protected] opt]# id nginx
uid=1001(nginx) gid=1001(nginx) 组=1001(nginx)
[[email protected] opt]# cd nginx-1.12.2/
[[email protected] nginx-1.12.2]# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README

[[email protected] nginx-1.12.2]# ./configure \  #执行脚本,安装组件
--prefix=/usr/local/nginx \  #指定路径
--user=nginx \  #指定用户
--group=nginx \  #指定组
--with-http_stub_status_module  #状态统计模块

[[email protected] nginx-1.12.2]# make  #编译
[[email protected] nginx-1.12.2]# make install  #编译安装

启动服务查看端口有没有被开启

[[email protected] nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin/  #做个软链接让系统能识别nginx的命令
[[email protected] nginx-1.12.2]# nginx -t  #检查nginx配置语法有没有错误
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[[email protected] logs]# nginx  #开启nginx服务
[[email protected] nginx-1.12.2]# netstat -ntap | grep nginx  #查看nginx端口
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8878/nginx: master  

[[email protected] nginx-1.12.2]# systemctl stop firewalld.service  #关闭防火墙
[[email protected] nginx-1.12.2]# setenforce 0  #关闭增强功能

做个脚本让service管理器方便管理nginx服务

[[email protected] init.d]# cd /usr/local/nginx/logs/
[[email protected] logs]# ls
access.log  error.log  nginx.pid
[[email protected] logs]# cat nginx.pid   #查看nginx的进程号,我们关闭,启动,都是靠这个进程号
8878

[[email protected] nginx-1.12.2]# cd /etc/init.d/  #到系统脚本中

[[email protected] init.d]# vim nginx  #添加nginx脚本

#!/bin/bash
#chkconfig: - 99 20  #注释信息
#description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"  #这个变量,指向我的命令文件
PIDF="/usr/local/nginx/logs/nginx.pid"  #这个变量,指向nginx的进程号
case "$1" in
    start)
        $PROG
        ;;
    stop)
        kill -s QUIT $(cat $PIDF)
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    reload)
        kill -s HUP $(cat $PIDF)
        ;;
    *)
                echo "Usage: $0 {start|stop|restart|reload}"
                exit 1
esac
exit 0

[[email protected] logs]# chmod +x /etc/init.d/nginx #添加执行权限
[[email protected] logs]# chkconfig --add nginx  #添加nginx
[[email protected] logs]# service nginx stop  #关闭nginx
[[email protected] logs]# service nginx start  #开启nginx
[[email protected] logs]# netstat -ntap | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      9185/nginx: master  

mysql安装配置

安装环境包,创建程序用户

[[email protected] logs]# cd ~
[[email protected] ~]# yum -y install gcc \  #c语言
gcc-c++ \ #c++语言
ncurses \
ncurses-devel \  #控制终端屏幕显示的库
bison \  #语法分析工具
cmake  #cmake工具

[[email protected] ~]# useradd -s /sbin/nologin mysql  #创建程序性用户

解压缩,编译安装

[[email protected] ~]# cd chen/
[[email protected] chen]# ls
mysql-boost-5.7.20.tar.gz  nginx-1.12.2.tar.gz  php-7.1.20.tar.gz
nginx-1.12.0.tar.gz        php-7.1.10.tar.bz2

[[email protected] chen]# tar zxvf mysql-boost-5.7.20.tar.gz -C /opt #解压缩到opt底下

[[email protected] chen]# cd /opt/

[r[email protected] opt]# cd mysql-5.7.20/

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \  #安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \  #定义sock文件连接数据库文件
-DSYSCONFDIR=/etc \  #配置文件目录
-DSYSTEMD_PID_DIR=/usr/local/mysql \  #PID文件目录
-DDEFAULT_CHARSET=utf8 \  #指定字符集
-DDEFAULT_COLLATION=utf8_general_ci \  #指定字符集默认
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #存储引擎,以下三个都是
-DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DMYSQL_DATADIR=/usr/local/mysql/data \  #数据库数据文件目录
-DWITH_BOOST=boost \ #底层运行库
-DWITH_SYSTEMD=1  #主从参数

[[email protected] mysql-5.7.20]#make #编译
[[email protected] mysql-5.7.20]#make install #编译安装

配置mysql

[[email protected] mysql-5.7.20]#cd /usr/local/
[[email protected] local]# chown -R mysql:mysql mysql/ #提升mysql权限,属祝,属组
[[email protected] local]# cd /opt/mysql-5.7.20/

[[email protected] mysql-5.7.20]# vim /etc/my.cnf     ##调整配置文件

[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      ##设置mysql的安装目录
datadir = /usr/local/mysql/data    ##设置mysql数据库的数据的存放目录
port = 3306                    ##设置3306端口
character_set_server=utf8            ##中文字符集
pid-file = /usr/local/mysql/mysqld.pid     ##pid文件路径
socket = /usr/local/mysql/mysql.sock     ##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

使系统能识别mysql所有命令

[[email protected] local]# echo ‘PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH‘ >> /etc/profile
#设置环境变量,使系统能识别bin和lib下的所有命令

[[email protected] local]# echo ‘export PATH‘ >> /etc/profile
#全局变量

[[email protected] local]# source /etc/profile #重新启动系统环境变量

初始化数据库

[[email protected] local]# cd /usr/local/mysql/
bin/mysqld --initialize-insecure \  #初始化
--user=mysql \  #指定用户
--basedir=/usr/local/mysql \ #指定安装目录
--datadir=/usr/local/mysql/data #数据库数据文件目录

开启mysql数据库

[[email protected] mysql]# cp usr/lib/systemd/system/mysqld.service /lib/systemd/system/
#把mysql启动脚本放到系统中可以systemctl可以管理
[[email protected] mysql]# systemctl start mysqld.service
[[email protected] mysql]# netstat -ntap | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      73971/mysqld        

设置mysql密码

[[email protected] mysql]# mysqladmin -u root -p password #一开始是空的密码,可以设置abc123
Enter password:
New password:
Confirm new password:
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[[email protected] mysql]# mysql -u root -p
Enter password: 

安装配置PHP

安装环境包

yum install -y libjpeg \                              ##jpeg图片格式和开发包
libjpeg-devel libpng libpng-devel \           ##png图片和开发包
freetype freetype-devel \    ##字体库
libxml2 \                              ##xml文件库
libxml2-devel zlib zlib-devel \                    ##压缩库
curl curl-devel \                   ##支持数据文件下载工具
openssl openssl-devel        ##安全访问连接

解压,压缩

[[email protected] chen]# cd chen/
[[email protected] chen]# tar zxvf php-7.1.20.tar.gz -C /opt/
[[email protected] chen]# cd /opt/
[[email protected] opt]# ls
mysql-5.7.20  nginx-1.12.2  php-7.1.20  rh

安装PHP组件

[[email protected] opt]# cd php-7.1.10/
[[email protected] php-7.1.10]# ./configure
--prefix=/usr/local/php                        ##安装路径
--with-mysql-sock=/usr/local/mysql/mysql.sock   ##连接文件建立通信桥梁
--with-mysqli                                    ##客户端支持库
--with-zlib                                         ##压缩
--with-curl                                        ##支持上传下载功能
--with-gd                                          ##gd图像支持图片处理库
--with-jpeg-dir                                  ##jpeg
--with-png-dir                                   ##png
--with-freetype-dir                            ##字体
--with-openssl                                  ##安全访问连接
--enable-fpm                                    ##fpm支持动态请求模块
--enable-mbstring                            ##支持多字节的字符串
--enable-xml                                    ##xml文件
--enable-session                             ##session支持会话
--enable-ftp                                     ##ftp服务
--enable-pdo                                   ##驱动连接管理
--enable-tokenizer                          ##PHP自带函数
--enable-zip                                    ##zip压缩包

编译安装

[[email protected] php-7.1.20]# make
[[email protected] php-7.1.20]# make install

配置PHP

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

www.conf 扩展配置文件

cp php.ini-development /usr/local/php/lib/php.ini  #把核心文件复制一份出来工作目录底下
vim /usr/local/php/lib/php.ini

1170 行mysql.default_socket= /usr/local/mysql/mysql.sock

#添加mysql   sock路径
 939 行 date.timezone = Asia/Shanghai

#添加时区,上海的时区
/usr/local/php/bin/php -m #验证安装模块

#配置及优化FPM模块
[[email protected] php-7.1.20]# cd /usr/local/php/etc/
[[email protected] etc]# cp php-fpm.conf.default php-fpm.conf

#开启监控PID
[[email protected] etc]# vim php-fpm.conf
pid = run/php-fpm.pid

#扩展的文件中我们复制一份出来
[[email protected] etc]# cd php-fpm.d/
[[email protected] php-fpm.d]# ls
www.conf.default
[[email protected] php-fpm.d]# cp www.conf.default www.conf

#启动用sbin配置文件指向lib下的配置文件
[[email protected] php-fpm.d]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini 

查看端口有没有被开启

[[email protected] php-fpm.d]# netstat -natp | grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      92879/php-fpm: mast 

做个软链接让系统能识别PHP下的所有命令

[[email protected] php-fpm.d]# ln -s /usr/local/php/bin/* /usr/local/bin/

[[email protected] php-fpm.d]#cd /usr/local/nginx/conf/
[[email protected] php-fpm.d]#vim nginx.conf
#让nginx能支持PHP功能
#指定站点目录路径
       location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;
            include        fastcgi_params;
        }

[[email protected] conf]# systemctl stop nginx.service
[[email protected] conf]# systemctl start nginx.service

修改网页文件

[[email protected] conf]# cd /usr/local/nginx/html/
[[email protected] html]# ls
50x.html  index.html
[[email protected] html]# mv index.html  index.php

[[email protected] html]#vim index.php
#把原来的内容删掉,写PHP的网页
<?php
phpinfo();
?>

到这里我们的LNMP架构已经好了,去客户机测试一下网页

安装,配置论坛

[[email protected] html]# mysql -u root -p

mysql> CREATE DATABASE bbs;  #创建数据库

mysql> GRANT all ON bbs.* TO ‘bbsuser‘@‘%‘ IDENTIFIED BY ‘admin123‘; #提权数据库当中的所有表格用户bbsuser为管理员设定密码

mysql> GRANT all ON bbs.* TO ‘bbsuser‘@‘localhost‘ IDENTIFIED BY ‘admin123‘;

mysql> flush privileges; #刷新数据库

mysql> quit

[[email protected] opt]# cd ~

mount.cifs //192.168.100.23/LNMP /opt/
[[email protected] ~]# cd /opt/
[[email protected] opt]# ls
Discuz_X3.4_SC_UTF8.zip    nginx-1.12.0.tar.gz  php-7.1.10.tar.bz2
mysql-boost-5.7.20.tar.gz  nginx-1.12.2.tar.gz  php-7.1.20.tar.gz

解压安装论坛包

[[email protected] opt]# unzip Discuz_X3.4_SC_UTF8.zip -d /mnt/
[[email protected] opt]# cd /mnt/
[[email protected] mnt]# ls
dir_SC_UTF8 说明.htm
[[email protected] mnt]# cd dir_SC_UTF8/
[[email protected] dir_SC_UTF8]# ls
readme upload utility

[[email protected] dir_SC_UTF8]# cp -r upload/ /usr/local/nginx/html/bbs#复制/opt目录里的内容到html站点的bbs目录中
[[email protected] dir_SC_UTF8]# cd /usr/local/nginx/html/bbs/ ##进入bbs站点目录

给程序用户提权

[[email protected] bbs]# chown -R root:nginx ./config/
chown -R root:nginx ./data/
chown -R root:nginx ./uc_client/
chown -R root:nginx ./uc_server/
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

到网站上去加载数据包,加载论坛



登录论坛

以上就是我们全部的内容了

原文地址:https://blog.51cto.com/14449524/2449805

时间: 2024-10-08 20:35:18

LNMP架构详解的相关文章

支撑5亿用户、1.5亿活跃用户的Twitter最新架构详解及相关实现

如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 摘要:Twitter出道之初只是个奋斗在RoR上的小站点,而如今已拥有1.5亿的活跃用户,系统日传输tweet更多达4亿条,并已完成了以服务为核心的系统架构蜕变. Twitter如今在世界范围内已拥有1.5亿的活跃用户,为了给用户生成timeline(时间轴)需支撑30万QPS,其firehose每秒同样生成22MB数据.整个系统每天传输tweet 4亿条,并且只需要5分钟就可以让一条twe

高并发高流量网站架构详解

(推荐)高并发高流量网站架构详解 Web2.0的兴起,掀起了互联网新一轮的网络创业大潮.以用户为导 向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们.但Web2.0以用户为导向的理念,使得新 生的网站有了新的特点--高并发,高流量,数据量大,逻辑复杂等,对网站建设也提出了新的要求. 本文围绕高并发高流量的网站架构设计问题,主要研究讨论了以下内容: 首先在整个网络的高度讨论了使用镜像网站,CDN内容分发网络等技术对负载均衡带来的便利及各自的优缺

瘸腿蛤蟆笔记37-cocos2d-x-3.2 Box2dTestBed架构详解

瘸腿蛤蟆原创笔记,欢迎转载,转载请标明出处: 上篇回顾 本篇名言:凡是内心能够想到.相信的,都是可以达到的. [Napoleon Hill] 在最早的时候,蛤蟆学习过cocos2d-x示例架构.这次在这个基础上,蛤蟆要学习Box2dTestBed这个物理引擎的DEMO架构.这样大家可以自己深入研究之了. 架构详解 第一步基本类介绍 首先从我们点到controller.cpp文件中.找到第43行如下: { "Box2d - TestBed", []() { return new Box2

领域驱动设计(Domain Driven Design)参考架构详解

转自:http://blog.csdn.net/bluishglc/article/details/6681253 领域驱动设计(Domain Driven Design)参考架构详解 摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrastructure.本文会对架构中一些重要组件和问题进行讨论,给出一些分析结论.本文原文连接:http://blog.

NopCommerce源码架构详解--初识高性能的开源商城系统cms

很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从中学习很多企业系统.软件开发的规范和一些新的技术.技巧,可以快速地提高我们的技术能力.所以我最近决定写一个“NopCommerce源码架构详解”的系列,来详细剖析NopCommerce的架构和原理. Nopcommerce主要用到的技术及特点: 1.Entity Framework 2.ASP.NET mvc 3.IoC容器+依赖注入(Autofac) 4.使用EF中的E

MySQL主从架构详解

1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收

[转载]领域驱动设计(Domain Driven Design)参考架构详解

摘要 本文将介绍领域驱动设计(Domain Driven Design)的官方参考架构,该架构分成了Interfaces.Applications和Domain三层以及包含各类基础设施的Infrastructure.本文会对架构中一些重要组件和问题进行讨论,给出一些分析结论.本文原文连接:http://blog.csdn.net/bluishglc/article/details/6681253 转载请注明出处! 目录 1.      架构概述2.      架构详解        2.1.  

NopCommerce源码架构详解

NopCommerce源码架构详解--初识高性能的开源商城系统cms 很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从中学习很多企业系统.软件开发的规范和一些新的技术.技巧,可以快速地提高我们的技术能力.所以我最近决定写一个“NopCommerce源码架构详解”的系列,来详细剖析NopCommerce的架构和原理. Nopcommerce主要用到的技术及特点: 1.Entity Framework 2.ASP.NET 

阿里巴巴 Sigma 调度和集群管理系统架构详解

阿里巴巴 Sigma 调度和集群管理系统架构详解 划重点 阿里巴巴 9 年双 11 经历下来,交易额增长了 280 倍.交易峰值增长 800 多倍.系统数呈现爆发式增长.系统在支撑双 11 过程中的复杂度和支撑难度以指数级形式上升.双 11 峰值的本质是用有限的成本最大化提升用户体验和集群吞吐能力,用合理的代价解决峰值.本文将从阿里巴巴统一调度体系.混部架构.云化架构三个方面详解阿里是如何支撑如此庞大的系统. 统一调度体系 始于 2011 年建设的 Sigma 是服务阿里巴巴在线业务的调度系统,