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

第四步 创建论坛

成功

相关推荐
活宝小娜3 天前
mysql详细安装教程
数据库·mysql·adb
zhangjin11203 天前
adb install和 pm install 的区别是什么?
adb
炼川淬海DB4 天前
数据库开发规范
android·adb·数据库开发
何极光4 天前
MySQL 8.0详细安装教程(附下载地址)
数据库·mysql·adb
sevencheng7984 天前
【ADB】adb命令行常用按键模拟代码
linux·adb·模拟按键,返回键,音量键
QX_hao5 天前
mysqldump-vs-xtrabackup
adb·mysql备份
云计算磊哥@6 天前
运维开发宝典028-MySQL04数据库热备
数据库·adb·运维开发
charlee446 天前
Unity在安卓端如何调试输出信息
android·unity·adb·游戏引擎·真机调试
ai_coder_ai7 天前
如何使用adb实现自动化脚本?
运维·adb·自动化
pigs20187 天前
mysql8.0 access denied for user root localhost account is locked
数据库·adb