Linux运维之LNMP架构

  • 什么是lnmp架构

LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写。L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python。

特点:

Nginx是一个小巧而高效的Linux下的Web服务器软件,是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler 站点开发的,已经在一些俄罗斯的大型网站上运行多年,相当的稳定。
Nginx性能稳定、功能丰富、运维简单、处理静态文件速度快且消耗系统资源极少。

原理图:

  • nginx的编译安装

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务

开启一台虚拟机作为lnmp服务器主机

准备好lnmp相关的源码包


解压nginx源码包

tar zxf nginx-1.15.9.tar.gz
cd nginx-1.15.9/
ls


修改配置文件使不显示nginx版本

cd nginx-1.15.9/src/core
vim nginx.h
删除第14行 nginx后面的内容



加快安装,是nginx占用空间更小一点

cd nginx-1.15.9/auto/cc/
vim gcc
将第172行注释掉



解决编译过程中一些软件的依赖性
在实际操作过程中,要根据具体的报错情况来安装软件或插件解决依赖性

yum install gcc pcre-devel openssl-devel -y

编译并安装

./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module
make && make install



编译安装成功查看

cd /usr/local/lnmp/nginx
ls


创建nginx用户并在配置文件更改

id nginx
useradd nginx
cd /usr/local/lnmp/nginx/conf
vim nginx.conf
user  nginx nginx;



添加软连接并测试

ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin/
nginx
nginx
netstat -antlp



打开网页测试:


本地发布网页目录

vim /usr/local/lnmp/nginx/html/index.html

设置后端网页虚拟主机
在lnmp服务器端修改配置文件

cd /usr/local/lnmp/nginx/conf
vim nginx.conf
在末尾加入如下server {listen       80;server_name  www.cc.com;location / {root html/www;index index.html;
}
}  server {listen       80;server_name  bbs.cc.com;location / {root html/bbs;index index.html;
}
}  server {listen       80;server_name  blog.cc.com;location / {root html/blog;index index.html;
}
}
}



在默认发布目录下创建目录并写入对应网页

cd /usr/local/lnmp/nginx/html
mkdir www
cd www
vim index.html

检测配置文件语法并重启服务

nginx -t
nginx -s reload


测试:
在真机注意更改本地解析

curl www.cc.com
curl bbs.cc.com
curl blog.cc.com



设置均衡负载
在开启两台虚拟机,安装httpd,写入网页并开启服务

在lnmp服务器虚拟机修改配置文件

cd /usr/local/lnmp/nginx/conf
vim nginx.conf
更改如下:
http {include       mime.types;default_type  application/octet-stream;upstream cc {server 172.25.11.1:80;server 172.25.11.2:80;
}将之前设定的网页虚拟主机注释
server {listen 80;server_name www.cc.com;location / {proxy_pass http://cc;
}
}
}



检测语法并重启nginx

nginx -t
nginx -s reload


测试:
在真机:

curl www.cc.com

  • mysql的编译安装及设置

在编译安装mysql之前关闭nginx,防止电脑卡顿

nginx -s stop


准备好源码包并解压

tar zxf mysql-boost-5.7.17.tar.gz
cd mysql-5.7.17/
ls

安装编译过程中有依赖性的软件(实际操作中,请根据自身情况来安装)

yum install -y cmake-2.8.12.2-4.el7.x86_64.rpm
yum install -y gcc gcc-c++ ncurses-devel
yum install -y bison

安装依赖性软件后进行mysql的编译安装
编译安装时间较长

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lnmp/mysql -DMYSQL_DATADIR=/usr/local/lnmp/mysql/data -DMYSQL_UNIX_ADDR=/usr/local/lnmp/mysql/data/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BOOST=boost/boost_1_59_0/make && make install



安装成功,查看

cd /usr/local/lnmp/mysql
ls


复制启动脚本到/etc/init.d/

cd /lnmp安装包/mysql-5.7.17/support-files
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld


将原来的/etc/my.cnf备份,重新拷贝安装包里的过去

cd /etc
cp my.cnf my.cnf.bak
cd /lnmp安装包/mysql-5.7.17/support-files/
cp my-default.cnf /etc/my.cnf
vim /etc/my.cnf
basedir = /usr/local/lnmp/mysql
datadir = /usr/local/lnmp/mysql/data
socket = /usr/local/lnmp/mysql/data/mysql.sock



添加用户和组

groupadd -g 27 mysql
useradd -u 27 -g 27 mysql (id=27是因为rpm默认安装时mysql用户的id为27,并非强制)
chown mysql.mysql /usr/local/lnmp/mysql -R (修改mysql目录的权限,使其对mysql用户可写)

将mysql命令添加到环境变量
b

vim ~/.bash_profile
添加:PATH=$PATH:$HOME/bin:/usr/local/lnmp/mysql/bin
source ~/.bash_profile



