20190929のLinuxに関する記事は9件です。

crontabのオプション

crontab -e

cronを編集する

crontab -l

設定されているcronを表示する

crontab -r

cronをすべて削除

crontab -u

ユーザを指定する

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

█║▌ Distributed Fault-Tolerant Authentication Management & Identification Control System

At the rate at which technology today is moving forward with the Internet speeds increasing manifold, with IoT gaining prominence and organizations more distributed across the globe than before, the authentication software, systems and architectures remain fairly primitive.

Among the many reasons attributing to this is corporates that build these authenticating systems and software hold on to these products as their main source of income. The insight and research in these areas has also been fairly mundane. Though there's been enough research funding, what's missing has been the intellect and knowledge required to build large-scale distributed and decentralized authentication systems and architectures.

Large-scale authentication systems and architectures used in building them must allow both manned [computers, tablets, phones, virtual machines etc] and unmanned [IoT devices etc] to authenticate and authorize themselves without a centralized bottleneck, as seen in authentication systems like LDAP, Active Directory and others.

As experienced on a daily basis, these centralized authentication systems are not scalable or fault-tolerant without a sane fail-over MTBF [Mean Time Between Failure] causing business disruptions on a regular and long-lasting basis.

■ What can be done about this?

Let us acquaint ourselves with AuthControl. SynchroKnot designed and developed AuthControl as a result of realizing inadequacies in the centralized authentication systems [LDAP & Active Directory].

AuthControl was designed with the following flexibility in mind:

  • Ability for authentication to be either centralized, distributed, decentralized or a combination of these.
  • Ability to be seamlessly and transparently scaled on-demand across the globe with no downtime.
  • Ability to be used by standard operating systems within their security framework without custom or proprietary software, enhancements, modifications or hacks.
  • Ability to be used across all devices that can make a simple https call. and much more.

■ What is AuthControl?

AuthControl is SynchroKnot's unique Distributed Fault-Tolerant Authentication Management & Identification Control System that serves as a scalable, secure and simple alternative to LDAP, Active Directory and other authentication systems.

In AuthControl, the user[s] can be delegated and made responsible for managing their password. Furthermore, the user's password SHA512/GOST checksum is kept encrypted.

■ Password + Pin

The user[s] can log in to their virtual machines or physical hardware [eg. computers, tablets, mobile phones etc] with their standard username and password + 5 digit unique pin.

This 5 digit pin is not set by the user, but is rather auto or manually generated per the preference of the organization. Without having to manage separate pins for each user, and the ability to change them on a regular basis, makes logging into systems and authentication for various purposes more secure without adding the burden of lengthy procedures/steps.

Depending on the nature of the circumstance, user access can be restricted/limited by simply changing the PIN.

■ Algorithmically-ascertained decentralized numeric User and Group ID

Authcontrol also has the unique capability of creating operating system specific user and group identities that are unique. For example, AuthControl can create a Linux User ID and Group ID that are unique and always return the same numeric value for the ID.

This unique numeric user and group ID is algorithmically created in a decentralized manner without having to generate, store and poll centralized or distributed databases.

Due to the uniqueness of the user and group IDs, they can be instantly checked for changes/manipulations and reinstated automatically if changed without having to poll, check and compare with central or distributed databases. It can also report/alert in the similar manner.

AuthControl's strong security is strengthened with the use of inter-leaved mapping of Usernames to their Blockchain IDs and further using blockchain cryptography [not the blockchain network] to ascertain authenticity. This is another unique feature you will not find anywhere else but with SynchroKnot.

■ Fault Tolerant

AuthControl algorithmically checks for failures across multiple geographically-dispersed locations [configurable up to 10] before returning unreachable.

■ Load Balanced

Each user or groups of users can be assigned different geographically-dispersed locations for load balancing [with additional option of fault-tolerance].

■ Scalable

Enable AuthControl in virtual or physical machines, point more users to them, and scale seamlessly and transparently across the globe.

■ Simple

Very easy to set up and manage. Works transparently with Linux PAM without modifying standard PAM modules, and is end-to-end encrypted [uses standard HTTPS for communication].

Since this is just an article for getting acquainted with AuthControl, we refrain from getting into technicalities which might be better reflected in a whitepaper.

■ Below are examples of different methods that users can log in or access resources transparently with their standard Username and Password + 5 Digit PIN:

