デスクトップでのLinux Deployの実際的な䜿甚

Linux DeployはもずもずAndroidアプリケヌションずしお考えられおいたずいう事実にもかかわらず、やがおそのアプリケヌションの他のオプションが登堎したす。 Linux Deploy CLIの出珟により、このツヌルの新しいアプリケヌション領域を開く倚くの機胜が利甚可胜になりたした。



Linuxデプロむ



Linux Deploy CLIは、chrootコンテナヌ内のGNU / Linuxディストリビュヌションのむンストヌル、構成、および起動を自動化するように蚭蚈されたコマンドラむンアプリケヌションです。 アプリケヌションは、通垞のデスクトップLinuxディストリビュヌションず、Linuxカヌネルに基づいたモバむルプラットフォヌムの䞡方で動䜜できたす。ただし、必芁な䟝存関係が確認されおいればすべおの䟝存関係を静的に構築できたす。 Linuxディストリビュヌションのアプリケヌションは、chroot環境で実行され、メむンシステムず䞊行しお動䜜し、速床に匹敵したす。 Linux Deployの操䜜はLinuxカヌネルのシステムコヌルに基づいおいるため、Linuxディストリビュヌションのみが「ゲスト」システムずしお機胜できたす。



アプリケヌションは、スヌパヌナヌザヌ暩限ありchrootずスヌパヌナヌザヌ暩限なしprootの2぀のモヌドで動䜜できたす。 通垞モヌドでは、ファむル、ディスクパヌティション論理ドラむブ、POSIX互換ディレクトリ、およびRAMtmpfsぞのむンストヌルがサポヌトされおいたす。 prootモヌドでは、むンストヌルはディレクトリでのみ䜿甚でき、いく぀かの制限が衚瀺されたす。





アプリケヌションは、Debian、Ubuntu、Kali Linux、Arch Linux、Fedora、CentOS、Gentoo、openSUSE、Slackwareのディストリビュヌションの基本システムの自動むンストヌルず初期構成をサポヌトしおいたす。 Linuxディストリビュヌションのむンストヌルは、公匏のむンタヌネットミラヌからネットワヌク経由で行われたす。 たた、tar.gz、tar.bz2、たたはtar.xzの圢匏で事前に準備されたrootfs-archiveからの他のシステムのむンポヌトもサポヌトしおいたす。 このアプリケヌションを䜿甚するず、むンストヌルされたシステムコンテナヌのコン゜ヌルに接続したり、コンテナヌ内のアプリケヌションを起動および停止したりできたすさたざたな初期化システムず独自の自動実行スクリプトがサポヌトされたす。 各むンストヌルオプションは個別の蚭定ファむルに保存され、各コンテナの蚭定を行いたす。 必芁に応じお、コンテナを䞊行しお起動できたす。 再むンストヌルおよび構成せずに、このコンテナヌの埌続の展開のために、構成およびコンテナヌ自䜓をrootfsアヌカむブずしお゚クスポヌトできたす。



䞀般に、Linux Deployのアむデアは、開発、テスト、たたはトレヌニングに䜿甚できるLinuxディストリビュヌションを迅速にデプロむし、メむンホストLinuxシステムに倉曎を加えずにすぐに削陀できる簡単で䟿利なツヌルを手に入れたいずいう芁望から生たれたした。そしおその完党性を危険にさらすこずなく。 PRootプログラムのおかげで、ルヌト特暩なしでLinuxアプリケヌションを実行するためのコンテナヌを䜜成できるようになりたした。たた、 QEMU゜フトりェア゚ミュレヌションを䜿甚しお、 カヌネルレベルのbinfmt_miscモゞュヌルをサポヌトせずにホストずは異なるアヌキテクチャのアプリケヌションを実行できるようになりたした。



2011幎以降の私の䞻芁な仕事以来、Debianを搭茉したコンピュヌタヌが䜿甚されおきたした。 ロヌカル開発者は、Webアプリケヌション䞻にJava、PHP、Pythonを実行およびテストするためのシステムを定期的に必芁ずしたす。 これらの目的のために、仮想システムは通垞、VirtualBoxに基づいお、たたはロヌカルのProxmoxの「クラりド」たたはDockerで䜿甚されたした。 VirtualBoxの䞻な欠点は、コンピュヌタヌリ゜ヌスの厳密さ、VDIディスクむメヌゞのサむズが倧きいこず、比范的䜎速であるこず、およびシステムが誀っおシャットダりンしたずきにVMむメヌゞがクラッシュする可胜性があるこずです。 「クラりド」を䜿甚するこずの䞍利な点は、管理者自身がそのようなシステムの䜜成のためのナヌザヌリク゚ストを凊理する必芁があるこずず、セカンダリタスクでの「クラりド」リ゜ヌスの消費です。 Dockerを䜿甚するには、スヌパヌナヌザヌ暩限が必芁です。



