当前位置: 首页 > article >正文

lnmp+discuz论坛

nginx的优化

1、隐藏版本号

方法1:http{

server_tokens off

}

方法2: 仅限于编译安装

vim /srv/code/nginx.h (修改源码文件)

重新编译./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

server_tokens off

2、nginx日志分割(nginx本身没有设计日志分割的工具,运维人员自己进行处理)

使用shell脚本实现日志分割

#! /bin/bash
d=$(date +%Y-%m-%d)
#直接获取当前的日期

dir="/usr/local/nginx/logs"
#获取日志目录所在的位置

logs_access='/usr/local/nginx/logs/access.log'
logs_error='/usr/local/nginx/logs/error.log'
#定义需要分割的日志文件

pid file='/usr/local/nginx/run/nginx.pid'
#定义pid文件的位置

if [ ! -d "$dir" ]
then 
mkdir -p $dir
fi

mv ${logs_access} ${dir}/access_${d}.log
mv ${logs_access} ${dir}/access_${d}.log

kill -USR1 $(cat ${pid_file})
#-USR1,通过发送USR1这个信号给nginx的主进程,让nginx重新生成access.log和error.log

#日志清理,清理30天以前的日志
find $dir -mtime +30 -exec rm -rf {} \;

lnmp+discuz论坛

lnmp整个论坛架构的主体

l linux作为操作系统

n nginx作为前端页面

m mysql 数据库 账号密码等等都是保存在这个数据库里面

p php .....nginx擅长处理的是静态页面,页面登陆账户,需要请求数据库

实验过程

编译安装 php中间件 mysql数据库 和Discuz论坛

第一步,编译安装mysql数据库

apt -y install libaio1 libncurses5

useradd -s /sbin/nologin mysql 创建mysql程序用户

chown mysql.mysql -R /usr/local/mysql

vim /etc/my.cnf

这段代码是一个MySQL配置文件的片段,通常命名为my.cnfmy.ini,用于配置MySQL服务器和客户端的参数。以下是对各个配置项的解释:

[client] 部分

  • port = 3306: 指定MySQL客户端连接的端口号为3306。
  • socket=/usr/local/mysql/mysql.sock: 指定MySQL客户端使用的Unix套接字文件路径。(在MySQL的上下文中,socket文件用于MySQL服务器和客户端之间的本地通信。当客户端连接到服务器时,它们可以通过这个socket文件交换数据,而无需通过网络协议进行通信。这可以提高性能,因为Unix域套接字通常比网络套接字更快。)

[mysqld] 部分

  • user = mysql: 指定MySQL服务器进程运行的用户为mysql
  • basedir=/usr/local/mysql: 指定MySQL安装目录的路径。
  • datadir=/usr/local/mysql/data: 指定MySQL数据存储目录的路径。
  • port = 3306: 指定MySQL服务器监听的端口号为3306。
  • character-set-server=utf8: 设置服务器的默认字符集为UTF-8。
  • pid-file = /usr/local/mysql/mysqld.pid: 指定MySQL服务器进程ID文件的路径。
  • socket=/usr/local/mysql/mysql.sock: 指定MySQL服务器使用的Unix套接字文件路径。
  • bind-address = 0.0.0.0: 指定MySQL服务器监听所有IP地址(允许远程连接)。
  • skip-name-resolve: 禁用DNS解析,使用IP地址进行主机名解析。
  • max_connections=2048: 设置MySQL服务器允许的最大连接数为2048。
  • default-storage-engine=INNODB: 设置默认的存储引擎为InnoDB。
  • max_allowed_packet=16M: 设置MySQL服务器允许的最大数据包大小为16MB。
  • server-id = 1: 设置MySQL服务器的ID,通常用于主从复制配置。
  • sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION: 设置SQL模式,定义MySQL服务器如何处理SQL语句。具体模式解释如下:
    • STRICT_TRANS_TABLES: 在事务表中启用严格模式。
    • NO_ZERO_IN_DATE: 禁止在日期中使用零值(如'0000-00-00')。
    • NO_ZERO_DATE: 禁止使用零日期。
    • ERROR_FOR_DIVISION_BY_ZERO: 在除以零时抛出错误。
    • NO_ENGINE_SUBSTITUTION: 禁止在创建表时使用备用存储引擎。

这些配置项用于控制MySQL服务器的行为和性能,确保其能够按照预期运行并提供所需的功能。

chown mysql.mysql -R /etc/my.cnf

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile

source /etc/profile

support-files文件夹包含了一些辅助文件和脚本,这些文件和脚本可以帮助用户管理和配置MySQL服务器

mysql.server脚本被复制到了/etc/init.d/mysqld,这通常是为了将MySQL服务器的启动和停止脚本添加到系统的服务管理中,使其可以通过系统服务命令(如servicesystemctl)来启动和停止MySQL服务器

cp mysql.server /etc/init.d/mysqld

chmod +x /etc/init.d/mysqld

systemctl daemon-reload

systemctl restart mysqld

mysqladmin -u root -p password “123456”(这条命令使用mysqladmin工具为MySQL的root用户设置密码为“123456”)

