【云计算的1024种玩法】手把手教你如何编译一个高性能 OpenResty

简介: 本教程将介绍如何一步一步手动编译 OpenResty,OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,拥有非常好的拓展性让服务器发挥更好性能。教程中将全部依赖 Linux 发行版组建中的依赖,而免除编译带来的后期维护成本。

介绍

本教程将介绍如何一步一步手动编译 OpenResty,OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,拥有非常好的拓展性让服务器发挥更好性能。教程中将全部依赖 Linux 发行版组建中的依赖,而免除编译带来的后期维护成本。

OpenResty 的额外拓展:

  1. OpenSSL 1.0.2,提供 ALPN 支持,支持 HTTP/2
  2. Nginx-CT,透明证书提高 HTTPS 网站的安全性和浏览器支持
  3. ngx_PageSpeed,Google 家的网站性能优化工具
  4. Brotli,实现比 Gzip 更高的压缩率
  5. Jemalloc,优化内存管理

准备

云翼计划

学生用户可以在阿里云官网上进行学生认证后购买一定配置的ECS,仅需9.9元每月,学生用户无需担心花费过多用在服务器的问题。

学生用户在经过学生认证过后就可以在相关网址进行购买,网址为:https://promotion.aliyun.com/ntms/campus2017.html
买好了服务器就可以去刚刚注册好的账号管理里的管理控制台去查看服务器以及它的一些配置。

远程控制

【云计算的1024种玩法】使用 DMS 只要一个浏览器轻松搞定运维任务
【云计算的1024种玩法】ECS和轻量应用服务器的远程控制入门

设置安全组(重要)

如果不设置好安全组,究竟是无法访问还是编译失败会分不清的。

需要开放 : 80 和 443 端口

