MySql安装
建议安装内存大于或等于2G,不够2G的请配置虚拟内存
,否则安装MySQL可能会出错
==推荐先更新一下yum源yum -y update
==
1、底层软件库
运行以下命令确保底层软件库都已安装
yum -y install gcc gcc-c++ autoconf automake zlib libxml2 libxml2-devel ncurses-devel libmcrypt libtool cmake bison make pcre pcre-devel libevent openssl openssl-devel gd-devel bzip2 bzip2-devel libcurl curl-devel python python-devel mysql-devel expat-devel
2、源码编译安装MySQL
MySQL从5.5
版本开始,通过./configure
进行编译配置方式已经被取消,取而代之的是cmake
工具。需要下载cmake
编译器、Boost
库、ncurses
库和GNU
分析器生成器bison
这4种工具,可以用yum install
的方式安装 cmake
、bison
、boost
、ncurses
以下 安 装中 涉 及的 几点 需 要提 前 说明 的问 题 :
- 所有 下 载的 文件 将 保存 在 /root 目 录下
- mysql 将以 mysql 用户 运 行, 而 且将 加入 service 开 机 自动 运 行
- mysql 将被 安 装在 /usr/local/mysql/ 目录 下
- mysql 默认 安 装使 用 utf8 字符集
- mysql 的数 据 和日 志文 件 保存 在 /usr/local/mysql/data/ 目录 下
- mysql 的配 置 文件 保存 于 /usr/local/mysql/etc/my.cnf
- tmp
- ==注意 从 MySQL 5.7.5 开 始Boost库是 必需 的==
2.1、安装依赖库
安装 cmake 和 bison 与 ncurses
yum -y install -y cmake bison ncurses
2.2、建立mysql安装目录和用户
在/usr/local/mysql建立【data】、【tmp】、【log】、【etc】4个目录
mkdir -pv /usr/local/mysql
cd /usr/local/mysql
mkdir data tmp log etc
groupadd mysql
useradd -g mysql -s /usr/sbin/nologin mysql
2.2、下载mysql
cd ~
wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.26.tar.gz
==下载的安装包中已经携带Boost库,不需要额外下载==
2.3、解压并进入目录
tar -zxvf mysql-boost-5.7.26.tar.gz
cd mysql-5.7.26
2.4、进行软件配置和环境检测
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/usr/local/mysql/etc \
-DMYSQL_USER=mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \
-DWITH_DEBUG=0 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DMYSQL_USER=mysql \
-DWITH_BOOST=boost/boost_1_59_0 \
-DDOWNLOAD_BOOST=1
以上内容的解释:
cmake
#设置安装目录
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
#设置sock目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock
#设置数据库存放目录
-DMYSQL_DATADIR=/usr/local/mysql/data
#设置配置文件my.cnf存放目录
-DSYSCONFDIR=/usr/local/mysql/etc
#设置mysql的默认使用用户
-DMYSQL_USER=mysql
#设置默认字符集
-DDEFAULT_CHARSET=utf8
#默认校对规则
-DDEFAULT_COLLATION=utf8_general_ci
#指明安装额外字符集的支持
-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk
#去除debug模式
-DWITH_DEBUG=0
#以下几条开启常用的引擎
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
#Enable LOAD DATA LOCAL INFILE(default:disabled)
-DENABLED_LOCAL_INFILE=1
#使用一些字符函数的汇编版本
-DWITH_EMBEDDED_SERVER=1
-DMYSQL_USER=mysql
#5.7编译需要boost类库,指明boost的路径
-DWITH_BOOST=/usr/local/boost
#在以上路径如果没查找到boost会自动下载并解压(如事先已下载好,此句可略)
-DDOWNLOAD_BOOST=1
2.5、编译软件并且进行安装
make && make install
==注意:==
接下来可能需要耗较长时间,请耐心等待。另外如果过程中出现报错而中断,需要删除CMakeCache.txt文件后再执行 2.2.4步骤内容(没出错请不要执行以下两行指令):
make clean
rm -rf CMakeCache.txt
或者unlink CMakeCache.txt
3、配置
3.1、使用递归,把mysql目录所有者设置为mysql这个用户
chown -R mysql:mysql /usr/local/mysql
3.2、如果 /etc/my.cnf 存在的话,请删除
unlink /etc/my.cnf
3.3、进入MySQL安装目录下
cd /usr/local/mysql
重建 my.cnf文件
3.4、根据实际情况优化mysql配置
vim etc/my.cnf
大概内容如下:
# my.cnf 的示例配置
[client]
default-character-set = utf8
port = 3306
socket = /usr/local/mysql/tmp/mysql.sock
[mysqld]
datadir =/usr/local/mysql/data
port = 3306
socket = /usr/local/mysql/tmp/mysql.sock
user = mysql
symbolic-links = 0
pid-file = /usr/local/mysql/tmp/mysql.pid
explicit_defaults_for_timestamp = true
sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER
slow_query_log = on
slow_query_log_file = /usr/local/mysql/log/slow.log
long_query_time = 2
log_error = /usr/local/mysql/log/mysql.err
3.5、初始化和启动
3.5.1、初始化mysql的基本表
MySQL5.7及以上的做法:
--initialize会生成一个随机密码(~/.mysql_secret),而--initialize-insecure不会生成密码
/usr/local/mysql/bin/mysqld \
--initialize-insecure \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data \
--user=mysql
==注意:==
如果初始化出错,则需要用
rm -rf /usr/local/mysql/data/*
将 mysql 的 data 目录下的文件和目录都删除,然后再重新运行以上语句
3.5.2、启动mysql
/usr/local/mysql/bin/mysqld_safe > /dev/null 2>&1 &
3.5.3、修改mysql的root密码
/usr/local/mysql/bin/mysqladmin -u root password 123456
(其中 123456为您希望使用的密码)
3.5.4、增加到开机启动
先将mysqld设置为服务
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
然后将mysqld服务加入启动项:
chkconfig --add mysqld
设置为自启动:
chkconfig --level 345 mysqld on
--level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
3.5.5、将mysql命令加入到环境变量里
PATH=$PATH:/usr/local/mysql/bin
为了重启后仍能有效:
echo 'PATH=$PATH:/usr/local/mysql/bin' >> /root/.bashrc
3.5.6、如果需要对外开放 3306 端口
iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
如果 mysqld 服务正常运行中,但是执行 mysql 指令时报出以下错误:
`mysql -uroot -p123456`
"ERROR 2002 (HY000): Can't connect to local MySql server through socket '/var/lib/mysql/mysql.sock' (2)"
解决方案就是创建一个软链接
mkdir -pv /var/lib/mysql
ln -s /usr/local/mysql/tmp/mysql.sock /var/lib/mysql/mysql.sock
到此MySQL安装完毕!
PHP安装
安装PHP之前,首先要检查安装libxml2、libxml2-devvel、gd-devel
rpm -qa | grep libxml2*
rpm -qa | grep gd-devel*
如果没有安装,可以使用yum -y install
命令进行安装。
php可以到 http://php.net/downloads.php 或者 http://mirrors.sohu.com/php/ 去下 载,此处 以php-7.3.6.tar.gz为例
以下安装中涉及的几点需要提前说明的问题:
- 所有下载的文件将保存在 /root 目录下
- php 将以 FastCGI模式运行,监听 9000 端口(默认端口)
- php 将被安装在 /usr/local/php 目录下
- php 的配置文件保存于 /usr/local/php/etc/php.ini
- php 的扩展库文件,如果可以的话,尽量放在 /usr/local/php/lib/php/extensions/ 目录
1、安装PHP
1.1、下载
cd ~
wget https://www.php.net/distributions/php-7.3.6.tar.gz
1.2、解压并进入目录
tar -zxvf php-7.3.6.tar.gz
cd php-7.3.6
1.3、进行软件的配置和环境检测
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--enable-opcache \
--with-zlib-dir \
--with-bz2 \
--with-libxml-dir=/usr \
--with-gd \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--enable-mbstring \
--with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-pdo-mysql=/usr/local/mysql \
--with-iconv \
--disable-ipv6 \
--enable-static \
--enable-inline-optimization \
--enable-sockets \
--enable-soap \
--with-openssl \
--with-curl
以上内容的解释如下:
./configure # 检测环境,并生成makefile文件
--prefix=/usr/local/php # 指定php安装目录
--with-config-file-path=/usr/local/php/etc # 设置php.ini配置文件存放的路径
--enable-fpm # 开启PHP-FPM,用于控制PHP-CGI的FastCGI进程
--enable-opcache # PHP新增opcache功能
--with-zlib-dir # 加载zlib库
--with-bz2 # 加载bz2的压缩库
--with-libxml-dir=/usr # 加载xml库
--with-gd # 加载gd库
--with-freetype-dir # 加载字体库
--with-jpeg-dir # 加载jpeg库
--with-png-dir # 加载png库
--enable-mbstring # 开启mbstring加密库
--with-mysql=/usr/local/mysql # 加载mysql,并指定mysql基本路径
--with-mysqli=/usr/local/mysql/bin/mysql_config # 加载mysqli库,并指定mysql配置工具
--with-pdo-mysql=/usr/local/mysql # 加载pdo对mysql的支持
--with-iconv # 开启转换字符集
--disable-ipv6 # 关闭ipv6支持
--enable-static # 以静态方式编辑php库
--enable-inline-optimization # 开启优化线程
--enable-sockets # 开启sockets支持
--enable-soap #开启soap对web service的支持
--with-openssl # 开启ssl支持
--with-curl # 模拟浏览器
1.4、编译软件并且进行安装
make && make install
2.2、配置
2.2.1、复制配置文件
cp php.ini-production /usr/local/php/etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
赋予其可执行权限
chmod +x /etc/rc.d/init.d/php-fpm
拷贝产生 php-fpm 的配置文件
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
2.2.2、配置php.ini
vim php.ini
时区:
date.timezone = Asia/Shanghai
根据自己的需求调整以下选项的值
错误显示:
display_errors = On
显示错误类型:
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
脚本最大执行时长:
max_execution_time = 60
最大接收数据时长:
max_input_time = 60
PHP使用最大内存限制:
memory_limit = 128M
post上传文件大小最大限制:
post_max_size = 128M
单文件最大限制:
upload_max_filesize = 50M
2.2.3、配置 php-fpm.conf
cd /usr/local/php/etc/php-fpm.d
cp www.conf.default www.conf
vim www.conf
- 找到
user = nobody
和group = nobody
,将nobody
改成www
- 找到
listen.owner=nobody
和listen.group= nobody
,将nobody
改成www
==注意:==
==必须得先新增
www
用户,否则无法启动php==groupadd www useradd -g www -s /usr/sbin/nologin www
2.2.4、将 php-fpm 加入服务并自动启动
service php-fpm start
chkconfig --add php-fpm
chkconfig --level 345 php-fpm on
到此PHP安装完毕!
Tengine安装
我这里使用的是Tengine
1、安装环境
1.1、安装必要的编译环境
yum -y install gcc gcc-c++ bzip2 perl curl curl-devel expat-devel gettext-devel openssl-devel libxml2 libxml2-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel autoconf
yum -y install epel-release //扩展包更新包
yum -y install libmcrypt libmcrypt-devel mcrypt mhash
1.2、安装需要的组件
PCRE
PCRE是一个Perl库,包括 perl 兼容的正则表达式库。nginx rewrite依赖于PCRE库,所以在安装Tengine前一定要先安装PCRE
cd ~
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz
tar zxvf pcre-8.42.tar.gz
cd pcre-8.42
./configure --prefix=/usr/local/pcre
make && make install
Zlib
Zlib是提供资料压缩之用的函式库,当Tengine想启用GZIP压缩的时候就需要使用到Zlib
cd ~
wget http://zlib.net/zlib-1.2.11.tar.gz
tar zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make && make install
jemalloc
jemalloc是一个更好的内存管理工具,使用jemalloc可以更好的优化Tengine的内存管理。
cd ~
wget https://github.com/jemalloc/jemalloc/releases/download/5.2.0/jemalloc-5.2.0.tar.bz2
tar -jxvf jemalloc-5.2.0.tar.bz2
cd jemalloc-5.2.0
./configure --prefix=/usr/local/jemalloc
make && make install
OpenSSL
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用,安装OpenSSL主要是为了让tengine支持Https的访问请求。
cd ~
wget https://www.openssl.org/source/openssl-1.1.1c.tar.gz
tar zxvf openssl-1.1.1c.tar.gz
cd openssl-1.1.1c
./config --prefix=/usr/local/openssl
make && make install
2、安装
2.1、创建用户和组
# 如果已经添加了 www 用户组与用户名的时候,就不需要操作以下指令
groupadd www
useradd -g www -s /usr/sbin/nologin www
2.2、创建目录
mkdir -pv /usr/local/tengine/tmp
3、下载Tengine
cd ~
wget https://tengine.taobao.org/download/tengine-2.3.1.tar.gz
3.1、解压并进入目录
tar -zxvf tengine-2.3.1.tar.gz
cd tengine-2.3.1
3.2、进行软件配置和环境检测
./configure \
--prefix=/usr/local/tengine \
--user=www \
--group=www \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_image_filter_module \
--http-client-body-temp-path=/usr/local/tengine/tmp/client_body_temp \
--http-fastcgi-temp-path=/usr/local/tengine/tmp/fastcgi_temp \
--http-proxy-temp-path=/usr/local/tengine/tmp/proxy_temp \
--http-uwsgi-temp-path=/usr/local/tengine/tmp/uwsgi_temp \
--http-scgi-temp-path=/usr/local/tengine/tmp/scgi_temp \
--with-pcre=/root/pcre-8.42 \
--with-openssl=/root/openssl-1.1.1c \
--with-jemalloc=/root/jemalloc-5.2.0 \
--with-zlib=/root/zlib-1.2.11
参数说明:
./configure \
--prefix=/usr/local/tengine #指定安装目录
--user=www #设置用户名
--group=www #设置用户组
--with-http_ssl_module \
--with-http_v2_module \
--with-http_flv_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_realip_module \
--with-http_image_filter_module # 这个还需要安装gd库 yum -y install gd-devel
--http-client-body-temp-path=/usr/local/tengine/tmp/client_body_temp \
--http-fastcgi-temp-path=/usr/local/tengine/tmp/fastcgi_temp \
--http-proxy-temp-path=/usr/local/tengine/tmp/proxy_temp \
--http-uwsgi-temp-path=/usr/local/tengine/tmp/uwsgi_temp \
--http-scgi-temp-path=/usr/local/tengine/tmp/scgi_temp \
--with-pcre=/root/pcre-8.42 #指定PCRE的解压目录
--with-openssl=/root/openssl-1.1.1c #指定openssl的解压目录
--with-jemalloc=/root/jemalloc-5.2.0 #指定jemalloc的解压目录
--with-zlib=/root/zlib-1.2.11 #指定zlib的解压目录
3.3、编译安装
make && make install
3.4、创建nginx文件并加入到启动服务中
4、配置
4.1、简单配置
4.1.1、创建网站根目录
根目录为:/mydata/wwwroot/www
mkdir -p /mydata/wwwroot
chown -R www:www /mydata/wwwroot
4.1.2、安装为服务
vim /etc/rc.d/init.d/nginx
内容如下(特别是 chkconfig
和 description
那两行代码,一定要写,否则无法加入服务):
#!/bin/sh
# chkconfig: - 85 15
# description: nginx is a World Wide Web server. It is used to serve
start() {
echo 'Starting Nginx ...'
/usr/local/tengine/sbin/nginx > /dev/null 2>&1 &
}
stop() {
echo 'Stoping Nginx ...'
/usr/local/tengine/sbin/nginx -s stop > /dev/null 2>&1 &
}
reload() {
echo 'Reloading Nginx ...'
/usr/local/tengine/sbin/nginx -s reload
}
if [ $# -ne 1 ]
then
echo 'please input one params like start|restart|stop|reload'
exit 1
fi
case "$1" in
'start')
start
;;
'stop')
stop
;;
'restart')
stop
sleep 2
start
;;
'reload')
reload
;;
'*')
echo 'please input one params like start|restart|stop|reload'
;;
esac
4.1.3、配置权限并增加到开机启动
chmod a+x /etc/rc.d/init.d/nginx
chkconfig --add nginx
chkconfig --level 345 nginx on
以后就可以直接用以下指令来完成日常管理了:
service nginx start #启动
service nginx reload #重载
service nginx stop # 停止
4.1.4、开始配置
vim /usr/local/tengine/conf/nginx.conf
#示例配置,请根据需求更改
#设置执行用户
user www www;
#自动设置Nginx启动的worker数量,默认是CPU的processor数(不是core数)
worker_processes auto;
#自动将Nginx的worker进程绑定到CPU的processor上,1.9.10以上版本才支持auto,Tegine默认支持
worker_cpu_affinity auto;
#设置所有worker的open files数,如不设置默认为系统ulimit -n的大小
worker_rlimit_nofile 10000;
#开启pcre jit功能,编译pcre的时候需要开启jit功能
#pcre_jit on;
#开启错误日志
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#error_log "pipe:rollback logs/error_log interval=1d baknum=7 maxsize=2G";
pid logs/nginx.pid;
events {
#每个worker的最大连接数,这个数字不光光只Nginx与Client间的连接,还包括Nginx与后端Server的连接数,配置的时候须注意worker_rlimit_nofile>worker_connections*workers
worker_connections 1024;
#优化同一时刻只有一个请求而避免多个睡眠进程被唤醒的设置,on为防止被同时唤醒,默认为off,因此nginx刚安装完以后要进行适当的优化,在访问量较大的网站上建议关闭accept_mutex机制
accept_mutex off;
}
# load modules compiled as Dynamic Shared Object (DSO)
#
#dso {
#load ngx_http_fastcgi_module.so;
#load ngx_http_rewrite_module.so;
#}
http {
#隐藏版本号
#syntax : server_tokens on | off;此行为参数语法,on为开启状态,off为关闭状态
#default : server_tokens on 此行不配置该参数,软件默认的结果
#context : http,server,location 此行为server_tokens参数可以放置的位置
server_tokens off;
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
#access_log "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G" main;
#开启高效文件传输模式
#yntax: sendfile on|off #参数语法
#default: sendfile off #参数默认大小
#context: http,server,location,if in location #可放置的标签段
#参数作用:激活或者禁用sendfile()功能。sendfile()是作用于两个文件描述符之间的数据拷贝函数,这个拷贝操作是在内核之中,被称为“零拷贝”,sendfile()和read和write函数要高效很多,因为read和wrtie函数要把数据拷贝到应用层再进行操作。相关控制参数还有sendfile_max_chunk。
sendfile on;
#Syntax: tcp_nopush on | off; #参数语法
#Default: tcp_nopush off; #参数默认大小
#Context: http, server, location #可以放置标签段
#参数作用:激活或禁用Linux上的TCP_CORK socker选项,此选项仅仅开启sendfile时才生效,激活这个tcp_nopush参数可以运行把http response header和文件的开始放在一个文件里发布,减少网络报文段的数量。
tcp_nopush on;
#用于激活tcp_nodelay功能,提高I/O性能
#Syntax: tcp_nodelay on | off;
#Default: tcp_nodelay on;
#Context: http, server, location
#参数作用:默认情况下数据发送时,内核并不会马上发送,可能会等待更多的字节组成一个数据包,这样可以提高I/O性能,但是,在每次只发送很少字节的业务场景,使用tcp_nodelay功能,等待时间会比较长。
#参数生产条件:激活或禁用tcp_nodelay选项,当一个连接进入到keep-alive状态时生效
tcp_nodelay on;
#一个请求完成之后还要保持连接多久
keepalive_timeout 65;
#设置客户端请求头读取超时时间,如果超过这个时间(以秒为单位),客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误
client_header_timeout 15;
#设置客户端请求主体读取超时时间,如果超过这个时间(以秒为单位),客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误
client_body_timeout 15;
#设置上传文件大小
#Syntax: client_max_body_size size;
#Default: client_max_body_size 1m; #默认值是1m
#Context: http, server, location
client_max_body_size 128m;
#开启gzip压缩
gzip on;
#压缩版本(默认1.1 前端为squid2.5时使用1.0)用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP压缩,使用默认即可。
gzip_http_version 1.1;
#用来指定压缩的类型,需要压缩的常见静态资源
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png video/mp4 video/mp3;
#由于nginx的压缩发生在浏览器端而微软的ie6很坑爹,会导致压缩后图片看不见所以该选项是禁止ie6发生压缩
gzip_disable "MSIE [1-6]\.";
#如果文件大于1k就启动压缩
gzip_min_length 1k;
#以16k为单位,按照原始数据的大小以4倍的方式申请内存空间,一般此项不要修改
gzip_buffers 4 16k;
#压缩比率,用来指定GZIP压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理最慢,也消耗CPU资源
gzip_comp_level 5;
#vary hear支持,该选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用缓存经过Nginx压缩的数据。
gzip_vary on;
#加载vhost.conf文件
include vhost.conf;
}
vim /usr/local/tengine/conf/vhost.conf
server {
listen 80;
server_name localhost;
#强制转跳到HTTPS
rewrite ^(.*)$ https://$host$1 permanent;
}
server{
#监听443端口并开启ssl与HTTP2.0
listen 443 ssl http2;
server_name localhost;
root /mydata/wwwroot/www/;
#默认站点主页
index index.htm index.html index.php;
#设置HSTS,它是一个Web安全策略机制
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";
#X-Frame-Options 头部添加到HTTPS站点,确保不会嵌入到frame 或 iframe,避免点击劫持,以确保网站的内容不会嵌入到其他网站。
add_header X-Frame-Options "DENY";
#禁止.ht文件访问。
location ~ /\.ht {
deny all;
}
#设置伪静态重写URL地址
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
location ~ .*\.php(\/.*)*$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
#设置需要缓存的文件类型
location ~ .*\.(jpg|jpeg|gif|png|ico|mp3|mp4|swf|flv){
#缓存时间为10天
expires 10;
}
location ~ .*\.(js|css|html|htm)?$ {
#缓存时间为1天
expires 1;
}
#设置.crt证书目录
ssl_certificate /usr/local/tengine/conf/ssl/1_www.awzh.club_bundle.crt;
#设置.key证书目录
ssl_certificate_key /usr/local/tengine/conf/ssl/2_www.awzh.club.key;
#客户端可以重用会话参数的时间
ssl_session_timeout 5m;
#协议配置
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1;
#加密套件配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
}
由于设置的是HTTPS,所有需要证书
mkdir -p /usr/local/tengine/conf/ssl/www
最后上传证书至/usr/local/nginx/conf/ssl文件夹下,重载配置。
到此环境配置完成!
评论