主机名 | 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 ~]#
① 安装PHP程序;
我们使用源码包进行安装,首先下载源码包到本地,源码包下载界面,click here!这里我们直接右击选择对应PHP版本(7.4.8
),选择"复制链接地址"。
复制链接之后,使用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
① 安装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进行测试。
① 安装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架构部署就全部完成啦,如果有问题可以私信或写在评论区哦,我会及时更新。