前言

从一接触openresty,我一直在追求一种比较优雅的包管理方式
从 git submodules , luarocks 到 opm 可谓踩坑无数
这是一件有时间就会怨念一下的事情
时至今日,终于把 opm 这一套踩全了
不敢私享,抛砖引玉
本文中所有的脚本都在阿里云centos 7.0.4镜像上测试通过

不会用编译安装配置服务器的程序员不是好运维
自从接触了 configure
什么 yum apt-get 都是浮云

环境准备

删除 perl

阿里centOS 的镜像中 perl 的一些组件不是很完备,在这里踩了很多坑

  1. yum remove -y perl

建立工作目录

  1. sudo adduser www

  2. su www

  3. cd $HOME

  4. mkdir $HOME/local

  5. mkdir $HOME/source

安装 perl

  1. su www

  2. cd $HOME/source

  3. wget https://www.cpan.org/src/5.0/perl-5.28.1.tar.gz

  4. tar -xzvf perl-5.28.1.tar.gz

  5. cd perl-5.28.1

  6. ./configure.gnu --prefix=$HOME/local

  7. make && make install

配置 path

这样操作完了以后,会发现已经建立了 $HOME/local/bin的文件夹,需要将这个文件加到 path 中。

源码安装 openresty

  1. cd $HOME/source

  2. wget https://openresty.org/download/openresty-1.13.6.2.tar.gz

  3. tar -xzvf openresty-1.13.6.2.tar.gz

  4. cd openresty-1.13.6.2

  5. ./configure --prefix=$HOME/local/openresty --sbin-path=$HOME/local/bin

  6. gmake && gmake install

为了使用 opm ,需要将 $HOME/local/openresty/bin 也加入到 PATH 中

配置 nginx 权限以使之可以使用80端口

  1. 切换回 root 权限

  2. 执行下面的命令(延续我们之前的 www 用户 )

  1. chown root /home/www/local/bin/nginx

  2. chmod u+s /home/www/local/bin/nginx

现在开始,nginx 已经可以启动了。

使用 OPM

安装一个包

  1. opm install sumory/lor

这时屏幕输出如下:

发布一个包(终于到本文件重点了)

配置你的 git 信息

  1. vi ~/.opmrc

看到如下信息:

这里有两个值,一个是 githubaccount,顾名思义,你的基友网站的帐号
另外一个是 githubtoken,按照提示,登录 github 后,进入https://github.com/settings/tokens,

  1. 选择generate new token:

  2. 按照文档的要求,选择 read:org,user:email 的权限:

  3. 将生成的 token贴到.opmrc 文件下。

配置包的信息

1.进入要发布的目录下: 2.新建一个 dist.ini 的文件。 其内容如下:

  1. name = open-tiny-util

  2. abstract = Utils of Openresty

  3. author = yfge(geyunfei@gmail.com)

  4. is_original = yes

  5. license = apache2

  6. repo_link = https://github.com/yfge/open-tiny-util

  7. lib_dir = lib

  8. doc_dir = lib

  9. version = 0.1

  10. main_module = lib/tiny/util/array.lua

name 是包名称,最终发布会以你的github帐号/name 进行命名
比如本拐的这个小工具就是 yfge/open-tiny-util
absctract 是包的说明
auhor 作者 isoriginal 说明是一个原创的代码库还是 fork 他人的分支(好程序员的设定)
libdir 源码的目录
docdir 文档的目录
vesion 版本,现在似乎只支持 x.x.x 的形式,不能加 beta 之类的
mainmodule 主入口,这个如果不写的话会自动生成。
注意:main_module 的 _VERSION 要和 version 一致,或是二者任取其一也可以。

配置好了以后,运行:

  1. opm build

输出如下提示:
最后,发布你的包:

  1. opm upload

这时在 opm.openresty.org 已经可以看你的发布了:

最后,我们可以试验一下安装:

  1. opm install yfge/open-tiny-util

OK 开始你的 OPM 之旅吧

关于老拐瘦

散养程序猿,野生架构狮

二流搬砖工,三流摄影师

假正经真逗比,装文艺实二逼

所以,这么一个公众号里

会有代码,有段子,有美图,有鸡汤

反正,乱七八遭的,没准碰上哪个刚好就烦到您了呢

啥也不说,扫码关注吧

