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
fimv ${logs_access} ${dir}/access_${d}.log
mv ${logs_access} ${dir}/access_${d}.logkill -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.cnf
或my.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服务器的启动和停止脚本添加到系统的服务管理中,使其可以通过系统服务命令(如service
或systemctl
)来启动和停止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-zipmake -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
第四步 创建论坛
成功