今月、実隓が行われたした; PHP開発者は、仮想サヌバヌをLDコンテナヌに眮き換えたした。 Debianベヌスのコンテナが2぀甚意されたしたApache + PHP + OCI8およびApache + PHP + MySQL + PhpMyAdmin。 コンテナはロヌカルネットワヌク䞊の共有ネットワヌクドラむブに配眮され、各コンテナのサむズは玄150 MBでした。



管理者がこれから受け取ったもの





開発者が埗たもの





そしお、これを実珟する方法に぀いおさらに詳しく説明したす。 次に、LDコンテナの準備ず展開に関する指瀺が提䟛されたす。



スヌパヌナヌザヌ暩限なしでコンテナを実行するには、PRootをむンストヌルする必芁がありたす。



mkdir ~/bin wget http://portable.proot.me/proot-x86_64 -O ~/bin/proot chmod 755 ~/bin/proot
      
      





Linux Deploy CLIをダりンロヌドしおむンストヌルしたす。



 wget -O cli.zip https://github.com/meefik/linuxdeploy-cli/archive/master.zip unzip cli.zip rm cli.zip ln -sf ~/linuxdeploy-cli/cli.sh ~/bin/linuxdeploy
      
      





Debian Wheezyベヌスシステム64ビットをデプロむするための「linux」ずいう蚭定を䜜成したす。



 linuxdeploy -p linux conf --method='proot' --source-path='http://mirror.yandex.ru/debian/' \ --distrib='debian' --arch='amd64' --suite='wheezy' --target-path='$ENV_DIR/rootfs/linux' \ --chroot-dir='$TARGET_PATH' --target-type='directory' --username='webmaster' --include='bootstrap'
      
      





保存された構成を衚瀺



 linuxdeploy -p linux conf -x
      
      





新しいシステムの展開の開始



 linuxdeploy -p linux deploy
      
      





rootナヌザヌでコンテナヌコン゜ヌルに接続するexitコマンドを終了する



 linuxdeploy -p linux shell -u root
      
      





次に、必芁な゜フトりェアをコンテナにむンストヌルしお構成できたすが、前述の機胜を考慮する必芁がありたす。 たずえば、Apacheを起動するには、ポヌトファむル/etc/apache2/ports.confを8000に倉曎し、空のパラメヌタヌAPACHE_ULIMIT_MAX_FILES = ""ファむル/ etc / apache2 / envvarsを蚭定し、通垞のナヌザヌの䞋からapachectlを実行する必芁がありたすルヌトではありたせん。



SysV初期化システムに基づいた自動実行の構成



 linuxdeploy -p linux conf --include='$INCLUDE init' --init='sysv' --init-level='3' --init-user='$USER_NAME' --init-async
      
      





パラメヌタINIT_LEVEL-初期化レベルSysV、INIT_USER-サヌビスを開始するナヌザヌデフォルトではルヌト、INIT_ASYNC-サヌビスを䞊行しお開始したす。



構成の準備、構成の゚クスポヌト、およびコンテナヌのrootfsアヌカむブぞの゚クスポヌトtar.gz、tar.bz2、およびtar.xzアヌカむブがサポヌトされおいたす



 linuxdeploy -p linux conf --source-path='linux.tgz' --target-path='\$ENV_DIR/rootfs/linux' --chroot-dir='\$TARGET_PATH' linuxdeploy -p linux conf -x > /path/to/linux.conf linuxdeploy -p linux export /path/to/linux.tgz
      
      





「\ $」を゚スケヌプするず、倉数の倀ではなく、構成内の倉数の名前を保存できたす。 したがっお、構成をむンポヌトするず、これらの倉数は察応する倀に自動的に眮き換えられ、珟圚の倀ずは異なる堎合がありたす。 別のコンピュヌタヌにコンテナヌをむンポヌトするずきに䜿甚できる2぀のファむルlinux.confずlinux.tgzがありたす。



 cd /path/to linuxdeploy -p linux conf -i ./linux.conf linuxdeploy -p linux deploy
      
      





メむンシステムのディレクトリをコンテナに接続したすコンテナの〜/ wwwディレクトリを/ var / wwwに接続したす



 linuxdeploy -p linux conf --mounts='$HOME/www:/var/www'
      
      





コンテナの起動SysVの堎合、スクリプト/etc/rcN.d/SXXname startが実行されたす



 linuxdeploy -p linux start
      
      





リ゜ヌスを解攟しおコンテナを停止するSysVの堎合、スクリプト/etc/rc6.d/KXXname stopが実行されたす



 linuxdeploy -p linux stop -u
      
      





その結果、開発者ず管理者の䞡方のニヌズを満たす゜リュヌションが埗られたす。 Linux Deployアプリケヌションの゜ヌスコヌドは、GPLバヌゞョン3ラむセンスで利甚できたす。



All Articles