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

第四步 创建论坛

成功

相关推荐
ego.iblacat4 小时前
MySQL 主从复制与读写分离
android·mysql·adb
炸炸鱼.4 小时前
MySQL 主从复制与读写分离
adb
-ONLY-¥6 小时前
MySQL主从复制与读写分离实战
adb
独隅6 小时前
MacOS 系统下 ADB (Android Debug Bridge) 全面安装与配置指南
android·macos·adb
刘晨鑫16 小时前
MySQL主从复制与读写分离
数据库·mysql·adb
炸炸鱼.1 天前
MySQL 全量、增量备份与恢复(极简易懂版)
android·adb
独隅1 天前
Linux 系统下 ADB 环境 的详细安装步骤和基础设置指南
linux·运维·adb
2301_805348971 天前
MySQL源码编译部署主从及MHA高可用集群实战
adb
Carino_U1 天前
全面理解mysql架构
mysql·adb·架构