LNMP架构,像初恋女友一般给你的温柔。

Posted 28线不知名云架构师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LNMP架构,像初恋女友一般给你的温柔。相关的知识,希望对你有一定的参考价值。

一、LNMP简介

 1.1 lnmp概念

LNMP是一个基于centos/debian编写的Linux、nginxmysqlphp,可以在独立主机上轻松安装的LNMP生产环境。

1.2 nginx概念

Nginx作为Web服务器:相比Apache, Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率。Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持Rails 和PHP,也可以支持作为HTTP代理服务器对外进行服务。Nginx 采用C语言进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好的多。Nginx 作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last/fm 描述了成功并且美妙的使用经验。Nginx安装非常的简单,配置文件非常简洁(还能够支持perl语法)。Nginx支持平滑加载新的配置,还能够在不间断服务的情况下进行软件版本的升级

1.3 mysql概念

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,被Oracle 公司收购。MySQL是最流行的关系型数据库管理系统之一,在WEB 应用方面, MySQL是较好的RDBMS (Relational Database Management System, 关系数据库管理系统)应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的SQL 语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
 

1.4 PHP概念

PHP-FPM (FastCGI Process Manager: FastCGI进程管理器)是一一个PHPFastCGI 管理器, .
由于Nginx服务器不适合处理动态页面,需要由Nginx 把动态请求交给php-fpm处理。
FastCGI: FastCGI是一个可伸缩地、高速地在HTTP服务器和动态脚本语言间通信的接口(FastCGI接 口在Linux下是socket (可以是文件socket,也可以是ipsocket) ),主要优点是把动态语言和HTTP服务器分离开来。多数流行的HTTP服务器都支持FastCGI,包括Apache、Nginx和lightpd。
FastCGI:作用:把动态语言和HTTP分离开来,动静分离

二、LNMP架构部署

2.1 安装nginx

安装前准备

systemctl stop firewalld
systemctl disable firewalld 
setenforce 0

创建运行用户、组

useradd -M -s /sbin/nologin nginx

解压缩安装包,下载需要组件,编译安装

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

cd /opt
tar zxvf nginx-1.15.9.tar.gz 

cd nginx-1.15.9/
./configure \\
--prefix=/usr/local/nginx \\				
--user=nginx \\							
--group=nginx \\							
--with-http_stub_status_module			

make  && make install

路径优化(便于管理员控制)

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

检查配置文件

nginx -t #检查配置文件语法
nginx -t -c + 绝对路径 

 启动、停止nginx

①查看端口验证

nginx
netstat - antp | grep nginx

②lynx验证

yum install -y lynx
lynx + ip地址 

添加nginx系统服务

vim /usr/lib/systemd/system/nginx.service
##要配置参数##
	[Unit]	
	Description=nginx										##描述
	After=network.target  									##描述服务类别
	[Service]
	Type=forking										    ##后台运行类型
	PIDFile =/usr/local/nginx/logs/nginx.pid		        #PID文件位置
	ExecStart=/usr/local/nginx/sbin/nginx			        #启动服务
	ExecrReload=/bin/kill -s HUP $MAINPID	                #根据PID重载配置
	ExecrStop=/bin/kill -s QUIT $MAINPID		            #根据PID终止进程
	PrivateTmp=true											##开启
	[Install]
	WantedBy=multi-user.target						        #启动级别
=====》wq                                                   ##保存退出

chmod 754 /lib/systemd/system/nginx.service                 ##设置754权限是一种安全优化

ststemctl enable nginx.service                              ##设置nginx开机自启 

检查systemctl命令能否正常使用

Ps:启动报错是因为端口被占用,killall -3 nginx 杀掉进程就好

2.2 安装MySQL服务(5.7.20版本)

安装Mysql环境依赖包

yum -y install ncurses ncurses-devel bison cmake
---------------------------------------------------------
ncurses\\			#字符终端工具包
bison \\		        #函数库

创建运行客户

useradd -s /sbin/nologin mysql

编译安装

上传mysql -boost-5.7.20. tar .gz到opt目录下
cd /opt
tar xzvf mysql-boost-5. 7.20. tar.gz 
cd /opt/mysq1-5.7.20/
cmake \\
	-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \\			##指定安装路径(目录)
	-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \\			##指定通信文件,连接数据库,通讯协议的载体
	-DSYSCONFDIR=/etc \\		##配置文件目录指向/etc
	-DSYSTEMD_PID_DIR=/usr/local/mysql \\		##指定pid目录文件
	-DDEFAULT_CHARSET=utf8  \\		##字符集设定
	-DDEFAULT_COLLATION=utf8_general_ci \\		##字符集设定
	-DWITH_INNOBASE_STORAGE_ENGINE=1 \\ 		##以下三行均为存储引擎ENGINE
	-DWITH_ARCHIVE_STORAGE_ENGINE=1 \\
	-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \\
	-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \\
	-DMYSQL_DATADIR=/usr/local/mysql/data \\		##指定数据存放位置
	-DWITH_BOOST=boost \\		##底层C++运营库,5.7的版本独立的表空间结构
	-DWITH_SYSTEMD=1		##守护进程id跑在后台的一个支撑服务正常运行的一个特殊进程
make && make install

数据库目录进行权限调整

chown -R mysql:mysql /usr/local/mysql/

修改MySQL配置文件(删除,1000dd)

vi /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
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
chown mysql:mysql /etc/my.cnf

修改环境变量

echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile

初始化数据库

cd /usr/local/mysql/usr/lib/systemd/system
cp mysqld.service /usr/lib/systemd/system   
systemctl enable mysqld	

 

 

 

 

 

 

 

 

 

以上是关于LNMP架构,像初恋女友一般给你的温柔。的主要内容,如果未能解决你的问题,请参考以下文章

程序生活程序员之宠爱女友

sPring啥意思

当代码成功运行的那一刻,我看见到的是编译器对我的温柔!

漫步最优化三十四——高斯-牛顿法

绯闻女友想看很久的Dubbo面试题

绯闻女友想看很久的Dubbo面试题