linux系统LNMP架构部署

news2024/11/24 8:54:08

文章目录

  • 一、Nginx编译安装
    • 1、关闭防火墙,安全机制
    • 2、安装依赖包
    • 3、创建运行用户与组
    • 4、解压包、编译安装路径
    • 5、编译安装
    • 6、优化路径
    • 7、添加 Nginx 系统服务、赋权
  • 二、安装 MySQL 服务
    • 1、安装环境依赖包
    • 2、创建运行用户与组
    • 3、解压包、编译安装路径
    • 4.编译安装
    • 5、修改mysql 配置文件
    • 6、更改mysql安装目录和配置文件的属主属组
    • 7、设置路径环境变量
    • 8、初始化数据库
    • 9、添加mysqld系统服务
    • 10、修改mysql 的登录密码
    • 11、授权远程登录
  • 三、安装配置 PHP 解析环境
    • 1、安装环境依赖包
    • 2、解压包、编译安装路径
    • 3、编译安装
    • 4、路径优化
    • 5、调整PHP配置文件
    • 6、启动php-fpm
    • 7、配置 Nginx 支持 PHP 解析
    • 8、验证PHP 测试页
    • 9、验证数据库工作是否正常
  • 四、部署 Discuz!社区论坛 Web 应用
    • 1、切换目录解压包
    • 2、调整论坛目录的权限:
    • 3、论坛页面访问
    • 4、输入论坛账号密码
    • 5、访问论坛页面:
    • 6、fpm参数优化
  • 总结


一、Nginx编译安装

1、关闭防火墙,安全机制

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
在这里插入图片描述

2、安装依赖包

yum -y install pcre-devel zlib-devel gcc gcc-c++ make
在这里插入图片描述

3、创建运行用户与组

useradd -M -s /sbin/nologin nginx
在这里插入图片描述

4、解压包、编译安装路径

cd /opt
tar zxvf nginx-1.12.2.tar.gz -C /opt/‘’.6hvcf

cd nginx-1.12.2/
./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/
在这里插入图片描述

7、添加 Nginx 系统服务、赋权

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
在这里插入图片描述在这里插入图片描述
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
在这里插入图片描述
在这里插入图片描述

二、安装 MySQL 服务

1、安装环境依赖包

yum -y install
ncurses
ncurses-devel
bison
cmake
在这里插入图片描述

2、创建运行用户与组

useradd -M -s /sbin/nologin mysql
在这里插入图片描述

3、解压包、编译安装路径

cd /opt
tar zxvf mysql-boost-5.7.20.tar.gz

cd /opt/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_EXTRA_CHARSETS=all
-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
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.编译安装

make && make install
在这里插入图片描述

5、修改mysql 配置文件

vim /etc/my.cnf
[client]
port = 3306
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
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
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
在这里插入图片描述
在这里插入图片描述

6、更改mysql安装目录和配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
在这里插入图片描述

7、设置路径环境变量

echo ‘export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH’ >> /etc/profile
source /etc/profile
在这里插入图片描述

8、初始化数据库

cd /usr/local/mysql/bin/
./mysqld
–initialize-insecure
–user=mysql
–basedir=/usr/local/mysql
–datadir=/usr/local/mysql/data
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

9、添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld

10、修改mysql 的登录密码

mysqladmin -u root -p password “abc123”
在这里插入图片描述

11、授权远程登录

mysql -u root -p

三、安装配置 PHP 解析环境

1、安装环境依赖包

yum -y install gd
libjpeg libjpeg-devel
libpng libpng-devel
freetype freetype-devel
libxml2 libxml2-devel
zlib zlib-devel
curl curl-devel
openssl openssl-devel
在这里插入图片描述

2、解压包、编译安装路径

cd /opt
tar jxvf php-7.1.10.tar.bz2

cd 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
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、编译安装

make && make install
在这里插入图片描述在这里插入图片描述

4、路径优化

ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/
在这里插入图片描述

5、调整PHP配置文件

php有三个配置文件:
php.ini 主配置文件
php-fpm.conf 进程服务配置文件
www.conf 扩展配置文件
1.调整主配置文件:
cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
–1170行–修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
–939行–取消注释,修改
date.timezone = Asia/Shanghai

php -m #验证安装的模块
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

2.调整进程服务配置文件:
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
–17行–去掉";"注释
pid = run/php-fpm.pid
在这里插入图片描述
在这里插入图片描述

3.调整扩展配置文件:
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
在这里插入图片描述

6、启动php-fpm

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000

#PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。

cd /opt/php-7.1.10/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service
在这里插入图片描述
在这里插入图片描述

7、配置 Nginx 支持 PHP 解析

vim /usr/local/nginx/conf/nginx.conf
--65行--取消注释,修改
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;	#将 /scripts 修改为nginx的工作目录
   #fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;  #$document_root 代表当前请求在root指令中指定的值
	include        fastcgi_params;
}

