Skip to content

Instantly share code, notes, and snippets.

@rambolee
Created November 22, 2016 11:05
Show Gist options
  • Save rambolee/e28006d1b0f5fac930287e77a0dd9155 to your computer and use it in GitHub Desktop.
Save rambolee/e28006d1b0f5fac930287e77a0dd9155 to your computer and use it in GitHub Desktop.
使用 openresty 实现 短域名项目 ourls 部署笔记

短域名配置部署相关

@(工作笔记)[短域名|openrest|lua]

[TOC]

环境部署

安装配置

安装 OpenResty

# 一些环境准备
yum install readline-devel pcre-devel openssl-devel gcc

# 安装
tar -xzvf openresty-VERSION.tar.gz
cd openresty-VERSION/
./configure
make
sudo make install

安装 Ourls-Resty

  • 安装 OpenResty 为前提
  • 安装 gcc/make/libidn/libidn-devel
yum gcc make install libidn-devel
  • 将 Ourls 项目解压到 OpenResty 目录(/usr/local/openresty/), 执行 install.sh
  • 修改 lualib/ourl/config.lua 中的数据库配置、hashids参数、可信代理的 cidr。参考如下:
local ok, new_tab = pcall(require, "table.new")
if not ok or type(new_tab) ~= "function" then
    new_tab = function (narr, nrec) return {} end
end
local _M = new_tab(0, 8)
_M.db    = new_tab(0, 4)
_M.db_rw = new_tab(0, 8)
_M.db_ro = new_tab(0, 8)
_M.hash  = new_tab(0, 4)

_M.db_rw.host = '127.0.0.1'
_M.db_rw.port = 3306
--_M.db_rw.path = '/var/lib/mysql/mysql.sock'
_M.db_rw.database = 'ourl'
_M.db_rw.user     = 'root'
_M.db_rw.password = '123456'

_M.db_ro.host = '127.0.0.1'
_M.db_ro.port = 3306
--_M.db_ro.path = '/var/lib/mysql/mysql.sock'
_M.db_ro.database = 'ourl'
_M.db_ro.user     = 'root'
_M.db_ro.password = '123456'

_M.hash.salt     = 'ump.letv.cn'
_M.hash.length   = 4
_M.hash.alphabet = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

_M.proxies = {
    '127.0.0.0/8',
    '10.0.0.0/8',
    '172.16.0.0/12',
    '192.168.0.0/16',
}

_M.db.timeout   = 1000
_M.db.keepalive = 10000
_M.db.poolsize  = 10

_M.log_level = ngx.ALERT
_M.debug = true
return _M
  • 恢复 urls.sql 至 MySQL 或 MariaDB 数据库
$ cat urls.sql
CREATE TABLE `urls` (
    `id` INT (11) NOT NULL AUTO_INCREMENT,
    `sha1` CHAR (40) NOT NULL,
    `url` VARCHAR (10240) NOT NULL,
    `create_at` INT (11) NOT NULL,
    `creator` INT (11) unsigned NOT NULL DEFAULT '0',
    `count` INT (11) NOT NULL DEFAULT '0',
    `status` TINYINT(1) NOT NULL DEFAULT '1',
    PRIMARY KEY (`id`),
    INDEX (`sha1`),
    INDEX (`create_at`),
    INDEX (`creator`),
    INDEX (`count`),
    INDEX (`status`)
) ENGINE = INNODB CHARACTER
SET utf8 COLLATE utf8_unicode_ci;

由于要存储的 url 长度超过225,因此,将原有的 sql 中的 url 长度从255 修改为 10240

  • 进入 nginx/conf 目录,根据自己的实际情况修改 (合并配置,修改 server_name …),如下:
$ cat ourl.conf
server {
    listen 80;
    server_name t.letv.cn;
    root html/ourl;
    index index.html;

    location / {
        try_files $uri $uri/ @app;
    }
    location @app {
        internal;
        default_type  text/html;
        content_by_lua_block {
            local t = require 'ourl'
            t.run()
        }
    }
}
  • 启动 openresty (service openresty start)

调试和功能介绍

重启服务

[libo17@mq:/usr/local/openresty/nginx/sbin/]
$ sudo ./nginx -s reload

调用接口

一些分析和注意事项

推荐

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment