企业平台架构--源码编译安装部署LNMP 平台

前言

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

一、LNMP 平台的部署

1.1、LNMP 平台概述

LNMP平台就是 Linux、 Ngnix、 My SQL、PHP的组合架构,需要 Linux服务器、MysαL数据库、PHP解析环境

Ngnix特长:高并发,低资源,处理静态网络访问请求非常强

Apache:静态处理和动态处理都可以做,更适合做动态处理

Nginx将动态资源请求交给PHP当中的fpm处理动态请求

PHP主配置文件:php.ini

Nginx将动态资源分配给FPM或Apache

1.2、Nginx 概述

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
Nginx相较于Apache\lighttpd具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名。在Linux操作系统下,nginx使用epoll事件模型,得益此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作统上采用类似于Epoll的高效事件模型kqueue.
—款高性能、轻量级Web服务软件
稳定性高
系统资源消耗低
对HTTP并发连接的处理能力高
单台物理服务器可支持30 000~50 000个并发请求

1.3、MySQL 安装配置

为了与 Nginx、PHP环境保持一致,此处选择采用源代码编译的方式安装 My SQL组件

MySQL部署的方法:
编译安装 MySQL
优化调整初始化数据库
启动mysq服务并设置root数据库账号的密码

1.4、PHP 解析环境的安装

配置网页动静分离,解析PHP,有两种方法可以选择
使用PHP的FPM模块
将访问PHP页面的Web请求转交给 Apache服务器去处理
较新版本的PHP已经自带FPM模块,用来对PHP解析实例进行管理、优化解析效率
FastCG将 Http Server和动态脚本语言分离开
Nginx专门处理静态请求,转发动态请求
PHP FPM专门解析PHP动态请求
单服务器的LNMP架构通常使用FPM的方式来解析PHP

1.5、配置Ngnx 支持PHP 环境

调用本机的php-fpm进程配置方法

建立FPM配置文件php- fpm. conf,修改配置选项,如:PD文件运行用户、服务进程数等

启动php-pm进程

在Ngnx的配置文件中的 serve}配置段配置将PHP的网页请求转给FPM模块处理

在Ngnx的配置文件中的 Server{}配置段配置将PHP的网页请求转给FPM模块处理

二、Nginx 的编译安装

2.1、编译安装步骤

1.挂载宿主机的共享文件夹,读取下载好的源码文件

2.解压跨平台组件包和源码包
将跨平台组件包移动到源码包目录下

3.安装编译器和其他工具

yum -y install gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl \
zlib-devel \
pcre

4.configure配置

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

5.make编译和make install

6,路径优化

ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin	'//nginx命令执行路径优化'
useradd -M -s /sbin/nologin nginx

2.2、使用systemctl控制

vim /lib/systemd/system/nginx.service		'//添加使用systemctl工具进行管理'
[Unit]
Description=nginx	'//描述'
After=network.target	'//描述服务类别'

[Service]
Type=forking	'//后台运行形势'
PIDFile =/usr/local/nginx/logs/nginx.pid	'//PID文件位置'
ExecStart=/usr/local/nginx/sbin/nginx		'//启动服务'
ExecReload=/usr/bin/kill -S HUP $MAINPID	'//根据PID重载配置'
ExecStop=/usr/bin/kill -S QUIT $MAINPID		'//根据PID终止进程'
PrivateTmp=true

[Install]
WantedBy=multi-user.target


chmod 754 /lib/systemd/system/nginx.service

2.3、开启nginx,关闭防火墙

[root@localhost system]# chmod +754 nginx.service 
[root@localhost system]# systemctl start nginx.service 
[root@localhost system]# netstat -ntap |grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5396/nginx: master  
tcp        0      0 192.168.197.192:56680   192.168.100.3:445       ESTABLISHED -                   
[root@localhost system]# systemctl stop firewalld.service 
[root@localhost system]# setenforce 0

三、MySQL 的编译安装

3.1、环境准备

[root@localhost ~]# yum install ncurses-devel autoconf cmake -y
[root@localhost ~]# useradd -s /sbin/nologin  mysql
上传mysql-boost-5.7.20.tar.gz到opt目录下

[root@localhost ~]# cd /opt
[root@localhost ~]# tar xf mysql-boost-5.7.20.tar.gz
[root@localhost ~]# cd /opt/mysql-5.7.20/