├─> Graphical Login
├─> Graphical Screen Saver Login [eg. screen lock]
├─> Non-Graphical Login
├─> SUDO - Execute a command as another user
├─> SU - Super User
├─> SSH - Secure Shell
├─> SCP - Secure Copy
├─> SFTP - Secure File Transfer Protocol
├─> SSHFS - Secure Shell File System
├─> FTP - File Transfer Protocol
├─> VNC - Virtual Network Computing
├─> RDP - Remote Desktop Protocol
├─> CUPs - standards based open source printing system
├─> CRON - Execution of scheduled commands
├─> SAMBA - Windows AD and SMB/CIFS fileserver for UNIX
├─> File Manager - Create Network Place with SFTP, SAMBA and FTP
├─> All password requirements via Control Center
├─> Practically anything that uses Standard PAM for authentication!

Below is a direct link to the demonstration video:

http://synchroknot.tokyo/AuthControl.mp4

Description of the demonstration:

This is a very basic impromptu demonstration of AuthControl. Here both of the virtual machines are enabled with AuthControl and show the following:

■ Login via Graphical Interface

■ Login via Non-Graphical Interface

■ Run a command with SU as another user

■ Run a command with SUDO as another user

■ Login to a remote system via SSH

■ Mount a remote filesystem via SSHFS

■ Use File Manager to create a Network Place using SFTP

All these different types of logins use AuthControl with standard Linux users and password + 5 digit pin. The basic HTTPS traffic is captured using TCPDUMP to show realtime interaction with the SynchroKnot AuthControl when the password is entered in the virtual machines for the purposes of authentication.

Note: This demo was recorded on a severely resource-constrained system. It is up to you to determine the performance.

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

/proc/meminfoのviewerをつくった

やりたいこと

/proc/meminfoの内容を理解するために、色々実験しながら各要素の変遷が見たい。
ただ、メモリ使用状況を可視化するツールはたくさんあるがどれも抽象度が高く、
/proc/meminfoの粒度での変遷を表示するツールを見つけられなかった。

やったこと

/proc/meminfoをできるだけそのまま表示するmiviewerをつくった。
といっても/proc/meminfoを取得して積み上げグラフにしただけ。

active.png

miviewer

$ ./miviewer.py -h
usage: miviewer.py [-h] [-a] [-i INTERVAL] [-c COUNT] [--check] [-w WINDOW]
                   [-t {active,buff-cache,available,user-kernel}]

optional arguments:
  -h, --help            show this help message and exit
  -a, --adb             Get meminfo via adb.
  -i INTERVAL, --interval INTERVAL
                        The delay between updates in milli-seconds. Default is 200.
  -c COUNT, --count COUNT
                        Number of updates. Default is infinite.
  --check               Check some formulas.
  -w WINDOW, --window WINDOW
                        Shown period time in seconds. Default is 60.
  -t {active,buff-cache,available,user-kernel}, --type {active,buff-cache,available,user-kernel}
                        Graph type. Default is active.

デフォルトでは、スクリプトを実行したPCの/proc/meminfoを、200ms間隔で取得し、グラフにプロットする。
--adbオプションを指定することで、adb経由でAndroid端末の/proc/meminfoを取得することも可能。
また、/proc/meminfoの要素はそれぞれ重なりがあり、一つの積み上げグラフですべての要素を表示することはできないので、
4つの選択肢からグラフタイプを選択できるようにしている。

グラフタイプactive

デフォルト。
Activeかどうか、つまり、LRUリストに乗ってるかどうかで分類された要素を積み上げている。
冒頭のグラフはこのタイプ。
なお、凡例の要素名が@で始まるものは、それそのものが/proc/meminfoにあるわけではなく、何らかの方法で算出した値であることを示す。

active.png

グラフタイプbuff-cache

BuffersCached、つまりバッファキャッシュ(メタデータやraw I/O用のキャッシュ)とページキャッシュ(ファイル自体のページのキャッシュ)の変遷を見るとき用。

buff-cache.png

グラフタイプavailable

シンプルにMemAvailableとそれ以外を表示する。
Linux観点でSwappingが始まるまでの余力をザクッと見るとき用。

available.png

グラフタイプuser-kernel

ユーザ空間とカーネル空間のどちらで使っているかで分類してプロットする。
なんか使うことがあるかなとおもって用意したものの、デフォルトのactiveがあれば必要ない気がしないでもない。

