centos7下源码编译安装Lnmp环境

centos7下源码编译安装Lnmp环境

流星aday
2021-05-16 / 0 评论 / 492 阅读 / 正在检测是否收录...

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的方式安装 cmakebisonboostncurses

以下 安 装中 涉 及的 几点 需 要提 前 说明 的问 题 :

  1. 所有 下 载的 文件 将 保存 在 /root 目 录下
  2. mysql 将以 mysql 用户 运 行, 而 且将 加入 service 开 机 自动 运 行
  3. mysql 将被 安 装在 /usr/local/mysql/ 目录 下
  4. mysql 默认 安 装使 用 utf8 字符集
  5. mysql 的数 据 和日 志文 件 保存 在 /usr/local/mysql/data/ 目录 下
  6. mysql 的配 置 文件 保存 于 /usr/local/mysql/etc/my.cnf
  7. tmp
  8. ==注意 从 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 = nobodygroup = nobody,将 nobody 改成 www
  • 找到 listen.owner=nobodylisten.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

内容如下(特别是 chkconfigdescription那两行代码,一定要写,否则无法加入服务):

#!/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文件夹下,重载配置。

到此环境配置完成!

7

评论

博主关闭了所有页面的评论