LNMP架构部署实践(很详细哦!)

目录

    • 一、环境规划
    • 二、节点处理
    • 三、环境搭建部署
      • 1、PHP程序部署
      • 2、Nginx服务器部署
      • 3、MySQL节点部署

一、环境规划

主机名 IP 角色 系统版本 软件版本
php-server 192.168.140.141 PHP脚本程序解析 CentOS7u6 php-7.2.0
nginx-server 192.168.140.142 Web服务器 CentOS7u6 nginx-1.18.0
mysql-server 192.168.140.143 数据库节点 CentOS7u6 mysql-8.0.21

二、节点处理

  这里以nginx服务器为例进行演示,三台主机都需要进行处理哦!

  ① 处理防火墙

[root@nginx-server ~]# systemctl stop firewalld    #关闭firewalld防火墙
[root@nginx-server ~]# systemctl disable firewalld    #开机不自启
[root@nginx-server ~]# setenforce 0    #关闭selinux防火墙(临时)
[root@nginx-server ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config    #关闭selinux防火墙(永久,通常需要重启生效,这里配合使用,相当于开机不自启)

  ② 同步时间

  NTP服务器列表,click here!

[root@nginx-server ~]# yum install ntp ntpdate -y    #安装NTP
[root@nginx-server ~]# ntpdate cn.ntp.org.cn    #进行时间同步
[root@nginx-server ~]# hwclock --systohc    #将系统时钟同步到硬件时钟

  ③ 修改主机名

  之前我已经修改过了主机名,这里建议大家修改一下,以便区分主机,防止混淆。

[root@localhost ~]# hostnamectl set-hostname nginx-server
[root@localhost ~]# su -l
上一次登录:一 8月  3 20:57:15 CST 2020pts/0 上
[root@nginx-server ~]#

三、环境搭建部署

1、PHP程序部署

① 安装PHP程序;

  我们使用源码包进行安装,首先下载源码包到本地,源码包下载界面,click here!这里我们直接右击选择对应PHP版本(7.4.8),选择"复制链接地址"。

LNMP架构部署实践(很详细哦!)_第1张图片

  复制链接之后,使用wget工具下载到我们的服务器上,再进行后续安装过程。

#安装依赖
[root@php-server ~]# yum install -y gcc zlib zlib-devel openssl openssl-deveperl perl-devel make gd-devel libjpeg libjpeg-devel libpng libpng-devel libiconv-devel freetype freetype-devel libmcrypt libmcrypt-devel libxml2 libxml2-devel libxslt-devel mhash
#安装libmcrypt
[root@php-server ~]# cd /usr/local/src/    #进入/usr/local/src/目录下
[root@php-server src]# wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
[root@php-server ~]# tar -zxvf libmcrypt-2.5.7.tar.gz
[root@php-server ~]# cd libmcrypt-2.5.7
[root@php-server libmcrypt-2.5.7]# ./configure
[root@php-server libmcrypt-2.5.7]# echo $?
0
[root@php-server libmcrypt-2.5.7]# make && make install
[root@php-server libmcrypt-2.5.7]# echo $?
0
#安装curl依赖
[root@php-server src]# wget https://curl.haxx.se/download/curl-7.56.0.tar.gz
[root@php-server src]# tar -zxvf curl-7.56.0.tar.gz
[root@php-server src]# cd curl-7.56.0
[root@php-server curl-7.56.0]# ./configure --prefix=/usr/local/curl --with-ssl --with-zlib
[root@php-server curl-7.56.0]# echo $?
0
[root@php-server curl-7.56.0]# make && make install
[root@php-server curl-7.56.0]# echo $?
0
#安装oniguruma和oniguruma-devel依赖
[root@php-server src]# wget http://down.24kplus.com/linux/oniguruma/oniguruma-6.7.0-1.el7.x86_64.rpm
[root@php-server src]# wget http://down.24kplus.com/linux/oniguruma/oniguruma-devel-6.7.0-1.el7.x86_64.rpm
[root@php-server src]# yum localinstall oniguruma-6.7.0-1.el7.x86_64.rpm oniguruma-devel-6.7.0-1.el7.x86_64.rpm -y


#下载源码包到/usr/local/src/并解压
[root@php-server src]# wget https://www.php.net/distributions/php-7.4.8.tar.gz
[root@nginx-server ~]# tar xf php-7.2.0.tar.gz -C /usr/local/src/

#编译安装
[root@php-server src]# cd /usr/local/src/php-7.2.0    #进入解压后的目录下
[root@php-server php-7.2.0]# ./configure --prefix=/usr/local/php-7.2.0 \
--with-config-file-path=/usr/local/php-7.2.0/etc \
--with-curl=/usr/local/curl \
--disable-ipv6 \
--with-pdo-mysql \
--with-openssl \
--with-openssl-dir \
--with-pcre-regex \
--with-kerberos \
--with-libdir=lib \
--with-libxml-dir \
--with-mysqli=shared,mysqlnd \
--with-pdo-mysql=shared,mysqlnd \
--with-pdo-sqlite \
--with-gd \
--with-iconv \
--with-zlib \
--with-xmlrpc \
--with-xsl \
--with-pear \
--with-gettext \
--with-png-dir \
--with-jpeg-dir \
--with-freetype-dir \
--with-mhash \
--with-zlib-dir \
--enable-json \
--enable-mbstring \
--enable-pdo \
--enable-mysqlnd \
--enable-zip \
--enable-inline-optimization \
--enable-shared \
--enable-libxml \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-ftp \
--enable-pcntl \
--enable-sockets \
--enable-soap \
--enable-session \
--enable-opcache \
--enable-fpm \
--enable-maintainer-zts \
--enable-fileinfo \
--enable-gd-jis-conv    #配置
[root@php-server php-7.2.0]# echo $?    #查看操作是否执行成功
0
[root@php-server php-7.2.0]# make && make install    #编译并安装
[root@php-server php-7.2.0]# echo $?    #查看操作是否执行成功
0
#创建nginx用户
[root@php-server php-7.2.0]# groupadd nginx    #创建nginx用户组
[root@php-server php-7.2.0]# useradd -g nginx nginx    #创建nginx用户
#配置启动项
#php.ini-production是系统推荐的php.ini设置参数,拷贝到php的解压文件和/etc目录下
[root@php-server php-7.2.0]# cp php.ini-production /usr/local/php-7.2.0/etc/php.ini    
[root@php-server php-7.2.0]# cp php.ini-production /etc/php.ini
#将init.d.php-fpm服务脚本拷贝到/etc/init.d/目录下
[root@php-server php-7.2.0]# cd /usr/local/src/php-7.2.0/sapi/fpm/
[root@php-server fpm]# cp -p init.d.php-fpm /etc/init.d/php-fpm
[root@php-server fpm]# cd /etc/init.d/
[root@php-server init.d]# chmod +x php-fpm     #添加执行权限
[root@php-server init.d]# chkconfig php-fpm on    #设置开机自启
#配置环境变量,将php的sbin目录加入PATH环境变量
[root@php-server init.d]# vim /etc/profile.d/php.sh
export PATH=$PATH:/usr/local/php-7.2.0/bin:/usr/local/php-7.2.0/sbin
[root@php-server init.d]# source /etc/profile.d/php.sh    #加载环境变量文件立即生效

#查看版本
[root@php-server init.d]# php -v
PHP 7.2.0 (cli) (built: Aug  5 2020 14:16:07) ( ZTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies

② 配置php-fpm模块并启动php解析程序;

[root@php-server init.d]# cd /usr/local/php-7.2.0/etc/
[root@php-server etc]# cp php-fpm.conf.default php-fpm.conf
[root@php-server etc]# cd php-fpm.d/
[root@php-server php-fpm.d]# cp www.conf.default www.conf
[root@php-server php-fpm.d]# vim /usr/local/php-7.2.0/etc/php-fpm.conf
#文件末尾添加以下内容
pm.max_children = 50
pm.start_servers = 5  
pm.min_spare_servers = 2  
pm.max_spare_servers = 8
[root@php-server php-fpm.d]# vim www.conf
#文件末尾添加以下内容
[www]
user = nginx
group = nginx
listen = 0.0.0.0:9000
listen.owner = nginx
listen.group = nginx
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

#启动php
[root@php-server php-fpm.d]# systemctl start php-fpm    #启动php服务
[root@php-server php-fpm.d]# ps -ef | grep php    #查看进程
root      40100      1  0 16:32 ?        00:00:00 php-fpm: master process (/usr/local/php-7.2.0/etc/php-fpm.conf)
nginx     33666  33665  0 22:43 ?        00:00:00 php-fpm: pool www
nginx     33667  33665  0 22:43 ?        00:00:00 php-fpm: pool www
nginx     33668  33665  0 22:43 ?        00:00:00 php-fpm: pool www
nginx     33669  33665  0 22:43 ?        00:00:00 php-fpm: pool www
nginx     33670  33665  0 22:43 ?        00:00:00 php-fpm: pool www
root      33672  33616  0 22:44 pts/1    00:00:00 grep --color=auto php

2、Nginx服务器部署

① 安装Nginx;

  具体安装过程请 click here !

② 配置nginx;

  接下来需要对nginx进行配置。

[root@nginx-server ~]# vim /etc/nginx/nginx.conf
user nginx nginx;
pid /var/run/nginx.pid;
error_log  logs/error.log;
events {
    worker_connections 1024;
    }

http {
    include mime.types;
    default_type application/octet-stream;
    log_format main '$remote_addr - $remote_user [$time_local] "$request"';


server {
    listen 80;    #需要监听的端口
    server_name 192.168.140.142;   #Nginx服务器的IP

    charset koi8-r;
    access_log logs/host.access.log main;


    location / {
        root  /www;    #页面存放路径
        index index.html index.htm;
               }

    location ~ \.php$ {
                root /www;
                fastcgi_pass 192.168.140.141:9000;    #PHP服务器的IP
                fastcgi_index index.php;    #与访问文件名相同
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
                }
    }
}

[root@nginx-server ~]# systemctl restart nginx    #重启Nginx


  附:在php-server上编辑网页进行测试。

[root@php-server ~]# mkdir /www
[root@php-server ~]# chown -R nginx:nginx /www
[root@php-server ~]# cd /www/
[root@php-server www]# vim index.php
<?php
phpinfo();
?>

  浏览器访问nginx服务器IP进行测试。

LNMP架构部署实践(很详细哦!)_第2张图片

3、MySQL节点部署

① 安装MySQL;

  同样!具体过程请 click here !!

② 配置MySQL;

  创建测试账户和测试数据库。

mysql> create user "superadmin"@"%" identified with mysql_native_password by "Centos@123";
mysql> create database memcacher;

  安装php-mysql连接模块。(php-server上进行配置)

[root@php-server mysqli]# yum install m4 autoconf -y    #安装依赖
[root@php-server www]# cd /usr/local/src/php-7.2.0/ext/mysqli/
[root@php-server mysqli]# /usr/local/php-7.2.0/bin/phpize    #使用phpize对PHP进行添加扩展
Configuring for:
PHP Api Version:         20170718
Zend Module Api No:      20170718
Zend Extension Api No:   320170718
[root@php-server mysqli]# ./configure \
--with-php-config=/usr/local/php-7.2.0/bin/php-config \
--enable-embedded-mysqli=shared \
--enable-shared
[root@php-server mysqli]# echo $?    #查看操作是否执行成功
0
[root@php-server mysqli]# make && make install
[root@php-server mysqli]# echo $?    #查看操作是否执行成功
0
[root@php-server mysqli]# cd /usr/local/php-7.2.0/lib/php/extensions/no-debug-zts-20170718/    #进入PHP的扩展目录
[root@php-server no-debug-zts-20170718]# ls
mysqli.a  mysqli.so  opcache.a  opcache.so  pdo_mysql.a  pdo_mysql.so
[root@php-server no-debug-zts-20170718]# cd /usr/local/src/php-7.2.0/ext/pdo_mysql/
[root@php-server pdo_mysql]# /usr/local/php-7.2.0/bin/phpize
[root@php-server pdo_mysql]# ./configure \
--with-php-config=/usr/local/php-7.2.0/bin/php-config \
--with-pdo-mysql=mysqlnd
[root@php-server pdo_mysql]# echo $?    #查看操作是否执行成功
0
[root@php-server pdo_mysql]# make && make install
[root@php-server pdo_mysql]# echo $?    #查看操作是否执行成功
0

  添加php-mysql连接模块。(php-server上进行配置)

[root@php-server pdo_mysql]# cd /usr/local/src/php-7.2.0
[root@php-server php-7.2.0]# cp php.ini-production /usr/local/php-7.2.0/etc/php.ini
cp:是否覆盖"/usr/local/php-7.2.0/etc/php.ini"? y
[root@php-server php-7.2.0]# cd /usr/local/php-7.2.0/etc/
[root@php-server etc]# vim php.ini    #将连接模块加入到PHP中
extension_dir = "/usr/local/php-7.2.0/lib/php/extensions/no-debug-zts-20170718/"
extension = mysqli.so
extension = pdo_mysql.so
[root@php-server etc]# systemctl restart php-fpm    #重启PHP服务


  在php-server上编辑网页进行测试。

[root@php-server /]# vim /www/index1.php
<?php
$con = new mysqli('192.168.140.143','superadmin','Centos@123','memcacher');
if(!$con)
 echo "faling...";
else
 echo "success connect mysql\n";
?>

  浏览器访问nginx服务器IP进行测试。

LNMP架构部署实践(很详细哦!)_第3张图片

到这里LNMP架构部署就全部完成啦,如果有问题可以私信或写在评论区哦,我会及时更新。

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