为tinycolinux制作应用包

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文关键字:tinycolinux自定义应用包,tinycolinx内存运行,mysql重建/tmp/mysql.sock

本文关键字:tinycolinux自定义应用包,tinycolinx内存运行,mysql重建/tmp/mysql.sock

在前面《发布tinycolinux》中,我们重点描述了将tinycolinux安装到硬盘的情况,及处理安装应用到硬盘的情况,这也是大部分情形下的场景,其实,完全可以采取其rootfs放在livecd ram中运行而应用依然安装到硬盘的方式,这样更有利于vm container iaas环境建server farm,这样rootfs是加载到ram中去的。只要重启,一切对系统的更改将撤消。用户就不会轻易破坏系统。

ram中运行rootfs

首先在conf/colinux.conf中root=/dev/ram0,initrd=microcore.gz,cobd0=/imgs/tinycolinux1g,这样启动起来的colinux其rootfs在/dev/ram0中,硬盘介质中仅用于保存用户数据,即conf/colinux.conf中定义的四个挂载地址/opt=cobd0,/home=cobd0,local=cobd0,tce=cobd0,这四个可持化挂载点是colinux那些当且仅当需要修改的地方,所以需要被挂载持久,,我们还可以再定义几个变量加强这个live rootfs的强度,如norestore,

启动,运行。成功进入到tc用户的cmdline.

当然,虽然这个live rootfs系统启动起来了,这个rootfs还是有点raw form和不便的。比如:

通过df命令我们发现定义的四个挂载点,仅挂载了三个到/缺了/tce,但是硬盘中依然生成了四个文件夹/opt,/home,/tclocal对应/usr/local,和/tce,通过tce-load -w发现下载的包在/mnt/cobd0/tce中,这是正确的行为,能用但不好看,这四个挂载点的加载逻辑全在/etc/init.d/tc-config中,所以我们甚至可以重新打包microcore.gz修改tc-config加入缺失的/tce条目。

modprobe也会出错,因为readonly live rootfs是不能加载原initrd.gz注入的lib/modules的,不过同样地,我们可以重新打包microcore.gz手动加入这些文件。

还有一些必要的系统级持久无法完成,比如用户密码更改,它保存在readonly rootfs /etc/shadow中,我们必须这样来完成:

sudo passwd root

输入密码二次

cp /etc/shadow /opt/shadow (做一次备份到硬盘中/opt)

然后修改下/opt/.bootsync.sh,加入以下:

cp /etc/shadow /etc/shadow_old 
cp /opt/shadow /etc/shadow

其实我们完全可以替换busybox中的passwd,改变/etc/shadow路径到其它外部可持久位置,还比如,vm container子机环境不需要关机,可以去掉busybox中的halt,还比如我们可以编译加入dropbear支持,毕竟sshd是最基本的发行包支持了。

我们就不定制microcore.cpio包了。太累。

组建复合应用

官方提供了很多镜像,这些包都很正交。且还有构建源码,可往往我们还需要lnmp这样的组合包,我们可以按《发布tinycolinux》part2中的硬盘安装应用方法来组合一次性安装包(当然,这样它就不正交了但对一台vm container通常情况下仅需承载安装一次lnmp的情形下来说,非常合理和实用),以下是组合应用逻辑,举例我们用了lnmp,组合到一个lnmp.tar.gz中。

首先,tce-load -w nginx,php5,sqlite3,发现会下载大量tcz到/mnt/cobd0/tce/options中:bsddb.tcz,bzip2-lib.tcz,curl.tcz,gmp.tcz,libgdbm.tcz,libiconv.tcz,libltdl.tcz,libmcrypt.tcz,libpng.tcz,libxml2.tcz,libxslt.tcz,mysql.tcz,ncurses.tcz,ncurses-common.tcz,nginx.tcz,openssl-0.9.8.tcz,pcre.tcz,perl5.tcz,php5.tcz,readline.tcz,sqlite3.tcz,这些都是我们要组合进一个大应用包的基础。一个一个解压它到my文件夹,sudo unsquashfs -f -d /mnt/cobd0/my/ /mnt/cobd0/tce/optional/xxx.tcz