在这里插入图片描述 重启服务systemctl restart nginx.service

8、验证PHP 测试页

在这里插入图片描述
在这里插入图片描述
浏览器访问
http://192.168.40.103/index.php
在这里插入图片描述

9、验证数据库工作是否正常

mysql -u root -p
CREATE DATABASE bbs;
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;

在这里插入图片描述

vim /usr/local/nginx/html/index.php      		#替换原来的测试页内容
<?php
$link=mysqli_connect('192.168.80.10','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

在这里插入图片描述
浏览器访问
http://192.168.80.10/index.php
在这里插入图片描述

四、部署 Discuz!社区论坛 Web 应用

1、切换目录解压包

cd /opt
unzip Discuz_X3.4_SC_UTF8.zip  -d /opt/dis
cd /opt/dis/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs/

在这里插入图片描述在这里插入图片描述在这里插入图片描述

2、调整论坛目录的权限:

chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/

在这里插入图片描述

3、论坛页面访问

http://192.168.40.103/bbs/install/index.php

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、输入论坛账号密码

数据库服务器:localhost     ###本地架设就用localhost,如何不是在在本机上就要填写IP地址和端口号
数据库名字:bbs
数据库用户名:bbsuser
数据库密码:admin123
管理员账号:admin
管理员密码:admin123

在这里插入图片描述
在这里插入图片描述

5、访问论坛页面:

在这里插入图片描述

6、fpm参数优化

vim /usr/local/php/etc/php-fpm.conf 
pid = run/php-fpm.pid
vim /usr/local/php/etc/php-fpm.d/www.conf

--96行--
pm = dynamic				#fpm进程启动方式,动态的

--107行--
pm.max_children=20			#fpm进程启动的最大进程数

--112行--
pm.start_servers = 5		#动态方式下启动时默认开启的进程数,在最小和最大之间

--117行--
pm.min_spare_servers = 2	#动态方式下最小空闲进程数

--122行--
pm.max_spare_servers = 8	#动态方式下最大空闲进程数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`			#重启php-fpm
netstat -anpt | grep 9000
ps -elf | grep php-fpm

在这里插入图片描述


总结

在LNMP平台中部署PHP应用时,基本过程与在LAMP平台中的部署类似。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/685330.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:用Python编程计算BMI,轻松掌握健康

用Python编程计算BMI&#xff0c;轻松掌握健康 作为一个现代人&#xff0c;保持健康的体态是我们每个人都需要关注的问题。那么&#xff0c;如何快速地计算自己的BMI呢&#xff1f;Python编程可以帮助我们轻松地实现这个目标。 什么是BMI&#xff1f; BMI全称为Body Mass In…

【Linux操作系统】互斥的4个概念以及认识信号量

文章目录 进程互斥的4个概念认识信号量认识接口理解IPC 信号量主要用于同步和互斥的&#xff0c;下面先来看看什么是同步和互斥。 进程互斥的4个概念 我们把大家都能看到的资源&#xff0c;称为公共资源。并且要想实现进程间通信&#xff0c;首要条件就是要让互相通信的进程看…

一文了解kubernetes部署:API部署过程

API部署 准备工作 一、镜像制作 请参考&#xff1a;《API镜像制作》 二、为k8s配置docker私服密钥 请参考&#xff1a;《配置docker私服密钥》 部署API 修改yaml文件 vi/opt/kubernetes/api/config-server.yaml vi/opt/kubernetes/api/api.yaml 1、修改api相应image值为您的镜…

【深度学习】日常笔记7

可以通过在⽹络中加⼊⼀个或多个隐藏层来克服线性模型的限制&#xff0c;使其能处理更普遍的函数关系类型。要做到这⼀点&#xff0c;最简单的⽅法是将许多全连接层堆叠在⼀起。每⼀层都输出到上⾯的层&#xff0c;直到⽣成最后的输出。 上面红框的公式其实换个角度是没错的。实…

总结911

目标规划&#xff1a; 月目标&#xff1a;6月&#xff08;线性代数强化9讲&#xff0c;考研核心词过三遍&#xff09; 周目标&#xff1a;线性代数强化5讲&#xff0c;英语背3篇文章并回诵&#xff0c;检测 每日规划 今日已做 1.回诵之前文章 2.每日长难句&#xff0c;句句…

Redis五种数据结构底层编码结构

String String是Redis中最常见的数据存储类型&#xff1a; 其基本编码方式是RAW&#xff0c;基于简单动态字符串&#xff08;SDS&#xff09;实现&#xff0c;存储上限为512mb。如果存储的SDS长度小于44字节&#xff0c;则会采用EMBSTR编码&#xff0c;此时object head与SDS是…

Mysql(Linux数据库或者在Navicate中)

Mysql数据库组成 服务端:主要存储数据,并接收用户发过来的SQL语句,并执行结果返回给客户端 客户端:下发用户要执行的sql语句,并显示服务器返回的执行结果 命令行数据库连接方式 mysql -h 数据库 IP -P 端口号 -u 数据库登录用户名 -p 数据库登录密码 -h不加表示为本机,-P不…

编译原理一:编译器工作流

文章目录 1. 编译器工作流1.1. 解析&#xff08;Parsing&#xff09;1.2. 遍历&#xff08;Traversal&#xff09;1.3 转换(Transformation)1.4 代码生成(Code Generation) 1. 编译器工作流 编译器是将一种语言转化为另一种语言的程序。在编译器工作流中&#xff0c;通常可以分…

git上传云效codeup

为了标识身份&#xff0c;建议先完成 Git 全局设置 git config --global user.name "xxx" git config --global user.email "xxxxxxqq.com" 1.删除本地 .git文件夹 2.云效上 添加库-新建代码库 3.在 git bash 里 按照 建好的代码库 下方的 命令行指引-…

chatgpt赋能python:Python编译成二进制文件:优化代码执行效率

Python编译成二进制文件&#xff1a;优化代码执行效率 介绍 随着Python编程的不断普及&#xff0c;越来越多的开发者选择Python作为开发工具。然而&#xff0c;Python解释器需要读取并解释源代码&#xff0c;这种解释方式在执行效率上存在瓶颈。为了提高执行效率&#xff0c;…

io.netty学习(十三)Netty 解码器

目录 前言 编解码概述 编解码器概述 Netty 内嵌的编码器 解码器 ByteToMessageDecoder 抽象类 ReplayingDecoder 抽象类 MessageToMessageDecoder 抽象类 总结 前言 编码和解码&#xff1a;数据从一种特定协议格式到另一种格式的转换。 处理编码和解码的程序通常被称…

【VulnHub系列】BrokenGallery

因为是从PDF转换过来偶尔可能会出现内容缺少&#xff0c;可以看原版PDF&#xff1a;有道云笔记 实验信息 Broken&#xff1a;192.168.10.111 Kali&#xff1a;192.168.10.106 实验过程 sudo arp-scan --interface eth0 192.168.10.1/24 然后对靶机进行端口探测 nmap -sT -…

定积分的应用—所围图形的面积、绕轴旋转所围成立体的体积、旋转曲面的面积、弧长

本篇本章&#xff0c;将从几个简单的例子带大家分析总结定积分的应用中常用的方法和思想&#xff0c;一起学习进入定积分的世界&#x1f61c;&#x1f61c; 一、求所围图形的面积 1.求由抛物线 y x 2 与 y 2 − x 2 所 围 图 形 的 面 积 yx^2与y2-x^2所围图形的面积 yx2与y2…

Windows下Android studio 搭建 android NDK 搭建 OLLVM 踩坑记录

1. 编译 ollvm-9.0.1 下载源码进行编译 https://github.com/heroims/obfuscator/tree/llvm-9.0.1 编译 这里有坑要注意 不能使用最新的 mingw 8.0.1 编译会报错 报错内容如下: PS D:\OLLVM\obfuscator-llvm-9.0.1\build> cmake -G "MinGW Makefiles" -DCMA…

浏览器 HTTPS 协议的相关知识点有哪些?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言HTTPS协议的概念HT…

腾讯云私有云平台运维面试

文章目录 概述JD 岗位描述一面二面三面HR面 概述 根据会议将面试问题进行总结&#xff0c;很多问题感觉当时没回答好&#xff0c;这是为啥呢&#xff1f;应该还是不熟练吧&#xff0c;或者不善于表达。将次经历分享出来&#xff0c;大家多练练。 JD 岗位描述 私有云平台运维…

io.netty学习(十四)Netty 编码器

目录 前言 MessageToByteEncoder 抽象类 MessageToMessageEncoder 抽象类 总结 前言 上一篇我们讲解了解码器的相关知识&#xff0c;其中也提到了编码器的定义。 编码器就是用来把出站&#xff08;针对本身来讲&#xff0c;发送都是出站&#xff0c;接收都是入站&#xf…

TIA博途_字符转换为字符串以及截取字符串有效字符的具体方法示例

TIA博途_字符转换为字符串以及截取字符串有效字符的具体方法示例 情景再现: 在做某些通信相关的项目时,可能会遇到通信接收到的字符串是以字节的形式传送过来的字符,此时就需要我们对接收到的这些字符进行处理,从而获取我们实际需要的字符或字符串。 如下图所示,打开博途…

一文了解什么是Dubbo

Dubbo学习 Dubbo应用架构的演变RPC&#xff08;远程过程调用&#xff09;RPC介绍RPC组件RPC调用 Apache Dubbo概述Dubbo简介Dubbo的架构 服务注册中心ZookeeperZookeeper介绍运行zookeeper Dubbo的快速开发Dubbo管理控制台治理中心 Dubbo Dubbo是一个分布式服务框架&#xff0…