- 投稿日:2020-09-18T22:33:57+09:00
zsh導入方法(.zshrcカスタマイズ付き)
長らくfishを使用していたのですが、気分転換にこの度zshに乗り換えました!
今回は、zshの導入方法と.zshrcによるzshのカスタマイズに関して記事にしていきます。こちらの記事の設定でできるようになること
- zshの強力な補完機能
- fishのような以下のシンタックスハイライト
- 文字入力
- ls時のディレクトリ・ファイル
- fishのような入力予測機能
- gitのブランチ名のシンタックスハイライト
- cd でディレクトリ移動時に自動で ls を実行
zshの導入方法
brewコマンドを使用してzshと今回使用するプラグインをダウンロードしていきます。
以下のコマンドを実行します。$ brew install zsh $ brew install zsh-completions => 補完機能の強化プラグイン $ brew install zsh-autosuggestions => 入力の補完時の予測を影で表示してくれるプラグイン $ brew install zsh-syntax-highlighting => 入力をシンタックスハイライトしてくれるプラグイン上記を実行後
$ zshでzshを起動すると
- q
- 0
- 1
上記の3択で入力を聞かれるので
0
を選択しenter(.zshrc
を自動生成してくれる)ログインシェルを変更
$ sudo vi /etc/shells Password:上記を実行後、下記を追記して保存
/usr/local/bin/zshchsh -s /usr/local/bin/zsh上記を実行し、ログインシェルを変更
.zshrcの編集
ここまでの設定でホームディレクトリに
.zshrc
が生成されているはずです。vi .zshrc上記を実行し以下をコピペして保存
#補間 autoload -U compinit compinit #文字コード export LANG=ja_JP.UTF-8 #プロンプト autoload -U colors colors #履歴 #履歴を保存するファイル指定 HISTFILE="$HOME/.zsh_history" #履歴の件数 HISTSIZE=100000 SAVEHIST=100000 #重複した履歴を保存しない setopt hist_ignore_dups #履歴を共有する setopt share_history #先頭にスペースを入れると履歴に残さない setopt hist_ignore_space #履歴の検索 autoload history-search-end zle -N history-beginning-search-backward-end history-search-end zle -N history-beginning-search-forward-end history-search-end bindkey "^P" history-beginning-search-backward-end bindkey "^N" history-beginning-search-forward-end #cdの設定 #ディレクトリ名だけで移動する。 setopt auto_cd #自動でpushdする setopt auto_pushd #pushdの履歴は残さない。 setopt pushd_ignore_dups #ターミナルのタイトル case "${TERM}" in kterm*|xterm) precmd() { echo -ne "\033]0;${USER}@${HOST}\007" } ;; esac # コマンドミスを修正 setopt correct # 補完の選択を楽にする zstyle ':completion:*' menu select # カレントディレクトリに候補がない場合のみ cdpath 上のディレクトリを候補に出す zstyle ':completion:*:cd:*' tag-order local-directories path-directories #cd は親ディレクトリからカレントディレクトリを選択しないので表示させないようにする (例: cd ../<TAB>): zstyle ':completion:*:cd:*' ignore-parents parent pwd # 補完候補をできるだけ詰めて表示する setopt list_packed #色の設定 export LSCOLORS=Exfxcxdxbxegedabagacad # 補完時の色設定 export LS_COLORS='di=01;34:ln=01;35:so=01;32:ex=01;31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30' autoload -U colors ; colors ; zstyle ':completion:*' list-colors "${LS_COLORS}" #alias case "${OSTYPE}" in freebsd*|darwin*) alias ls="ls -GF" ;; linux*) alias ls="ls -F --color" ;; esac #w3mでALC検索 function alc() { if [ $# != 0 ]; then w3m "http://eow.alc.co.jp/$*/UTF-8/?ref=sa" else w3m "http://www.alc.co.jp/" fi } #cdを打ったら自動的にlsを打ってくれる関数 function cd(){ builtin cd $@ && ls; } #その他 #キーバインド bindkey -e #ビープ音ならなさない setopt nobeep #エディタ export EDITOR=emacs #改行のない出力をプロンプトで上書きするのを防ぐ unsetopt promptcr #個別設定を読み込む [ -f ~/.zshrc.mine ] && source ~/.zshrc.mine source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh # git設定 autoload -Uz vcs_info setopt prompt_subst zstyle ':vcs_info:git:*' check-for-changes true zstyle ':vcs_info:git:*' stagedstr "%F{yellow}!" zstyle ':vcs_info:git:*' unstagedstr "%F{red}+" zstyle ':vcs_info:*' formats "%F{green}%c%u[%b]%f" zstyle ':vcs_info:*' actionformats '[%b|%a]' # ----------------------------- # Prompt # ----------------------------- # %M ホスト名 # %m ホスト名 # %d カレントディレクトリ(フルパス) # %~ カレントディレクトリ(フルパス2) # %C カレントディレクトリ(相対パス) # %c カレントディレクトリ(相対パス) # %n ユーザ名 # %# ユーザ種別 # %? 直前のコマンドの戻り値 # %D 日付(yy-mm-dd) # %W 日付(yy/mm/dd) # %w 日付(day dd) # %* 時間(hh:flag_mm:ss) # %T 時間(hh:mm) # %t 時間(hh:mm(am/pm)) # PROMPT='[%n][%c]'\$vcs_info_msg_0_' $ ' PROMPT='%B%F{32}~/%C%f'\$vcs_info_msg_0_' $ ' #'di=01;34:ln=01;35:so=01;32:ex=01;31:bd=46;34:cd=43;34:su=41;30:sg=46;30:tw=42;30:ow=43;30' precmd(){ vcs_info }上記保存後、
source .zshrcで設定を反映させる。
補足
.zshrc
を編集することで、自分好みにzshをカスタマイズできます。※ シンタックスハイライトの色や、aliasの設定等もいじるともっと使いやすいかもしれません。
是非いろいろ試してみてください。
- 投稿日:2020-09-18T15:56:31+09:00
【勉強中の新入社員】 これからネットワーク構築に使いそうなLinuxコマンドをまとめてみる
勉強中の新入社員マルボロ・ダブルバーストです。
最近取り扱っているコンビニが減少気味で悲しんでおりますが、何とか形に残したくて記事を残すことにしました。
昨日はローソンでダブルバースト5を2箱買えました。
喫煙量は1日1~5本なので、しばらくはこれで保てそうです。
切れてるときは仕方なくパープルも吸っていますが、これもなかなか見当たらず…
寂しいものです。では、個人的にこれからネットワーク構築で使いそうなLinuxのコマンドをまとめてみます。
ど素人なので自分がこれから使いそうなコマンドは書きます。
後々実際使ってみた結果とか詳細書いていきたいとは思います。
個人のまとめに近いものになると思いますが、よろしければ助言などコメントお願いします。とにかく集めてみる
サーバ時間
data システムクロックの日時表示
/sbin/hwclock ハードウェアクロックの日時表示su - // 環境引継ぎなし・管理者権限
Password:
ntpdate ntp_server // NTPサーバにシステムクロック同期
hwclock --systohc // システムクロック基準ハードウェアクロック同期ntpd // クロック同期の動作状況確認
ルーティングテーブル
/sbin/route // ルーティングテーブル表示
netstat -r // ルーティングテーブル表示Destination : 対象ネットワーク・ホスト
Gateway : ゲートウェイ機器のIPアドレス
Genmask : 対象ネットワークのサブネットマスク
Flags : U 経路有効 G ゲートウェイ使用 H ターゲットはホスト R 回復される動的経路
D 動的設定 M 変更 A addconf設定 C キャッシュのエントリー ! 拒否する経路
Metric : ターゲットの距離(ホップ数)
Ref :ルート参照数
Use : 経路の参照回数(route -F, -Cの数)
Iface : 使用するインタフェースIP
/sbin/ifconfig eth0 // interfaceName eth0の情報確認
su - // 管理者権限
ifconfig interfaceName [inet ipadress] [netmask mask] // ipAdress subnetMask 設定
ifconfig interfaceName up // インタフェース有効化
ifconfig interfaceName down // インタフェース無効化
- 投稿日:2020-09-18T14:19:48+09:00
TeratermでSSH接続時の公開鍵認証を設定する
はじめに
サーバーについてあまりにも知識が無さ過ぎたので、「さくらのVPS」でVPSサーバーを借り、実際に触ってみることにしました。「公開鍵認証」の仕組み・やり方がよくわからずかなり苦戦したので、記録も兼ねてここにまとめます。
環境
・さくらのVPS
・CentOS Linux release 7.8.2003公開鍵認証とは
サーバーへのログインをパスワード認証で行うと、パスワードが割れれば第三者がログインできるので危険だが、公開鍵認証を使えば、パスワードを使わず、安全にログインすることができる。
公開鍵認証は、公開鍵と秘密鍵のペアを生成・使用することで行われる。二つの鍵には以下の特徴がある。・秘密鍵がないと署名が作れない
・公開鍵で(対応した秘密鍵による)正しい署名かどうか検証できるクライアント側で公開鍵と秘密鍵を生成した後、公開鍵は接続先サーバーに登録し、秘密鍵はクライアント側のみが保管する。ログイン時、サーバーに登録されている公開鍵と、クライアントが提示した秘密鍵が適合すれば、ログインが成功する。
実際の手順
公開鍵・秘密鍵の生成
ここからは、「Tera Term」を使用してやっていきます。TeraTermは https://ja.osdn.net/projects/ttssh2/ からダウンロードできます。
(1)「TeraTerm」の設定メニューの「SSH鍵生成」をクリックする。
(2)以下の画面が表示されるので、「生成」をクリックする。
(3)「生成」を実行すると画面下部の「パスフレーズ」、「コメント」を入力できる状態になる。(パスフレーズはログイン時、秘密鍵を使用する際に入力を求められる。一応空欄でも生成は可能。)
(4)最後に、画面下部の「公開鍵の保存」「秘密鍵の保存」をそれぞれクリックして、鍵を保存する。
※ 「id_rsa.pub」が公開鍵、「id_rsa」が秘密鍵。
公開鍵の登録
(1)公開鍵をサーバー側に登録する。TeraTermでサーバーにログインし、「id_rsa.pub」をTeraTermウィンドウ上にドラッグ&ドロップする。以下のウィンドウが表示されるので、任意のフォルダを設定して「送信」ボタンを押す。
(2)公開鍵をサーバー内のディレクトリに送ったが、まだ登録はできていない。以下のコマンドで、公開鍵を~/.ssh/authorized_keys
ファイルに登録する。$ cat id_rsa.pub >> .ssh/authorized_keys
authorized_keys
のアクセス権を変更する。(所有者以外がアクセスできないようにする。)$ chmod 600 .ssh/authorized_keys以上で鍵の登録は完了。SSH認証画面で、
RSA/DSA/ECDSA/ED25519
にチェックを入れ、生成した秘密鍵を指定する。それでログインできればOK。
パスワード認証を無効にする
最後に、パスワードではログインできないよう設定を変更する。
以下のコマンド入力して/etc/ssh/sshd_config
ファイルの編集画面を開く。# vim /etc/ssh/sshd_configこのファイルの以下の部分を変更する。
PasswordAuthentication yes → PasswordAuthentication no変更後ファイルを保存したら、設定を再読込する。
# systemctl reload sshd.service
※ 鍵認証の設定がうまくいってないと、パスワード認証を無効化した時点でTeraTermからはログインできなくなる。その場合はVNCコンソールからログインして/etc/ssh/sshd_config
の変更箇所を元に戻す。
- 投稿日:2020-09-18T11:41:30+09:00
[sed] macOSでもLinuxでもsedを使ってtab文字を置換する
要約
ASCIIコードを用いることで、macOSでもLinuxでも同じ書き方でtab文字を置換できるようになります。
TAB="$(printf '\\\011')" printf "hoge\tfuga\n" | sed "s/${TAB}/,/g"
sed
のOS依存 (BSD sed vs GNU sed)
sed
の使用例として、タブ区切りをコンマ区切りにする下記のスクリプトをよく用いていました。# Linux $ printf "foo\tbar\n" foo bar $ printf "foo\tbar\n" | sed "s/\t/,/g" foo,barしかしの方法ではmacOSではうまく置換できません。
# macOS $ printf "foo\tbar\n" foo bar $ printf "foo\tbar\n" | sed "s/\t/,/g" foo bar # <-変わっていない!どうやらこの違いはmacOSは
BSD sed
で、LinuxはGNU sed
を使用していることに起因するようです。
BSD sed
でタブ文字置換をどうするかついて、過去のQiita記事にございました(同じタイトルですが、違う記事です)
しかし上記事の方法は使用状況が限られるため、もう少し汎用性を持ちたいと思っていたところ、次の記事がございました。
上記事では以下のようにASCIIコードを使ってLF(改行)を表現していました。
LF=$(printf '\\\012_') LF=${LF%_} echo "hogehoge\nfoo\nbar" | sed 's/\\n/'"$LF"'/g'この方法はそのままタブ文字に応用できるのでは、と思って検証したところ、無事に動作しました。
# ASCIIコードで水平タブ(HT)は011です TAB="$(printf '\\\011')" printf "hoge\tfuga\n" | sed "s/${TAB}/,/g"これでmacOSでもLinuxでも、同じ書き方でtab文字を置換できるようになりました。
検証環境
# macOS - OS: Catalina 10.15.6 19G2021 x86_64 - Kernel: 19.6.0 - Shell: zsh 5.7.1 # Linux - OS: Linux Mint 20 x86_64 - kernel: 5.4.0-47-generic - shell: bash 5.0.17
- 投稿日:2020-09-18T03:14:23+09:00
Oracle Linux 8にApache HTTP ServerとWildflyを構築
この記事の概要
OCIインスタンス上Oracle Linux 8にApache HTTP ServerとWildfly(JBossAS)をインストールする。
前提
- OS: Red Hat Enterprise Linux release 8.2 (Ootpa)
- Java: openjdk version "1.8.0_265"
- Apache HTTP Server: Apache/2.4.37 (Oracle Linux)
- Wildfly: Release: 12.0.3.Final
- 断りがない場合コマンドは
root
ユーザで実行していますWildflyの構築
1. JDKのインストール
yum install -y java-1.8.0-openjdk.x86_642. wildflyユーザの作成
groupadd -r wildfly useradd -r -g wildfly -d /opt/wildfly -s /sbin/nologin wildfly3. WildflyのDL&展開
wgetするURLは適宜お好みで。
cd /opt wget https://download.jboss.org/wildfly/20.0.1.Final/wildfly-20.0.1.Final.zip unzip -q wildfly-20.0.1.Final.zip ln -s wildfly-20.0.1.Final wildfly4. Wildfly起動確認
sh /opt/wildfly/bin/standalone.sh 2020-09-15 09:47:48,958 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 20.0.1.Final (WildFly Core 12.0.3.Final) started in 13956ms - Started 314 of 580 services (370 services are lazy, passive or on-demand)無事起動したようです。Ctrl+Cで停止します。
5. systemdデーモン起動させる
デーモン起動用のスクリプトはすでに用意されているので配置するだけですぐにデーモン起動できるようになります。
mkdir -p /etc/wildfly cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/ vi /etc/wildfly/wildfly.conf定義内容は必要に応じて編集してください。私はバインドアドレスを
0.0.0.0 -> 127.0.0.1
に変えました。cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/ chmod 744 /opt/wildfly/bin/launch.sh cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/ chown -R wildfly /opt/wildfly*systemctl daemon-reload systemctl start wildfly systemctl enable wildfly6. Wildfly管理ユーザの作成
管理コンソールからWildflyの設定をいじれるように管理ユーザを設定しておく必要があります。
cd /opt/wildfly/bin ./add-user.sh細かくは割愛しますがプロンプトに従ってManagement Userを追加してください。
詳しくは公式のドキュメントへ。Apache HTTP Serverの構築
1. Apache HTTP Serverのインストール
yum install -y httpd2. セキュリティ対策
デフォルト設定のままだとセキュリティ上リスクがあるため是正しておきます。
デフォルトコンテンツの削除
通常公開しないウェルカムページなどの不要コンテンツは極力排除します。
cd /etc/httpd/conf.d mv welcome.conf welcome.conf.org mv autoindex.conf autoindex.conf.orgディレクトリ内容一覧表示機能の無効化
vi /etc/httpd/conf/httpd.conf #Options Indexes FollowSymLinks Options FollowSymLinksTRACEメソッドの無効化
XST対策としてTRACEメソッドを無効化します。
vi /etc/httpd/conf/httpd.conf # ファイル末尾に追記 TraceEnable offバージョン情報表示機能の無効化
HTTPレスポンスヘッダにWebサーバのバージョンを含まないようにします。
vi /etc/httpd/conf/httpd.conf # ファイル末尾に追記 ServerTokens ProductOnly ServerSignature offフレーム内ページ表示を同一ドメイン内のみに許可する
クリックジャッキング対策として、HTTPレスポンスヘッダにX-Frame-Optionsヘッダを追加します。
# 新規にファイル作成 vi /etc/httpd/conf.modules.d/headers.conf # ファイル末尾に追記 Header append X-FRAME-OPTIONS SAMEORIGINApache HTTP ServerとWildflyの連携
Apache HTTP ServerへのリクエストをWildflyへ引き込みます。
1. リバースプロキシの設定
80番ポートへのアクセスを8080番ポート(WildflyのHTTPリスナ)へ向けます。
# 新規にファイル追加 vi /etc/httpd/conf.modules.d/wildfly.conf <VirtualHost *:80> ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://example.net/ </VirtualHost>2. 定義チェック&再起動
ここまで設定できたら定義ファイルをテストしてApache HTTP Serverを再起動します。
httpd -t systemctl restart httpd動作確認
http://example.com のように、シンプルに80番ポートにアクセスしてみて、Wildflyのウェルカムページが見えれば成功です。
まとめ
OCIのLBでSSLに対応しており、バックエンド側通信はHTTPで構築してみました。Web/APサーバでSSL化しようとすると複雑になるのでLBで終端できるのはいいかんじです。