user-kernel.png

環境

動作確認環境は、以下のとおり。

  • Ubuntu 18.04
  • Linux 5.0.0-29-generic
  • Python 3.6.8
  • matplotlib 2.1.1

とはいえあまり環境に依存する実装ではないので、
MemAvailableがある(3.14以降)Linux環境なら動くんじゃないかと。
もしかしたらadbモードならMac/Windowsでも動くかもしれない(未確認)。

おわりに

なにかお気づきの点やご要望などありましたらぜひご指摘ください。

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Linux基礎(ディスククォータの管理)

ハードリミットとソフトリミット

Linuxでは、ディスククォータの機能により、ユーザーまたはグループごとに使用可能なディスク容量を制限できる。この制限はディスク容量のサイズだけでなく、inode数でも指定することできる。ディスククォータでは以下の5つのパラメータを使用して、使用できるディスク容量の制限を設定する。

設定項目 説明
ハードリミット(ユーザーごと) 1ユーザが利用できる最大のディスク容量
ハードリミットを越えるとそれ以上は書き込みができない。
ソフトリミット(ユーザーごと) 容量制限の警告が発声されるタイミング。
ソフトリミットを越えると警告が発せられるが、ディスクへの書き込みができなくなる。但しソフトリミットを超えたまま猶予期間をすぎると、書き込みができなくなる
ハードリミット(グループごと) グループが利用できる最大のディスク容量
ハードリミットを越えると、そのグループに属する全てのユーザは、それ以上書き込みできない。
ソフトリミット(グループごと) 容量制限の警告が発生されるタイミング。ソフトリミットを越えると警告が発せられるが、ディスクへの書き込みは可能。但しソフトリミットを超えたまま猶予期間を過ぎると、書き込みができなくなる。
猶予期間 ソフトリミットを越えると猶予期間(デフォルトで7日間)に入る。猶予期間が過ぎるまでにソフトリミット以下にファイルなどを削除しなければ、現在のソフトリミットのステータスが、ハードリミットとしてみなされてしまう。

ディスククォータの設定内容確認

quota [-u] [オプション] ユーザ名

オプション 説明
-u 指定したユーザーに設定されたディスククォータの状況を表示(デフォルト)
-g 指定したグループに設定されたディスククォータの状況を表示
-v 詳細情報の表示
# ユーザー"student1"のディスククォータ状況の表示
$ quota sudent1

ディスククォータの管理-設定手順

①/etc/fstab ファイルにマウントオプション設定
②マウントオプションの変更の適用のため、ファイルシステムのアンマウントとマウントを実行
③ユーザごとのクォータ情報が記憶されるaquota.userを作成し、rootが読み書き可能なアクセス権限を設定
④データベースの初期化
⑤クォータの有効化
⑥ユーザごとのクォータの設定

/etc/fstab ファイルにマウントオプション設定

# /etc/fstabに /dev/sda5の/homeに、ユーザごとのディスククォータを設定
/dev/sda5    /home    ext3    defaults.usrquota 1 2

マウントオプションの変更の適用のため、ファイルシステムのアンマウントとマウントを実行

$ unmount /home

$ mount /home

ユーザごとのクォータ情報が記憶されるaquota.userを作成し、rootが読み書き可能なアクセス権限を設定

$ touch /home/aquota.user
$ chmod 600 /home/aquota.user

データベースの初期化

quotacheck [オプション] ファイルシステム名

オプション 説明
-a /etc/fatabファイルに従い、クォータをチェック
-u ユーザ名 指定したユーザの情報のみ編集
-g グループ名 指定したグループの情報のみ編集
$ qutacheck /home

クォータの有効化

quotaon [オプション] ファイルシステム名

オプション 説明
-a /etc/fatabファイルに従い、クォータを有効化
-u ユーザ名 ユーザごとのディスククォータの有効化
-g グループ名 グループごとのディスククォータの有効化
$ qutacheck /home

ユーザごとのクォータの設定

edquota [オプション] ユーザ名

オプション 説明
-t ファイルシステムごとのソフトリミットの猶予期間を設定
-u ユーザ名 ユーザの設定(デフォルト)
-g グループ名 グループごとのディスククォータの有効化
$ edquota student1
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