初始化和安全初始化mysql

mysqld --user=mysql --initialize(以mysql用户身份初始化)
初始化会生成一个临时密码,用于登录mysql(要记住此密码)
#如:'2019-01-03T09:06:09.448851Z 1 [Note] A temporary password is generated for root@localhost: r#9VqAoA/au:'



为了安全,再将mysql目录的所有者改为root

chown root /usr/local/lnmp/mysql -R
chown mysql /usr/local/lnmp/mysql/data -R  ##数据目录所有者必须是mysql,不然mysql用户不能写


启动mysql 并安全初始化

/etc/init.d/mysqld start
mysql_secure_installation  然后会提示是否启用密码检测插件,直接回车不启用,否则会要求密码有大小写和特殊字符等要求


测试登陆mysql

mysql -uroot -pWestos+001
show databases;



查看mysqld接口

netstat -antlp

  • php的编译安装及设置

准备好源码包并解压

yum -y install bzip2
tar jxf php-5.6.35.tar.bz2



解决编译过程中软件的依赖性(实际操作中,请根据自身情况来安装)

yum install -y libxml2-devel libcurl-devel
yum install -y libjpeg-turbo-devel-1.2.1-1.el6.x86_64 libjpeg-turbo-devel-1.2.90-5.el7.x86_64
yum install -y libpng-devel-1.2.49-1.el6_2.x86_64 libpng-devel-1.5.13-7.el7_2.x86_64
yum install -y freetype freetype-devel
yum install -y net-snmp net-snmp-develcd /lnmp安装包
yum install -y re2c-0.13.5-1.el6.x86_64.rpm libmcrypt-2.5.8-9.el6.x86_64.rpm libmcrypt-devel-2.5.8-9.el6.x86_64.rpm



开始编译并安装

./configure --prefix=/usr/local/lnmp/php --with-config-file-path=/usr/local/lnmp/php/etc --with-openssl --with-snmp --with-gd --with-zlib --with-curl --with-libxml-dir --with-png-dir --with-jpeg-dir --with-freetype-dir --with-gmp --with-gettext --with-pear --enable-mysqlnd --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-inline-optimization --enable-soap --enable-ftp --enable-sockets --enable-mbstring --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mcrypt --with-mhashmake && make install



拷贝更改配置文件

cd /usr/local/lnmp/php/etc
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
查看配置文件中以下几项是否开启:
user = nginx
group = nginx
pid = run/php-fpm.pid




拷贝更改php主配置文件

cd /lnmp安装包/php-5.6.35
cp php.ini-production /usr/local/lnmp/php/etc/php.ini
cd /usr/local/lnmp/php/etc
vim php.ini
修改时区:
date.timezone = Asia/Shanghai



拷贝php启动脚本至/etc/init.d/

cd /lnmp/php-5.6.35/sapi/fpm
cp init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm


启动php

/etc/init.d/php-fpm start


查看网络端口

netstat -antlp

  • LNMP架构部署

确保nginx、mysql、php都是开启状态

nginx
/etc/init.d/mysqld start
/etc/init.d/php-fpm start


查看端口:

netstat -antlp


安装论坛前测试php网页
并修改nginx配置文件

cd /usr/local/lnmp/nginx/conf
vim nginx.conf
x修改如下图
注释掉之前设定的负载均衡集群
并且开启php界面设定、增加index.php文件




检测语语法并重启nginx

nginx -t
nginx -s reload


编写php测试网页

cd /usr/local/lnmp/nginxhtml
vim index.php
编写如下:
<?
phpinfo()
>


打开浏览器测试:

自行准备好论坛的压缩包
安装解压命令并解压文件到指定目录

yum install -y unzip
unzip Discuz_X3.2_SC_UTF8.zip -d /usr/local/lnmp/nginx/html/


切换到解压目录并查看文件
重命名 uoload 为bbs
并给目录增加权限

cd /usr/local/lnmp/nginx/html
ls
mv upload bbs
chmod 777 config/ -R
chmod 777 data/ -R
chmod 777 uc_server/ uc_client/  -R


编辑php主配置文件
并重启php

vim /usr/local/lnmp/php/etc/php.ini
修改以下配置:
pdo_mysql.default_socket= /usr/local/lnmp/mysql/data/mysql.sock
mysql.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
mysqli.default_socket = /usr/local/lnmp/mysql/data/mysql.sock
以上路径为mysql安装的目录,根据自己的路径填写/etc/init.d/php-fpm reload





由于 nginx用户 对于 /usr/local/lnmp/mysql/data 目录没有权限

cd /usr/local/lnmp/mysql
chmod 755 data/


打开浏览器开始安装部署

172.25.11.4/bbs




这里输入mysql密码并设定论坛管理者密码