3.2、cmake 配置

[root@localhost mysql-5.7.20]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-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

配置选项含义
1、DCMAKE_INSTALL_PREFIX:指定将 mysql 数据库程序安装到某目录下,
如目录/usr/local/ mysql。
2、DSYSCONFDIR:指定初始化参数文件目录
3、DDEFAULT_CHARSET:指定默认使用的字符集编码,如 utf8。
4、DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_general_ci
是适用于 UTF-8 字符集的通用规则。
5、DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码。

3.3、编译安装

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

3.4、安装后的其他调整

3.4.1、数据库目录进行权限调整

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

3.4.2、建立调整配置文件

[root@localhost ~]# 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

3.4.3、设置环境变量

[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

3.4.4、初始化数据库

[root@localhost ~]# cd /usr/local/mysql/
[root@localhost mysql]# bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

3.4.5、编辑启动脚本

[root@localhost mysql]# cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
[root@localhost mysql]# systemctl enable mysqld
[root@localhost mysql]# systemctl start mysqld

3.4.6、设置用户密码

[root@localhost mysql]# mysqladmin -u root -p password "123456"	'//给root用户设置密码'
'//mysqladmin -u用户名 -p旧密码 password 新密码'
Enter password: 	'//原本密码为空,直接回车即可'
Warning: Using a password on the command line interface can be insecure.
[root@localhost mysql]# mysql -u root -p
Enter password: 	'//输入刚设置的密码123456'
...省略内容
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

mysql> exit
Bye

四、PHP 的编译安装

4.1、安装PHP 的环境包

[root@localhost ~]# yum -y install \
libjpeg \
libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 \
libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

4.2、编译安装

##将安装包传入/opt目录下##

[root@localhost opt]# cd /opt
[root@localhost opt]# tar xf php-7.1.10.tar.bz2
[root@localhost opt]# cd php-7.1.10/
[root@localhost 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 \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
[root@localhost php-7.1.10/]# make -j3
[root@localhost php-7.1.10/]# make install

4.3、配置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
##找到以下两行的位置,修改这两行##
mysqli.default_socket = /usr/local/mysql/mysql.sock
date.timezone = Asia/Shanghai	##找到后,前方的;注释要去掉##
[root@localhost php-7.1.10]# /usr/local/php/bin/php -m
##验证安装的模块##

4.4、配置及优化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 /usr/local/php/etc/php-fpm.d/
[root@localhost php-fpm.d]# cp www.conf.default www.conf
[root@localhost php-fpm.d]# cd /usr/local/php/etc/
[root@localhost etc]# vi php-fpm.conf
pid = run/php-fpm.pid   ##将;去掉##
;user = nginx
;group = nginx

4.5、创建软链接

[root@localhost etc]# /usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
[root@localhost etc]# netstat -natp |grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      99975/php-fpm: mast 
[root@localhost etc]# ln -s /usr/local/php/bin/* /usr/local/bin/
[root@localhost etc]# ps aux | grep -c "php-fpm”

4.6、让nginx 支持PHP 功能

[root@localhost etc]# vi /usr/local/nginx/conf/nginx.conf
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;
        }   ##将;去掉,用/usr/local/nginx/html替换原来的路径##
[root@localhost etc]# vi /usr/local/nginx/html/index.php
 <?php
phpinfo();
?>  
[root@localhost etc]# killall -s HUP nginx   ##重启nginx##
##在windows的浏览器中输入http://20.0.0.25/index.php,也可以输入http://www.51xit.top/index.php测试##

在这里插入图片描述

4.7、测试数据库

[root@localhost ~]# mysql -u root -p  ##输入密码123456##
CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsadm'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsadm'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
##最后exit退出##
[root@localhost ~]# vi /usr/local/nginx/html/index.php  
##将之前的内容删除##
<?php
$link=mysqli_connect('20.0.0.25','bbsadm','admin123');
if($link) echo "<h1>Success!</h1>";
else echo "Fail!";
?>
[root@localhost ~]# killall -s HUP nginx   ##重启##

在这里插入图片描述
**

这边LNMP平台就已经搭建好了

**

猜你喜欢

转载自blog.csdn.net/weixin_48191211/article/details/108385418