自作OSとかLinuxカーネルについて役立った本

はじめに

なんらかの理由によってOSやOSカーネルに興味を持つ人は多々います。しかし、その次のステップとしてどんな本を読めばいいんだろうと思っている人はこれまたいっぱいいます。そこで、長年Linuxカーネルにかかわってきた筆者がこれまでに読んでよかったと思うものについてここの列挙しました。紹介するのは本だけであって、記事は省いています。もう一点、筆者が書いたものは省いています。

OSそのものに興味を持った人は、その後に興味の方向が次のような二つに分かれることが多いと筆者は考えています。

  • オレオレOSを作りたい
  • 既存のOSを改造したい

この仮説をもとに、それぞれについて筆者がかつて真面目に読んだ本の中から「自作OS」および「Linuxカーネル」というキーワードでよかったものを挙げておきます。Linux以外の既存OSについては語れるほどの知識はないので書いてません。

筆者について

本の良し悪しは人によってさまざまなので、筆者がどういうスキルセット、好みを持った人なのかを最初に書いておきます。わたしにとっての良書はみなさんにとっての悪書かもしれません。

  • 3年くらい前まで10年以上Linuxカーネル開発、サポートをしていた
  • 最近は枯れているdistributionカーネルのトラブルシューティングが中心。最新のカーネルについてはたまに興味のある最新機能を評価したりパッチ投げたりしてるだけ
  • 技術書は要点だけ説明していて後は自分でやってね、という本が好み
  • 分厚くて記述の粒度が細かい本は苦手
  • 文字より図やグラフを多用した説明を好む

自作OS本

30日でできる! OS自作入門

この界隈で一番有名な本。通称「30日本」。ブート処理を実装して画面を出してその他諸々やって、後は好きなようにしてね!というやつです。この本当に好きなようにした人が多くて本書をきっかけとして多数のオレオレOSが生み出されました。

本の中のかなり早い時期にWindowsのような画面を出して見た目に訴えようとしたり懇切丁寧な書き方にしていたりと、「なんとか最後まで読んでもらおう」という気配りがされていますので、やる気さえあれば挫折率は低いかと。この手の本は「書いてることは合ってるし、これを読み通せばOSを作れるようになるんだろうけど読み通すのが非常につらい」というものが多いので、読んだ当時は非常にびっくりしました。本書を小学生のときに読んでそのままOSオタクになった人たちもいるので小学生でも読めるのかもしれません。

長所はそのまま短所にもなります。いわゆる世間一般でいうOSよりかなり機能が絞り込まれているので、この本を読んだ後は他の本によってさらにステップアップを目指すことになるでしょう。

12ステップで作る組込みOS自作入門

その名の通り組み込みOSを作るための本です。ネット経由で買える安い組み込みボード上に簡単なOSを書いています。作ったときの見た目の派手さは30日本に軍配が上がりますが、こっちのほうが一般にイメージされているOSに近いです。「コンソールに文字出せた!」ということで喜べる人はこっちのほうがいいかもしれません(私は30日本よりもこっちのほうが好きです)。

筆者は本書を見たときにPC上に簡単なOSを実装できる程度の知識はあったものの、それ以外については全く知識が無かったので、「なるほど組み込みボードはPCとこんな風に違うのね」と非常に興味深く読んだと記憶しています。

オペレーティングシステム 第3版

いわゆるタネンバウム本です。5000行くらいでUNIX、Linuxっぽいカーネルを実装しています(「Linuxっぽい」とかいうとタネンバウム先生に怒られそうですが、読者目線であえてこう書いています)。OSとは何であるか、昔はこうであったなどのトリビアも非常に楽しめました。ただしけっこう記述がお堅いのと物理的にデカいのが難点です。

真面目に読みこなすと自作カーネルの上でUnix系OSのコマンドが動かせるようになるので、けっこう感動すると思います。

最後にひとつ。ネット上には「タネンバウム本は古すぎる」という記載が多々ありますが、それらは主に旧版に対する指摘です。三版の内容はけっこうモダンです。

Linuxカーネル

最初に言っておくと私が紹介する本はすべてかなり古いです。なぜなら私がLinuxカーネルの本を積極的に探してたのは数年前までで、その後はLKML(Linux開発の中心となっているメーリングリスト)を追ったり、何かあれば直接ソース見たりしてたので、新しめの本がどうかは知らないからです。ではこれから紹介する本が役立たないかというと決してそうではないと思います。たしかに実装がガラっとかわってしまっているものもあるのですが、変わっていないところも多々あるので、これらは現在のカーネルを理解するのにも非常によい助けになるはずです。