作一些更改(这是因为原tcz全是绿色dropin包):

nginx conf/nginx.conf,root index加个index.php,把关于php的三条注释去除注释化使其有效,其中SCRIPT_FILENAME改成 $document_root$fastcgi_script_name;且把最大脚本内存由128m改为64mb

usr/local/etc加个my.cnf,内容如下:

[mysqld]
socket     = /tmp/mysql.sock
port       = 3306
pid-file   = /tmp/hostname.pid
datadir    = /usr/local/var/mysql
language   = /usr/local/share/mysql/english
user       = tc

好了,现在重建数据库,sudo /usr/local/bin/mysql_install_db,,尝试启动mysql: sudo /usr/local/bin/mysqld_safe & ,成功

然后我们cd /mnt/cobd0/my,打包它们sudo tar zcf lnmp.tar.gz *,,,安装这个大应用测试下:cd到/,然后tar zxvf /mnt/cobd0/my/lnmp.tar.gz,然后在/opt/bootlocal.sh中启动它们:

sudo nginx;sudo php-cgi -b 127.0.0.1:9000;sudo mysql_safe

成功。


这个我本来还要集成memcached (bootlocal中启动用memcached -d 64m限制最大使用内存)和postfix的。postfix适合另外起一台vm container建一个emailserver的组合包。而不是放到lnmp中。

当然,如果自己要从源码构建php等的新版本,而不是直接利用官方包组合,这需要处理好多东西。恩恩


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
API Windows
NSIS使用教程(安装包制作安装文件教程,如何封装打包文件) 中文版
原文:NSIS使用教程(安装包制作安装文件教程,如何封装打包文件) 中文版 nsis中文版(Nullsoft Scriptable Install System)是一个专业的开源的可以用来封闭Windows程序的实用工具,是一个开源的 Windows 系统下安装程序制作程序。
3986 0
|
5月前
|
Java Linux Shell
Linux安装包制作
Linux安装包制作
92 0
|
Linux 网络安全 Windows
【lrzsz】安装lrzsz工具实现Linux和Windows系统之间文件便捷上传与下载
【lrzsz】安装lrzsz工具实现Linux和Windows系统之间文件便捷上传与下载
541 0
|
Unix C#
使用Inno Setup 制作软件安装包详细教程(与开发语言无关)
前言:关于如何制作一个软件安装包的教程,与编程语言无关。以下,请看详情~
746 0
使用Inno Setup 制作软件安装包详细教程(与开发语言无关)
|
存储 编解码 openCL
cdr2022绿色精简免安装下载教程
CorelDRAW是我最早接触的矢量绘图软件,一直用它绘图、排版、打印、输出,一直感觉它功能很强大,CorelDRAW是加拿大的corel公司出品的,corel公司的产品强调的是编辑功能,它将各种要实现的功能直接表现于具体操作中,动动鼠标基本就能实现你想要的效果。
3469 0
|
Java
ROM包制作
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/79442506 1.下载喜欢的rom当底子,解压得到几个文件夹2.system\app里是集成软件,该删的删,该加的加。
1458 0
|
编译器 Linux Windows
NSIS安装包开发笔记(一):NSIS介绍、使用NSIS默认向导脚本制作Windows安装包
NSIS安装包开发笔记(一):NSIS介绍、使用NSIS默认向导脚本制作Windows安装包
NSIS安装包开发笔记(一):NSIS介绍、使用NSIS默认向导脚本制作Windows安装包
|
Linux Apache
14.5 Linux源码包服务管理
本节我们先学习源码包服务的启动管理,再来学习源码包服务的自启动管理,最后学习如何让源码包服务被系统服务管理命令识别。
154 0
14.5 Linux源码包服务管理
|
Linux Unix
Linux日记本_09:文件打包程序tar 以及处理.Z文件
文件打包程序 tar tar是一个打包程序,它能将用户指定的文件或目录打包成一个文件。但是tar并不能进行压缩,而gzip无法将多个文件压缩成一个文件。所以目前大多数压缩文件都是用tar将所有的文件打包成一个文件,然后再由gzip压缩。
1106 0