点击右上角管理中心进入管理

发现没有界面

解决:

cd /usr/local/lnmp/nginx/html/bbs/install
rm -fr index.php


重新刷新管理界面

Linux运维之LNMP架构相关推荐

  1. Linux系统运维之LNMP架构

    目录 一.LNMP架构简介 1.原理 2.FastCGI介绍 3. PHP缓存加速器 二.反向代理&负载均衡 1.介绍 2.功能作用 3.配置文件及各模块功能介绍 (1)Nginx upstr ...

  2. Linux运维-day44-综合架构-playbook剧本的变量、条件语句及循环语句

    环境准备: m01管理服务器(外网:10.0.0.61:内网:172.16.1.61) backup(外网:10.0.0.41:内网:172.16.1.41) nfs01(外网:10.0.0.31:内 ...

  3. Linux运维与架构工程实践

    1 本章概览 介绍Linux系统Linux运维与架构工程实践的方方面面 2 Linux系统基础入门 认识计算机和服务器核心硬件 Linux发展历史.系统组成.应用领域以及发行版 搭建运维环境:VMWa ...

  4. Linux运维企业架构项目实战系列

    Linux运维企业架构项目实战系列 目录 一.全网备份 (一)部署Rsync守护进程 1)服务端(backup) 2)客户端(web01/02/03 nfs01) (二)编写脚本文件 1)客户端脚本编 ...

  5. Linux运维架构师、SRE技术图谱

    Linux运维架构师.SRE技术图谱 Web服务器: apache, tomcat, nginx, lighttpd, varnish 监控: nagios. ganglia. cacti. zabb ...

  6. linux运维、架构之路-jumpserver

    linux运维.架构之路-jumpserver 一.jumpserver介绍           是一款由python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能.基于ssh协议来管理,客户 ...

  7. linux运维架构师职业规划

    1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是"鸟哥的私房菜",讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服 ...

  8. Linux运维高级架构师实战视频教程

    Linux运维高级架构师实战视频教程 运维工程师需要了解系统的服务搭建.shell脚本的编写(便于维护或者日程),mysql操作. 这是重要的,而且是必须的.其次就是涉及Linux系统接入网络的应用. ...

  9. 新开班全栈Linux运维-Linux云计算运维与高级架构班课程 全新自动化运维必学课程

    新开班全栈Linux运维-Linux云计算运维与高级架构班课程 全新自动化运维必学课程 全栈Linux运维的课程意义,在于让同学们从Liunx基础课程开始,一路直通Liunx运维高级架构师的级别.全新 ...

最新文章

  1. 学计算机为什么会突发,为什么电脑会突然自动重启?
  2. 陈希孺院士带来开年第一本数学书,让人看完大呼过瘾的统计学科普读本
  3. ubuntu16.04 配置双网卡机器
  4. win7怎么清理java缓存文件夹_Win7怎么清除浏览器缓存?清除电脑缓存的妙招
  5. VUE -- Mac上解决Chrome浏览器跨域问题
  6. AbsoluteLayout(绝对布局)
  7. bootstrap评分插件 Bootstrap Star Rating Examples
  8. 服务器虚拟化怎么使用,服务器使用中的误区及建议 服务器虚拟化安装步骤
  9. 检查容器内的磁盘占用shell(check_container_disk.sh)
  10. VS2015+Access2016编写数据库程序
  11. Eclipse连接Hadoop集群(详细版)
  12. 用Arduino做一个能发射水弹的遥控小车
  13. C++ 缺省参数 详解
  14. 职教云助手手机版_职教云app下载安装_职教云最新版本下载网址
  15. 【年度总结】2022回首瞻望 | 2023大展宏“兔“
  16. 海洋CMS火车头数据采集教程-自动配置采集发布模块教程
  17. 实证研究的步骤_开题报告的研究方法怎么写(最新整理)
  18. mysql概念模型,什么是数据库概念模型
  19. GIF一下你也可以拍大片 微影戏程序
  20. 最新计算机cpu简介,计算机cpu的类型是什么?计算机CPU分类简介

热门文章

  1. html抢答器代码,单片机八路抢答器代码+Proteus仿真
  2. 大数据中位数怎么运算_大数据查找中位数
  3. mysql 计算中位数_【转】MySQL如何计算中位数
  4. 自动驾驶车会阅读街上人们的肢体语言了
  5. 各个地区的语言代号及value文件夹命名规范
  6. 电影《招邪》举行开机仪式即将进入拍摄
  7. OPEN ALLIANCE TC2和TC9线束以太网测试标准?何种设备可以满足测试?除了矢量网分之外
  8. pc端ui图片尺寸_PC端UI界面设计规范分享 共同来学习_ui设计
  9. 宝马ETK数据采集成功
  10. 搭建Web SpeedTest网速测试工具