Linux Kernel Development

カーネルとは何か、カーネル開発とは何か、ユーザプログラム開発と何が違うのかをざっと説明した後にLinuxの実装について細かくソースの説明ではなくコアとなる構造体やロジックについて述べています。平易で読みやすくてそれほど分厚くないというのもポイント高いです。

わたしはこの本でLinuxカーネルに入門しました。カーネルとは何かというのを概念的にはざっと知っていたものの具体的にはどんなものかわかっていなかった、という本記事の読者のような状態で読んだところ、十分に理解できたと記憶しています。とてもいい本です。

詳解Linuxカーネル

世間的に「Linuxカーネルといえばこれ」という本。いろんなことを事細かに説明してあるので、概要より詳細を知りたいという人にはいいと思います。まじめに前から順番に読むというよりは「この関数は何をするためのものだろう」と目次を引いて調べる…というように辞書的に使うのがよいかもしれません。

細かいところはどうでもいいという人はソースを一行一行説明しているようなところをさくっと読み飛ばすと実はそんなに読むのに時間はかかりません。

Linuxカーネル2.6解読室

説明の粒度的にはLinux Kernel Developmentと詳解Linuxカーネルの間にあるような本です。個人的にはLinux Kernel Development, Linuxカーネル2.6解読室、詳解Linuxカーネルの順番で読むとよいと思います。

私は駆け出しのカーネルエンジニアのときにずいぶんと本書のお世話になりました。最大の問題は絶版になっているのか新刊が手に入らないことでしょう。中古高い。

おわりに

これまでに述べたものはあくまで数年間この手の本を真面目に読んでいない筆者が良いと思ったものなので、今はもっといいのがあると思います。「わたしはこの本が好きだ!」とかいうのがあればコメント欄に書いていただけると私やこの記事を見た人が喜ぶかもしれません。一つ確実に言えるのは、少なくともLinuxカーネルについては現在(昔もだけど)日本語より英語の情報が圧倒的に多いことです。まじめに取り組みたいなら英語を恐れるなかれ、です。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Raspberry Piでi2c-gpioを使ってみる

i2c clock stretchingとは?

I2C通信では、マスターデバイスがクロック速度を決定します。
ただし、I2Cスレーブがマスターによって指定されたクロック速度と連携できず、少し遅くする必要がある状況があります。これは、クロックストレッチングと呼ばれる方法によって行われます。

I2Cスレーブは、バス速度を下げる必要がある場合にSCLをLowにholdします。マスターは、クロック信号をHigh状態にした後、クロック信号を実際に読み出し、SCLが実際にHighになるまで待機する必要があります。

Raspberry Piに使われているBroadcomのSoCのバグで正常に動作しません。センサーをはじめ、結構Clock Stretchingは使われているので、どうにかしないとI2Cがまともに使えません。
http://www.advamation.com/knowhow/raspberrypi/rpi-i2c-bug.html

回避方法としては
+ I2Cのクロックを下げる
+ i2c-gpioを使う
の2点となります。今回はi2c-gpioを使って回避してみます。

i2c-gpioとは

GPIOのbitbang機能を使ってI2C通信を行うものです。raspbianなどではすでにドライバが準備されており、適切に設定することで使用することが可能になります。

設定方法

具体的にはREADMEに書いてある通りになります。

Name:   i2c-gpio
Info:   Adds support for software i2c controller on gpio pins
Load:   dtoverlay=i2c-gpio,<param>=<val>
Params: i2c_gpio_sda            GPIO used for I2C data (default "23")

        i2c_gpio_scl            GPIO used for I2C clock (default "24")

        i2c_gpio_delay_us       Clock delay in microseconds
                                (default "2" = ~100kHz)

すでにGPIO2,3を使ってI2Cデバイスをくっつけたけど、i2c-gpioに切り替えたい場合、config.txtに以下の設定を行うことで使用可能になります。

標準のI2Cを無効化(下記の行をコメントアウト)

config.txt
#dtparam=i2c_arm=on

以下の行を追記してi2c-gpioを有効化します。

