Ubuntu编译安装openresty

介绍

OpenResty 的额外拓展:

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

教程

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

设定版本变量

如果软件版本更新后,为了方便起见,后续修改版本号只需修改下面的变量即可。

在终端中输入:

OpenSSLVersion='openssl-1.0.2l';
NginxCTVersion='1.3.2';
PageSpeedVersion='1.12.34.2';
SystemBit='X64';
OpenRestyVersion='openresty-1.11.2.3';

上述软件版本更新查看: 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 所需的源代码均放置在 /data/www 目录下,方便管理。

# cd /data/www

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

# 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/pagespeed/ngx_pagespeed/archive/v$PageSpeedVersion-beta.zip
#  unzip v$PageSpeedVersion-beta.zip
#  cd incubator-pagespeed-ngx-1.12.34.2-beta/
#  wget https://dl.google.com/dl/page-speed/psol/$PageSpeedVersion-$SystemBit.tar.gz
#  tar -xzvf $PageSpeedVersion-$SystemBit.tar.gz
#  cd ../

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

编译 OpenResty

#  cd $OpenRestyVersion
#  ./configure --prefix=/data/www/openresty \
#  --user=www --group=www \
#  --add-module=../ngx_brotli \
#  --add-module=../nginx-ct-$NginxCTVersion \
#  --add-module=../incubator-pagespeed-ngx-1.12.34.2-beta \
#  --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=/data/www/openresty/nginx/sbin:\$PATH" >> /etc/profile
#  [ -n "`grep ^'export PATH=' /etc/profile`" -a -z "`grep /data/www/openresty/ /etc/profile`" ] && sed -i "s@^export PATH=\(.*\)@export PATH=/data/www/openresty/nginx/sbin:\1@" /etc/profile
#  . /etc/profile

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

设置服务和开机启动

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

# Stop dance for OpenResty
# A modification of the Nginx systemd script
# =======================
#
# ExecStop sends SIGSTOP (graceful stop) to the Nginx process.
# If, after 5s (--retry QUIT/5) OpenResty is still running, systemd takes control
# and sends SIGTERM (fast shutdown) to the main process.
# After another 5s (TimeoutStopSec=5), and if OpenResty is alive, systemd sends
# SIGKILL to all the remaining processes in the process group (KillMode=mixed).
#
# Nginx signals reference doc:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=A dynamic web platform based on Nginx and LuaJIT.
After=network.target

[Service]
Type=forking
PIDFile=/data/www/logs/openresty.pid
ExecStartPre=/data/www/openresty/bin/openresty -t -q -g 'daemon on; master_process on;'
ExecStart=/data/www/openresty/bin/openresty -g 'daemon on; master_process on;'
ExecReload=/data/www/openresty/bin/openresty -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /data/www/logs/openresty.pid
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target

编辑 /data/www/openresty/nginx/conf/nginx.conf 文件为(仅作为参考):

user www;
worker_processes  auto;

error_log /data/wwwlogs/error_nginx.log crit;
pid /data/www/logs/openresty.pid;
worker_rlimit_nofile 51200;

events {
use epoll;
worker_connections 51200;
multi_accept on;
}

http {
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 1024m;
client_body_buffer_size 10m;
sendfile on;
tcp_nopush on;
keepalive_timeout 120;
server_tokens off;
tcp_nodelay on;

fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_intercept_errors on;

#Gzip Compression
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 6;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml
text/javascript application/javascript application/x-javascript
text/x-json application/json application/x-web-app-manifest+json
text/css text/plain text/x-component
font/opentype application/x-font-ttf application/vnd.ms-fontobject
image/x-icon;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";

brotli             on;
brotli_comp_level  6;
brotli_types       text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;

#If you have a lot of static files to serve through Nginx then caching of the files' metadata (not the actual files' contents) can save some latency.
open_file_cache max=1000 inactive=20s;
open_file_cache_valid 30s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

######################## default ############################
server {
listen 80;
server_name localhost;
access_log /data/www/openresty/logs/access_nginx.log combined;
root  html;
index index.html index.htm index.php;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
location ~ /\.ht {
deny all;
}
}

########################## vhost #############################
include vhost/*.conf;
}

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

# systemctl daemon-reload

通过 systemd 启动 OpenResty:

#  systemctl start openresty

设置开机启动:

#  systemctl enable openresty

打开你的服务器 IP,就能看到安装好的 OpenResty 提示页了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,718评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,683评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,207评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,755评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,862评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,050评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,136评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,882评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,330评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,651评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,789评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,477评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,135评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,864评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,099评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,598评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,697评论 2 351

推荐阅读更多精彩内容