mysql -u root -p123456 (这条命令使用新设置的密码连接到MySQL服务器)

create user 'root'@'%' identified by '123456'(这条命令创建了一个新的MySQL用户root,允许从任何主机%连接,并设置密码为‘123456’)

grant all privilenges on *.* to 'root'@'%';(这条SQL命令授予新创建的用户root所有权限,允许其对所有数据库和表进行操作)

flush privileges(这条命令刷新MySQL的权限系统,使得权限更改立即生效)

alter user 'root'@'%' identified with mysql_native_password by '123456';(插件进行身份验证,这是更高版本的身份验证插件)

tips:源码包和安装包

安装包是编译好的二进制文件,源码包是需要编译安装后才能运行

安装php中间件

apt-get install -y libgd-dev libjpeg8-dev libpng-dev libfreetype6-dev libxml2-dev zlib1g-dev libcurl4-openssl-dev libssl-dev libonig-dev libsqlite3-dev(安装依赖环境)

groupadd nobody (创建一个nobody组)

./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-pdo-mysql \
--with-openssl \
--with-sqlite-devel \
--with-oniguruma-devel \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

make -j 4 && make install (编译安装)

ln -s /usr/local/php/bin/* /usr/local/bin/  (创建软链接) 

ln -s /usr/local/php/sbin/* /usr/local/sbin/ (创建软链接)

php的三个配置文件

这三个文件都是与PHP相关的配置文件,它们各自有不同的作用和配置内容。

php.ini

  • 作用php.ini是PHP的全局配置文件,它包含了PHP运行时的各种设置,如错误报告级别、内存限制、文件上传大小限制等。
  • 位置:通常位于PHP的安装目录下,或者在系统的PATH环境变量中。
  • 配置项示例
    error_reporting = E_ALL & ~E_NOTICE
    memory_limit = 128M
    upload_max_filesize = 2M

php-fpm.conf

  • 作用php-fpm.conf是PHP-FPM(PHP FastCGI Process Manager)的主配置文件,它包含了PHP-FPM的全局设置,如进程管理器的配置、进程数、日志文件位置等。
  • 位置:通常位于PHP-FPM的安装目录下的conf文件夹中。
  • 配置项示例
    pid = /run/php-fpm/php-fpm.pid
    error_log = /var/log/php-fpm/error.log
    pm = dynamic
    pm.max_children = 5
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 3

http://www.conf

  • 作用www.conf是PHP-FPM的池配置文件,它定义了一个或多个PHP-FPM进程池,每个进程池可以有不同的配置,如监听地址、用户和组、进程数等。
  • 位置:通常位于PHP-FPM的安装目录下的conf文件夹中。
  • 配置项示例
listen = 127.0.0.1:9000
user = www-data
group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

cp /opt/php/php.ini-development /usr/local/php/lib/php.ini

cd /usr/local/php/lib

vim php.ini(修改全局配置文件)

修改时区

设置mysql的接口文件

vim php-fpm.conf 修改主配置文件

cd /usr/local/php/etc/php-fqm.d

cp www.conf.default www.conf

/usr/local/php/sbin/php-fpm(是一个fastcgi的管理工具,nginx的动态请求是由php-fpm来处理) -c /usr/local/php/lib/php.ini(启动php-fpm并指定php.ini作为php的配置文件)

netstat -antp | grep 9000(查看是否启动)

修改 /usr/local/php/etc/php-fpm.conf


systemctl restart php-fpm

第三步,设置nginx

cp /usr/local/nginx/conf/nginx.conf xx.bak设置备份

修改配置文件

mysql -u root -p123456

第四步 创建论坛

成功

 


http://www.kler.cn/a/429098.html

相关文章:

  • 头歌答案--爬虫实战
  • HBASE学习(一)
  • vscode 设置
  • 蓝桥杯刷题第二天——背包问题
  • PHP xml 常用函数整理
  • Vue数据响应式,reaction,ref的使用
  • RK3588的mipicsi与Fpga通信
  • 2024-12-05OpenCV高级-立体视觉
  • Thinkphp+UniApp开发的多场馆场地预定小程序源码
  • 3D 生成重建024-LGM第一个开源的3D生成大模型!
  • Windows版Nexus因磁盘空间占满导致orientdb数据损坏修复
  • defer那些事儿
  • python 清华pip镜像源报HTTP error 403
  • JavaSE——泛型编程
  • 运输层6——TCP流量控制
  • LDR6500:音频双C支持,数字与模拟的完美结合
  • Mac通过Windows App远程访问windows电脑报错0x104的解决办法
  • iPhone怎么一键删除照片:快速清理存储空间
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.18——内存函数
  • Python的3D可视化库vedo 1-3 (visual模块)网格对象的线和面、图片的属性
  • 【Python】批量下载抖音视频
  • 通过ThinkPad小红点键盘左右滑动页面
  • OpenCV 图像变换与处理实战
  • 2.Flink的项目初始化和Hello-world
  • 「Mac玩转仓颉内测版47」小学奥数篇10 - 数列求和
  • 电脑无法识别usb设备怎么办?电脑无法识别usb解决方法