config.txt
dtoverlay=i2c-gpio,bus=1,i2c_gpio_sda=2,i2c_gpio_scl=3,i2c_gpio_delay_us=2

これでSoCのI2Cコントローラではなく、i2c-gpioのドライバを使ってアクセスすることが可能になります。
正常に起動したら、i2cdetectを使って正常に通信できていることを確認できればOKです。

デバイスツリーにデバイスを登録する

デバイスツリーを使ってi2cデバイスを登録したい場合、dtsに下記のように対応させたいデバイス情報を追記することでできます。
以下はRTC(RV3029)を認識させる例です。

arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
// Overlay for i2c_gpio bitbanging host bus.
/dts-v1/;
/plugin/;

/ {
        compatible = "brcm,bcm2835";

        fragment@0 {
                target-path = "/";

                __overlay__ {
                        i2c_gpio: i2c@0 {
                                reg = <0xffffffff>;
                                compatible = "i2c-gpio";
                                gpios = <&gpio 23 0 /* sda */
                                         &gpio 24 0 /* scl */
                                        >;
                                i2c-gpio,delay-us = <2>;        /* ~100 kHz */
                                #address-cells = <1>;
                                #size-cells = <0>;

                            rv3029c2@56 {
                                compatible = "rv3029c2";
                                reg = <0x56>;
                            };

                        };
                };
        };

        fragment@1 {
                target-path = "/aliases";
                __overlay__ {
                        i2c_gpio = "/i2c@0";
                };
        };

        fragment@2 {
                target-path = "/__symbols__";
                __overlay__ {
                        i2c_gpio = "/i2c@0";
                };
        };

        __overrides__ {
                i2c_gpio_sda = <&i2c_gpio>,"gpios:4";
                i2c_gpio_scl = <&i2c_gpio>,"gpios:16";
                i2c_gpio_delay_us = <&i2c_gpio>,"i2c-gpio,delay-us:0";
                bus = <&i2c_gpio>, "reg:0";
        };


};

効果はあったのか?

CSS811というセンサーでたまに出ていたエラーが見られなくなっているので、効果はありそうです。

参考:
https://qiita.com/spicemanjp/items/50474e56ddccabf02b01
https://www.kernel.org/doc/Documentation/devicetree/bindings/i2c/i2c-gpio.txt

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Chromebookにpyenvでpython3.7.4をインストールするまで

はじめに

Qiita初投稿となります。初めての海外移住&初めての転職という大きな環境の変化を経て、これを契機にアウトプットを初めていこうと思った次第です。
出だしが非常にマイナー情報ですが、こんな情報でも、だれかの役にたてばと思いながら投稿します。

背景

  • 2017年8月よりAcer Chromebook R13を愛用
  • ChromOS 69よりLinuxが動作するように
    • Python3.5.3もデフォルトでインストールされている
    • これだけでも十分だったが、折角なら最新(2019年9月時点:3.7.4)にアップデートしたい
  • 過去に「開発者モード」を利用したChromeOS開発環境構築にチャレンジしたものの、いくつかのエラーを越えることができず
    • 今回を機に再チャレンジ
    • 無事にうまくインストールできたので、備忘録の意味も含めまとめ
    • ニーズは非常に少ないだろうが、少なくともドンピシャな記事も見当たらなかったので、初投稿には良いのではないか??

環境

  • Acer Chromebook R13
  • ARM Cortex-A72 2.0GHz
  • ChromeOS: 76.0.3809.136
    • 開発者モードへは切り替えていません
  • git: 2.11.0 (標準インストール)

pyenvのインストール

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
sudo vim ~/.profile
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi

pythonインストール

  • そしていざpythonインストール
$ pyenv install 3.7.4
  • ここからはエラーとの戦い
  • それぞれのエラーと対処舌方法をのせていきます

①pythonインストールのためのCコンパイラがない

エラー configure: error: no acceptable C compiler found in $PATH
対処 $ apt-get install build-essential
参考 https://stackoverflow.com/questions/19816275/no-acceptable-c-compiler-found-in-path-when-installing-python

②zlibライブラリがインストールされていない

エラー ZipImportError: can't decompress data; zlib not available
対処 $ sudo apt-get install zlib1g-dev
参考 https://qiita.com/banaoh/items/00aea13fe045fab7e8ba

③libffi-devライブラリがインストールされていない

エラー ModuleNotFoundError: No module named '_ctypes'
対処 $ sudo apt install libffi-dev
参考 https://qiita.com/hitochan777/items/941d4422c53978b275f8

④上記対処だけでは、ワーニングがでてしまう

WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?```
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
対処 $ sudo apt-get install libbz2-dev libreadline-dev libsqlite3-dev
参考 https://qiita.com/utgwkk/items/bf282ca95f64ef7dd594

デフォルトバージョンの変更

$ pyenv global 3.6.5

pipもインストールします(参考:http://pineplanter.moo.jp/non-it-salaryman/2019/06/04/chromebook-python/)

$ sudo apt-get install python3-pip

ようやく完了!

  • 長い道のりでしたが、Google先生と皆様の記事のおかげでなんとかインストールまで漕ぎ着けられました
    • 個人的にはubuntuを初めて触ったので、良い勉強になりました!
  • Chrombookは非常に使いやすくて、開発環境が整わないことが大きなデメリットだったのですが、ubuntuを利用できるようになったことで、これから可能性が広がっていくと嬉しいです
  • 業務ではなかなかコーディングすることが減ってしまったので、プライベートで自分がほしいものをこれからちまちま作っていこうかと思います
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

サーバを公開するにあたっての種類等(オンプレ・クラウド・レンタル)

サーバー種別

※備忘録やメモとしての記事となります。

サーバエンジニアとして働いていると稼働システムの中にも
様々な種別のサーバ、(またはAWS等のクラウド)がある事を認識します。

仕事をしているうちに用語としては耳に入ってくるものの、
意味を理解していない物も多々あり、調べてみました。

どこにサーバを設置するか

運用保守の観点から、どこにある、どんなコンピュータにサーバソフトウェアをインストールするかというのは、サーバの拡張性や運用の管理のしやすさに関わる大きな問題です。

今現在様々な形態のコンピュータが存在しますが、どれを使用するにもメリットとデメリットがあります。

①運用形態
・オンプレミス=自社運用
・クラウド=クラウドサービス事業者が運用
・レンタルサーバ

②設置場所
・自社設置=トラブルシューティングしやすい
・データセンタに設置=場所の制約がない

どんなサーバを設置するか

物理サーバの種類 ラック型・タワー型・ブレード型

仮想化の導入  仮想サーバ・物理サーバ

ハードウェアスペック CPU/メモリ/ストレージ/NIC

OSの種類 Linux/Windows

サービスの提供形態 アプライアンスサーバ(単機能)・汎用型

メリット・デメリット

■オンプレミス型とクラウド

・オンプレミス型
メリット
思いどおりの構成が組める
既存のシステムと連携しやすい
トラブルの状況が把握しやすい

デメリット
設備を自分たちで調達しなければならない
コストがかかる
実運用まで時間がかかる

・クラウド型
メリット
設備の調達や構築に時間が掛からない
サーバーのスペックを適宜変更できる

デメリット
クラウド事業者が提供する範囲内でしか構成が組めない
トラブル発生時にクラウド事業者に依存しやすく、トラブルシューティングしにくい

■設置場所

・自社
メリット
サーバーに障害が起きた時、素早く対応できる

デメリット
電源設備や空調設備を自前で確保する必要がある

・データセンター
メリット
電源設備・空調設備・耐震設備等
全てが最初から揃っている

デメリット
郊外型の場合トラブルがあってもすぐに対応しにくい

・サーバの仮想化

メリット
物理的なサーバの台数を減らし、設置スペースを削減できる
サーバの電力消費を減らせる
システム管理者が管理しやすい

デメリット
ハードウェア処理をエミュレートしているのでパフォーマンスは劣化する

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

cronバックアップ

本番でcrontabが消えた

crontab -e と crontab -rは隣のキーだからね・・・

バックアップをとろう

そもそも実体はどこにあるのか

/var/spool/cron/xxx

cronでバックアップ

#####################################
# cron バックアップ
#####################################
0 4 * * 1 cp -apr /var/spool/cron/xxxx /cron_bkup/

復旧

バックアップディレクトリにある"root"をテキストで開けばフルバックアップされています
/var/spool/cron/rootを入れ替えても同じ。

備忘録

git管理+ファイルdeployも考えたけどてっとりばやかったのでコレでいいや。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む