[【云计算的1024种玩法】用好阿里云的安全组
](https://yq.aliyun.com/articles/228290)

教程

本教程以,Ubuntu 16.04 LTS 64位版 为例。

设定版本变量

如果软件版本更新后,为了方便起见,后续修改版本号只需修改下面的变量即可。 在 SSH终端 中输入:

# Version
# OpenSSLVersion='openssl-1.0.2n'; //Ubuntu 16.04 系统默认为 1.0.2
NginxCTVersion='1.3.2';
PageSpeedVersion='1.12.34.3';
SystemBit='X64';
OpenRestyVersion='openresty-1.13.6.1';

上述软件版本更新查看: OpenSSLNginx-CTPageSpeedOpenResty

安装依赖

更新系统软件源缓存顺便升级组件:

apt update
apt upgrade -y

安装依赖组件:

apt install build-essential libreadline-dev libncurses5-dev libpcre3 libpcre3-dev libssl-dev zlib1g-dev unzip git perl make libjemalloc1 libjemalloc-dev

下载源码

这里将 OpenResty 所需的源代码均放置在 /root/src 目录下,方便管理。

cd /root
mkdir src
cd src

下载 OpenResty 和其拓展的源代码:

## Ubuntu 16.04 默认已经提供 1.0.2
##wget https://www.openssl.org/source/$OpenSSLVersion.tar.gz
##tar xzf $OpenSSLVersion.tar.gz

wget https://github.com/grahamedgecombe/nginx-ct/archive/v$NginxCTVersion.tar.gz
tar xzf v$NginxCTVersion.tar.gz

git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init
cd ../

wget https://github.com/apache/incubator-pagespeed-ngx/archive/v$PageSpeedVersion-stable.zip
unzip v$PageSpeedVersion-stable.zip
cd incubator-pagespeed-ngx-$PageSpeedVersion-stable/
wget https://dl.google.com/dl/page-speed/psol/1.12.34.2-$SystemBit.tar.gz
tar -xzvf 1.12.34.2-$SystemBit.tar.gz
cd ../

wget -c https://openresty.org/download/$OpenRestyVersion.tar.gz
tar zxf $OpenRestyVersion.tar.gz

编译 OpenResty

cd $OpenRestyVersion
./configure --prefix=/usr/local/openresty \
--user=www-data --group=www-data \
--add-module=../ngx_brotli \
--add-module=../nginx-ct-$NginxCTVersion \
--add-module=../incubator-pagespeed-ngx-$PageSpeedVersion-stable \
--with-http_v2_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-ld-opt='-ljemalloc'

make && make install

如果是 Ubuntu 16.04 以下系统,请添加:

--with-openssl=../$OpenSSLVersion \

设置变量

[ -z "`grep ^'export PATH=' /etc/profile`" ] && echo "export PATH=/usr/local/openresty/nginx/sbin:\$PATH" >> /etc/profile
[ -n "`grep ^'export PATH=' /etc/profile`" -a -z "`grep /usr/local/openresty/ /etc/profile`" ] && sed -i "s@^export PATH=\(.*\)@export PATH=/usr/local/openresty/nginx/sbin:\1@" /etc/profile
. /etc/profile

后面就可以用,nginx -t 检测配置是否正确,nginx -s reload 重载 Nginx 了。

创建相关目录

mkdir /data/wwwlogs/ -p
mkdir /data/wwwroot/default/ -p
cp /usr/local/openresty/nginx/html/index.html /data/wwwroot/default/

设置服务和开机启动

创建 /etc/systemd/system/openresty.service 文件,内容:

cd /etc/systemd/system/
wget https://gist.githubusercontent.com/ivmm/dbf03e6c7970488652878bb8ddc3a775/raw/48436d911d08e57774c759bdb50548dec31dc86f/openresty.service

编辑 /usr/local/openresty/nginx/conf/nginx.conf 文件为:

cd /usr/local/openresty/nginx/conf/
rm nginx.conf -rf
wget https://gist.githubusercontent.com/ivmm/ab81dee184b64036bd4b8d5abe676264/raw/1cbfbc387aa956f6d9afe39d60e2b8c988a10688/nginx.conf

重新加载 systemd 服务,以便它可以找到我们的文件:

systemctl daemon-reload

通过 systemd 重启 OpenResty:

systemctl restart openresty

设置开机启动:

systemctl enable openresty

打开你的服务器 IP,就能看到安装好的 OpenResty 提示页了 https://pics.mf8.biz/mf8/awxi3.pngimage

编译升级的教程:

【云计算的1024种玩法】手把手教你如何编译升级 OpenResty

目录
相关文章
|
弹性计算 KVM 虚拟化
【云计算的1024种玩法】本地虚拟化镜像半小时快速上云实践
阿里云各项产品中 ECS 即云服务器是非常重要的一款 IaaS 产品,其实阿里云ECS产品也是借助了 KVM(早期XEN) 的虚拟化能力。。随着个人电脑性能的提升,越来越多的朋友应该都有体验过 VirtualBox、VMware、Parallels Desktop 这样的虚拟化软件,这些虚拟化软件可...
2208 0
|
Shell 区块链 开发工具
【云计算的1024种玩法】1小时使用阿里云区块链服务创建一个区块链小游戏
区块链绝对是17 18年的热词,也是国家各种文件所重点支持的新型技术,几乎大家都会提区块链,企业也都很愿意基于区块链来解决的信任场景,但是苦于构建底层架构的复杂以及相关成本没有办法实施。而区块链服务就是为此而生的。
2903 0
|
Serverless 网络安全 数据库
【云计算的1024种玩法】一小时用阿里云函数计算部署一个 ServerLess 化的按量版 WordPress
在像阿里云ECS这种 IaaS 类的产品大伙前,有一种 PaaS 模式的云产品是非常火的,也就是各种 APP Engine,比如说最早做的谷歌GAE、新浪SAE,以及后期涌现的阿里云ACE和百度云BAE,但是现在来看我们都知道其结果,他们都已经不存在了,尽管在当时看来 App Engine 是对虚拟主机和物理服务器的一场革新,但是过分超前的理念和不切实际的体验葬送了各类 AE。
4205 0
|
存储 关系型数据库 数据库
【云计算的1024种玩法】通过阿里云DBS产品轻松实现企业级数据库备份
在空闲的时候刷抖音上刷到过一个程序员小哥因为错误操作将公司服务器全部删除然后各处查找备份,背后一身全是汗。混互联网的都知道天灾人祸在所难免,有一个备份就可以尽可能的减少损失,前借个月就有在某云计算厂商上出现过估值千万的创业公司因为将重要数据存在上面却因未做备份在面临“人祸”的时候丢失数据。
2320 1
|
关系型数据库 MySQL PHP
【云计算的1024种玩法】构建云上在线无纸化考场就是这么简单
近期公司内部搞新员工的入职赋能培训,然后就迎来一个非常严峻的问题,考试太浪费纸了,作为一个生性节俭的人,我怎么能容忍大量的纸张被浪费呢!这时候就想着是否可以有姿势来弄一个无纸化考场呢?用云计算推动先进生产力带来全新的考试体验也是很正常的嘛!其实在线考试系统有纯软件模式的,录入试题用软件给员工考试,不过这个软件的授权成本不低,不划算。
4055 0
|
弹性计算 网络协议 云计算
【云计算的1024种玩法】只要SLB+DNS,云上IPV6竟然如此简单
在2017年的尾声,中办国办印发《推进互联网协议第六版(IPv6)规模部署行动计划》(以下简称《计划》),加快推进基于 IPv6 的下一代互联网规模部署,计划指出到 2018 年末国内 IPv6 活跃用户数要达到2亿,2020年末达到5亿,2025年末中国 IPv6 规模要达到世界第一。
13183 0
|
新零售 Web App开发 安全
【云计算的1024种玩法】配置 Web应用防火墙 防患攻击与未然
随着互联网的不断发展,互联网上的攻击威胁也越来越多,例如电商行业的交易数据被篡改,网站被篡改发表跑路内容导致信任危机,数据库被攻击导致客户信息泄露,相关客户福利措施被薅羊毛等等,即便是很小的过失都可能带来极大的负面效应
4008 0
|
Shell PHP 云计算
【云计算的1024种玩法】轻松搭建自有的云上企业应用套件
如何高效的完成企业内部的协同办公是很多企业一直在解决的问题,或许像微软的 Office 365、谷歌的 G suit 甚至最近炒的火热的腾讯文档。但是他们都有一个问题那就是数据存放在第三方不可控以及自定义性的一些问题。
5929 0
|
弹性计算 Linux Shell
【云计算的1024种玩法】巧用迁云工具轻松实现服务器迁移到ECS
很多时候如何将服务器迁移到阿里云的ECS成了很多用户上云之路的拦路虎,特别是在本地操作系统中已经有了非常复杂的软件部署这时候迁移上云或者在不同公有云之间迁移就让不少人犹豫不决了。 阿里云提供的 迁云工具 就是为这个迁移痛点而生的,特别好用!
5052 0
|
新零售 弹性计算 关系型数据库
【云计算的1024种玩法】轻松搭建可自动横向扩展的同城双中心服务云集群
云服务器的特性主要就是体现在横向、纵向的弹性扩容上,纵向的话其实很好理解就是我们单台 ECS 配置不够用了马上升级一下配置,不过这种场景比较适合于一个网站稳健的发展状态,而且波动不大。或者说服务器有较长时间的资源占用而非短时间的,比如说台风网肯定是 5~10 月这段时间访问量较高,那么我们就可以在春末的时候升一段配置,夏天再升级一段配置,初秋稍微降一点,秋末降至平稳状态。
5609 0