openresty的 opm 踩坑之旅相关推荐

  1. Vue踩坑之旅(一)—— 数组、对象的监听

    作为一个接触 vue 才一个多月的小白,马上就接手基于 vue 的大型商城项目,其间真是跌跌撞撞踩了好多坑(o(╥﹏╥)o).在此写下自己的踩坑之旅,希望给跟我一样还在自学 vue 的同学一些帮助,另 ...

  2. 微信开发踩坑之旅 之 开发准备及服务器配置

    在工作和兴趣的机缘巧合之下,我开始接触微信开发.在这里简单记述自己的微信开发踩坑之旅. 首先,由于本人标准的理工科生,记述的语言有所不足,我尽量说明准确和详细点. 本文记述主线 ·申请公众号 ·公众号 ...

  3. VR制作中必须踩的坑365之037(oculus2、UE4、UE5、VR记录一年的踩坑之旅)Maya / ZBrush / Substance Painter倒来倒去

    VR制作中必须踩的坑365之037(oculus2.UE4.UE5.VR记录一年的踩坑之旅)Full 3D GAME ASSET workflow ( Maya / ZBrush / Substanc ...

  4. 重装win10系统+Ubuntu16.04的踩坑之旅(联想拯救者r720)

    重装win10系统+Ubuntu16.04的踩坑之旅(联想拯救者r720) 碎碎念:原本双系统用得很开心的,在手贱删了Ubuntu系统的某些隐藏文件之后导致Ubuntu系统不能正常使用,在某种程度强迫 ...

  5. VR制作中必须踩的坑365之044(oculus2、UE4、UE5、VR记录一年的踩坑之旅)拳击VR小游戏红绿灯

    VR制作中必须踩的坑365之043(oculus2.UE4.UE5.VR记录一年的踩坑之旅)拳击VR制作起来,拳击动画人物 How to create box minigame in VR (UE4 ...

  6. VR制作中必须踩的坑365之045(oculus2、UE4、UE5、VR记录一年的踩坑之旅)iclone8来来来告诉你剁手坑

    VR制作中必须踩的坑365之045(oculus2.UE4.UE5.VR记录一年的踩坑之旅) iClone 8 Work in Progress - Part One: Dramatically Si ...

  7. Android google翻译踩坑之旅

    # Android google翻译踩坑之旅   最近由于工作需求,需要为游戏Android平台接入Google翻译的SDK,由于关于翻译的文章非常少,访问官方文档又需要翻墙,更可气的是找到的博客写了 ...

  8. python 同花顺thstrader_Python 踩坑之旅进程篇其三pgid是个什么鬼 (子进程\子孙进程无法kill 退出的解法)...

    代码示例支持 平台: Centos 6.3 Python: 2.7.14 1.1 踩坑案例 pid, ppid是大家比较常见的术语, 代表进程号,父进程号. 但pgid是个什么鬼? 了解pgid之前, ...

  9. VR制作中必须踩的坑365之042(oculus2、UE4、UE5、VR记录一年的踩坑之旅)2D图片变成3D最快方法:使用怪兽建模(Monster Mash)

    VR制作中必须踩的坑365之041(oculus2.UE4.UE5.VR记录一年的踩坑之旅) Turn 2D Images into 3D Objects with Monster Mash! (Fr ...

最新文章

  1. Web开发常见的软件架构
  2. 众创汇定制如何革新工业4.0?
  3. torch多维取数据
  4. error_reporting()
  5. 最小割板子题——[USACO5.4]奶牛的电信
  6. 电脑中没有oracle服务器,用AnySQL在没有oracle客户端的服务器上发送邮件
  7. Eclipse出现the type java.lang.CharSequence can't be resolved.
  8. Hadoop安装(Ubuntu Kylin 14.04)
  9. H3C和cisco单臂路由和三层交换机实现VLAN之间的互通
  10. 任意Android设备上运行测试
  11. IT项目经理前景及优劣势分析
  12. 谈谈我对零售云在云原生总结与思考
  13. 彻底搞懂二进制、进制换算如此简单!十进制转化二进制,二进制转化十进制
  14. java sqlite 多线程并发_C#_C#解决SQlite并发异常问题的方法(使用读写锁),本文实例讲述了C#解决SQlite并 - phpStudy...
  15. kali下经典的ddos攻击软件_Kali-DDoS工具集合
  16. python人脸识别门禁_Python+Opencv+Tkinter指纹识别与人脸识别的门禁兼考勤(一)
  17. 044_面向对象_17_封装
  18. 纯css打造超能陆战队--大白
  19. 河南朱砂服务器位置,探访河南境内规模最大的龙山遗址 龙山大墓主人头部疑似涂有朱砂...
  20. 由Monkey测试引发的跨多个进程的Android系统死锁问题分析

热门文章

  1. java传真发送_调用java API发送传真
  2. A站(ACFun)爬虫爬取并播放、下载视频(JAVA)
  3. openEuler 搭建java开发环境
  4. 英雄联盟s10信息详解
  5. Delphi图像处理 -- 高保真反差
  6. 基于JAVA成都某4S店销售管理系统计算机毕业设计源码+系统+lw文档+部署
  7. 常用的计算机病毒检测方法都有哪些?
  8. skt7850鸿蒙策略,s5总决赛小组赛:SKT不败战绩晋级八强
  9. Latex所有常用数学符号吐血整理(包含大括号、等式对齐、矩阵)
  10. android锁屏快捷键设置,【Android高级】锁屏功能简单实现