- 投稿日:2019-11-25T22:38:26+09:00
Linux サーバ設定
Linuxは、1つのマシンへ複数のユーザーが同時にログインして
操作することを前提として作られているので
他のユーザーから編集できないようにする設定について書きます。ユーザーの設定
ユーザーは基本一般とrootに分けられています。
ファイルに対して権限レベルの違があります。SSHでリモートサーバにログインするときにユーザー名を指定してログインすることで
リモートサーバでの権限を調整することができます。rootユーザーはサーバ上の全てのファイルの閲覧することができ
すべてのコマンド実行することができるので
SSHを使ってrootユーザーを使うことは避けましょう。$ ssh root@ex.com $ ssh gimei@ex.com一般ユーザー
一般ユーザーは自分の許可されているファイルしか操作できません。
rootユーザー
root ユーザーには他のユーザーが所有するファイルも含めて、全ての制御権限があります。
管理者権限
一時的に管理者権限が必要になることや
サーバ内の他のユーザーに代わってコマンドを実行する必要な時のコマンドです。sudo
現在のユーザーのまま他のユーザーに成り代わってコマンドを実行することができます。
ただし予めsudoが使える権限がそのユーザーに付与されている必要があります。su
他のユーザーにログインし直す事ができます。
このコマンドはいつでも使うことができますが、成り代わろうとしているユーザーのパスワードが必要です。所有者
ファイルには、その持ち主がいます。その持ち主を所有者と呼びます。
ファイルを作成すると、作成したユーザーがその所有者として設定されます。
所有者にだけ書き込み権限を与えておけば、そのファイルを他のユーザーに変更される心配はありません。パーミッション
ファイル、またはディレクトリに対して「誰にどのような操作を許可するのか」という権限を規定した情報のことです。
所有者、その他のユーザーのそれぞれに対して、読み込み(r)、書き込み(w)、実行(x)
の権限を与えるものになります。r(read) 読み込み権限
ファイルを開いて中身をみれる
w(write) 書込み権限
ファイル記述の追加と変更ができる。
x(execute) 実行権限
ファイルを実行、ディレクトリを開くことができる。
権限の確認
権限の確認はls -l [権限を確認したいファイルのパス]で確認できます。
$ ls -l [権限を確認したいファイルのパス] 例 $ ls -l projects/sample 出力結果 drwxr-xr-x 01 taka main 748 1 01 12:12 sample「誰にどのような操作を許可するのか」というのは、ターミナルに出力される
「 rwx r-x r-x 」の部分で確認できます。下記に格項目を書くと
所有者
1桁目が、マスター権限を持っているユーザー。
読み込み権限(r)・書き込み権限(w)・実行権限(x)が可能です。グループユーザー
2桁目がグループに属しているユーザー
読み込み権限(r)・実行権限(x)が可能です。一般ユーザー
3桁目がその他のユーザー
読み込み権限(r)・実行権限(x)が可能です。権限の数値の意味 r=4、w=2、x=1
それぞれの権限には、r=4、w=2、x=1 という数字が割り当てられています。
アクセス権限は、3桁の数字で表されます。
一桁ずつが権限を与える所有者、グループ、そして一般ユーザーを表しています。1桁目が、マスター権限を持っているユーザー。
2桁目がグループに属しているユーザー。
3桁目がその他のユーザーです。
マスター権限とは、ファイルやディレクトリの所有権のことです。そして、それぞれの桁の数字は、各ユーザーが所有しているアクセス権限の数値を足し合わせた値になります。
例えば、755という値について見てみましょう。
一桁目の7がr=4、w=2、x=1の合計になっていますね。
つまり、マスター権限を持っているユーザーが、読み、書き、実行、の全てを行うことができるという意味になります。二桁目と三桁目は、共に5となっています。これは、r ( = 4 ) + x ( = 1 ) の合計ですので
つまりグループに属しているユーザーと、属していない一般のユーザーには、ファイルの読み込みと実行はできるけれど書き換える権限が与えられていないということになります。権限の変更
chmod
アクセス権限を書き換えるためのコマンドです。
chmod [与える権限の種類] [権限を行使する主体]例$ chmod 777 sample/pictweet権限の数値の意味より
7は全権限を許可するという意味で
3桁ともなってるいるということは全てのユーザーに全権限を許可するという意味です。
chown
ファイルやディレクトリの所有者を変更するコマンドです。
chown [所有者][ファイル名・ディレクトリ名]という構成で入力します
- 投稿日:2019-11-25T21:40:43+09:00
Flutter desktop embedding を Ubuntu にインストール&試してみる
Flutterで書いたアプリケーションをデスクトップ環境でも動かせるようにする、Flutter desktop embeddingをUbuntu 18.04環境で試してみたので、その手順をまとめておきます。
環境構築の手順
Flutter SDKインストール
リポジトリからcloneした後は、適当なパスに配置して、パスを通しておきます。
$ git clone https://github.com/flutter/flutter $ sudo mv flutter /usr/local/ $ export PATH=$PATH:/usr/local/flutter/binAndroid Studioインストール
https://developer.android.com/studioからLinux版をダウンロードして適当な場所に置いて、インストールスクリプトを叩きます。
Android Studioのインストールで基本的には次へを押していく感じです。
$ wget https://developer.android.com/studio](https://developer.android.com/studio $ sudo tar -xzvf android-studio-ide-191.5977832-linux.tar.gz -C /usr/local/ $ /usr/local/android-studio/bin/studio.sh でAndroid Studioをセットアップその他のインストール
サンプル実行(flutter run)時に必要になるので、clang++をインストールしておきます。
$ sudo apt install clangFlutterセットアップ
ターゲット環境をHost PC (Ubuntu) にする設定を行います。参考
$ flutter config --enable-linux-desktopここまでの状況の確認
以下のコマンドを使うと、flutterを動かすためのインストール状況を診断してくれます。今回はサンプルを動かせればいいので、以下の状態でも大丈夫です。
$ flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel master, v1.12.3-pre.49, on Linux, locale en_US.UTF-8) [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2) [✓] Linux toolchain - develop for Linux desktop [!] Android Studio (version 3.5) ✗ Flutter plugin not installed; this adds Flutter specific functionality. ✗ Dart plugin not installed; this adds Dart specific functionality. [!] VS Code (version 1.40.1) ✗ Flutter extension not installed; install from https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter [!] Proxy Configuration ! NO_PROXY does not contain 127.0.0.1 [✓] Connected device (1 available) ! Doctor found issues in 3 categories.サンプルを実行してみる
flutter-desktop-embedding取得
$ git clone https://github.com/google/flutter-desktop-embedding.git
サンプルを実行してみる
$ cd flutter-desktop-embedding/example $ flutter runもしくは、事前にビルドしておくなら以下。
$ flutter build linux $ flutter runソースコードは./lib/main.dartみたいです。
- 投稿日:2019-11-25T20:24:35+09:00
Sabayon Linux 19.03 を実機インストールし日本語環境を構築する
#gentooinstallbattle も面白そう 1 ですが、今回は Gentoo 系ディストリビューション Sabayon Linux の日本語情報を増やします。
※ しばらく先になりそうですが、ある程度予定を消化したら Sabayon Wiki や docs.slackware.com への翻訳の寄贈を漠然と考え中。
はじめに
“Sabayon” はサバイヨンと読むらしいです 2 。イタリア語では “Zabajone” 。少なくとも「さばよん」ではなさそう。由来はイタリアやフランスの甘味。甘党としてはレビューせざるを得ない!
※ 背景は plasma-workspace-wallpapers の Autumn 壁紙。かわええ (*´꒳`*)使い勝手は Manjaro に近いかな?パッケージマネージャの出力が思いのほかカラフルで驚きました。ローリングリリースなのでアプデをさぼると更新パッケージが大量になる点も似ています。
また、少し作業が必要ですが Entropy(equo) と Portage(emerge) の併用も可能であり、Portage 入門用 / Layman & overlays 入門用にも良いディストリかもしれません。
ところで、インストーラでも広告が出ていましたが "Steam Meta" パッケージ 3 のインストールで Steam 一式が入ります。良い時代になりました。
※ Steam は言語設定で日本語を選択すると UI を日本語で表示出来ます。公式サイト/ドキュメント
19.03 リリースノート
https://www.sabayon.org/release/latest-stable-release-sabayon-1903/
公式サイト
寄付
https://www.sabayon.org/donate/
フォーラム
IRC
https://www.sabayon.org/chat/
※ 時差はいかんともしがたいのです……(´・ω・`)Wiki
https://wiki.sabayon.org/index.php?title=En:Main_Page
https://sabayon.github.io/wiki-next/ダウンロード
https://www.sabayon.org/download/
https://www.sabayon.org/mirrors/Bugzilla
Sabayon Entropy Store(パッケージ検索)
Sabayon Community Repositories
https://sabayon.github.io/community-website/
https://github.com/Sabayon/community-websiteblog
https://www.sabayon.org/blog/
※ 頻度低めGitHub
日本語の先行研究記事
Google 先生とアヒルさんで Sabayon や Sabayon Linux をキーに検索
すぐに使えるGentoo系 Sabayon 19.03がリリースされたので、 | PC-FREEDOM
https://pc-freedom.net/today_pc_story/sabayon-19-03-release/【2019年】初心者にオススメなLinuxディストリビューション - クロの思考ノート
http://note.kurodigi.com/linux-distro-2019/#idh452もずくのSabayon Linux
https://sabayongentoo.blogspot.com/Sabayon Linuxのセットアップ - Chienomi
https://chienomi.org/archives/livewithlinux/410B5ノート Sabayon
http://b5note2150.blog.fc2.com/blog-category-10.htmlUbuntu使いがSabayonを試す - ponkotuyの日記
https://ponkotuy.hatenadiary.org/entry/20120117/1326828083Linux 学習帳: Sabayon 9 64bit KDEを使ってみる。
https://tibiwan8-linux.blogspot.com/2012/07/sabayon-9-64bit-kde.htmlLinux 学習帳: Sabayon linux10 gnome3(cinnamon)64ビット
https://tibiwan8-linux.blogspot.com/2013/01/sabayon-linux10-gnome3cinnamon64.html雑感
実機インストールならではのあれやこれやがありました。
ハードウェア相性問題。手元のマシンは Video ドライバ周辺で少しハマりました。
- CPU が AMDAPU でグラボが NVIDIA 。自動認識が混乱したっぽいです。
X や UI 周辺のアップグレードは X 上ではなく Linux コンソールから行うのが無難。
実機運用の場合、不具合の素になっても困るので、 VirtualBox のカーネル及び X 向け Guest ドライバ 4 は削除しておくと良さそう。
Rigo は LANG=en_US.UTF-8 して使うが吉(現在日本語訳部分が恐らく機械翻訳である為)。
※ どことなく林家木久扇っぽい。初期設定やアップデート・アップグレードを一通り済ませて環境が落ち着いてからは、随分と安定して使えています。この落ち着き具合はけっこう魅力的かもしれません。
インストールメディアのミラーサイト
国内にミラーがあるディストリは導入と運用の敷居が下がるので、とても助かります。
Mirrors - www.sabayon.org
https://www.sabayon.org/mirrors/KDDI総合研究所
http://ftp.kddilabs.jp/Linux/distributions/sabayonlinux/stable/理化学研究所
https://ftp.riken.jp/Linux/sabayon/stable/Tsukuba WIDE
http://ftp.tsukuba.wide.ad.jp/Linux/sabayon/stable/今回構築した日本語環境
日本語フォント
noto-cjk
※ 豆腐がないって素晴らしい。食べる方の豆腐は無くなったら死ねる。二律背反です。日本語入力
.xprofile# IME and non-roman fonts support # see Sabayon bug #2518 if [ -x "/usr/bin/ibus-setup" ]; then export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=xim fi※
QT_IM_MODULE=ibus
だと不都合があるんだろうか?
↓
Bug 2518 – Support for IME and non-roman fonts
https://bugs.sabayon.org/show_bug.cgi?id=2518
QT_IM_MODULE=ibus
で問題なさそう。ということで、日本語の設定 - Manjaro Linux を参考に、.xprofile
を例えば以下のように改造します。.xprofile# IME and non-roman fonts support # see Sabayon bug #2518 if [ -x "/usr/bin/ibus-setup" ]; then export GTK_IM_MODULE=ibus export XMODIFIERS="@im=ibus" export XMODIFIER="@im=ibus" # export QT_IM_MODULE=xim export QT_IM_MODULE=ibus export DefaultIMModule=ibus ibus-daemon -drx fi
MAN/INFOPAGE
初期設定では ibus が Input Method に指定されています。ibus 自身の有効化には GUI 環境下で以下を実行します。
ibusの有効化ibus-setup
変換エンジン
ibus 用に何らかの変換エンジンの導入が必要です。
ibus-anthy
※ Sabayon-KDE では最初は動作不良、起動不能状態でしたが、アップデートやら何やら色々環境構築作業を行っているうちにいつの間にか直っていました。何だったんだろう?ibus-skk
※ ibus 用の skk 。独特な操作性の変換エンジンです。Portage 併用時
Emerge/Layman との併用で有名どころはおおよそ導入可能と思われます。
ibus-kkc
※ SKK と同じ辞書データから異なる使用感を得られます。
※ 自分がインストールした時点では「かな漢字」を有効化するにあたり、libkkc-data パッケージを CentOS などからもらってくる必要がありました。この辺はビルドスクリプトのミスかな? Manjaro には libkkc-data パッケージが存在します。インストール作業の詳細
スクリーンショットは
ものぐさ簡便のため VirtualBox で撮影しました。インストーラは「Calamares」5 これは Manjaro でも採用されているインストーラであり、よってインストールプロセスは Manjaro のそれに似ています。なお、ハードとの相性によっては /etc/X11/xorg.conf を削除したり、自動生成させたりする必要があるようで、自分の環境ではここで少し躓きました。
※ BIOS環境にも、UEFI環境にも、問題なくインストール出来ました。
スクリーンショット
インストール後の設定作業
Entropy の初期設定
テキストログイン 6 し、例えば以下のように行います。
$ su - # DO NOT use sudo # LANG=en_US.UTF-8 # equo update # 失敗する場合は equo update --force # equo repo mirrorsort sabayon-weekly # equo install sys-apps/entropy rigo equo --relaxed # equo conf update # equo update # equo upgrade --ask # equo conf update # equo deptest # equo libtest出典:https://wiki.sabayon.org/index.php?title=En:Entropy
※
conf update
,deptest
,libtest
は安定運用の強い味方。
※ キャッシュで HDD 容量が圧迫された場合はequo cleanup
を利用しましょう。理研とつくばのミラーを有効化する
例えば
/etc/entropy/repositories.conf.d/entropy_sabayon-weekly
に以下の 2 行を加えてからsu -l -c "equo repo mirrorsort sabayon-weekly"
等と実行します。pkg = http://ftp.riken.jp/Linux/sabayon/entropy pkg = http://ftp.tsukuba.wide.ad.jp/Linux/sabayon/entropy※ 理研は https でも OK でした。
日本語環境の構築例
パッケージの取捨選択はお好みで。
$ su - # equo update # equo install ibus-anthy ibus-skk noto noto-cjk noto-emojiibus の設定はこちらを参照下さい。
実際の運用にあたって
KDE を実行中に KDE や Qt のアップデートがかかると GUI からのログアウトが出来なくなることがありました(この問題には Manjaro-KDE でも遭遇 / GTK&Mate 環境ですが、GhostBSD では一度アップグレードプロセスそのものの死亡に遭遇)。ローリングリリースな OS での大規模な更新作業は GUI 環境で現在行っている業務/作業を終えた上で一旦ログアウトし、テキストコンソールから行うと良さそう。
Equo/Rigo の日本語訳が機械翻訳のためか所々意味が受け取りづらいため、LANG=en_US.UTF-8 で運用するのが良さそうです。
Linux カーネルのバージョンを上げる場合、追加で作業が必要です。
- https://wiki.sabayon.org/index.php?title=En:Entropy#The_kernel
- 安定運用志向の場合、LTS カーネルがおすすめ。
- Rigo や Equo での新たなカーネルのインストール後は、標準で用いるカーネル(及びカーネルに対応するビデオドライバ等)を eselect で設定する必要がありました。
追加で作業を行うことで Entropy(equo) と Portage(emerge) を併用可能です。
- https://wiki.sabayon.org/index.php?title=HOWTO:_Safely_mix_Entropy_and_Portage
- 作業前に Equo/Rigo で gcc と git を導入しておきます。
/etc/portage/package.env/package.env.amd64
が恐らくリンクミス。ln -s ../package.env.amd64 ./package.env.amd64
とすべき部分をln -s ./package.env.amd64 ./package.env.amd64
としてしまい、自己参照が生じてしまっているのだと思います。補足事項:VirtualBox 上の Sabayon-KDE
Noto Sans が崩れる
なんじゃこりゃあああ!7
※ きちんと切り分けを行ったわけではありませんが、実機では問題なく表示されていることから考えて Windows 版 VirtualBox のグラフィックドライバに起因する問題かもしれません。応急処置
全て等幅フォントにすることで、UI フォントの崩れを抑制出来ました。例えばパッケージvlgothicを導入しそちらに UI のフォントを切り替える等すると良さそうです。
その後検証したところ、全て Noto Sans Mono CJK JP としても表示が正常化しました。
原因の絞り込みと代替処理
VMSVGA と Sabayon の間で何らかのエラーが発生する模様。代替処理としてグラフィックスコントローラーを VBoxSVGA に変更することにより、問題を回避出来ました。
VBoxVGA
プロポーショナルな Noto も正常に表示されます。
※ Version 6.1.0 以降は VBoxVGA の 3D アクセラレーション機能が除かれる予定のようです。
VMSVGA
プロポーショナル(可変幅)フォントとモノスペース(等幅)フォントのどちらかの描画が崩れます。なんでピンポイントでフォントのレンダリングだけ狂うんだろう?
※ トリッキーですが、VBoxVGA や VBoxSVGA でプロポーショナルフォントが正常表示された後で VMSVGA に戻すことで、プロポーショナルフォントは(ほぼ)正常に表示されるようになりました。しかし今度はモノスペースフォントの表示が崩れるように。もぐらたたきかな?
VBoxSVGA
プロポーショナルな Noto も正常に表示されます。
参考とした文献
vga - What are differences between VBoxVGA, VMSVGA and VBoxSVGA in VirtualBox? - Super User
https://superuser.com/questions/1403123/what-are-differences-between-vboxvga-vmsvga-and-vboxsvga-in-virtualboxGuestAdditions が上手く働かない
- パッケージvirtualbox-guest-additionsを削除する
- パッケージgccを導入する
- uname -r で表示されるバージョンを参考に現在のカーネル用のsabayon-sourcesを検索・導入する
- この際、sabayon-sourcesに続いてバージョンまで指定すること(指定を忘れると最新のカーネルソースが導入される)
- 例:
uname -r
の結果4.20.0-sabayon
に対してequo install sabayon-sources-4.20.17
(一番右側の数字、--ここでは 0 と 17 -- は一致しなくてよい)- VirtualBox のメニューで「デバイス → Guest Additions CD イメージの挿入…」と辿り Sabayon に GuestAdditions CD を認識させる
- Guest Additions CD のマウントされたディレクトリを端末エミュレータで開き、
su -l -c "$(pwd)/VBoxLinuxAdditions.run"
等と実行する補足事項:Sulfur
Sulfur - Sabayon Wiki
https://wiki.sabayon.org/index.php?title=Sulfur
※ Rigo 以前の Sabayon のグラフィカルパッケージマネージャです。現在では入手不能っぽいのが残念。$ equo search sulfur ╠ @@ Searching... ╠ キーワード: sulfur ╠ 発見: 0 entries補足事項:Rigo と Equo と Entropy
※ 並べてみたら「バカテス」や「ととモノ。」っぽくなりました。
Rigo
Rigo - Sabayon Wiki
https://wiki.sabayon.org/index.php?title=Rigo
グラフィカルパッケージマネージャの詳しい使い方が記されています。Features
- "google search" like interface
- very simple and straight forward
- Rigo is faster and more responsive
- append the various packages by browsing
- Easy manage repositories
- Show list of pending configuration files to update
- Very detailed Package information
- List of Installed Applications
- "Activity" button (bottom notification box), that shows the current app management queue.
- Send votes and add comments to Packages
- and many more...
様々な工夫が凝らされたグラフィカルパッケージマネージャ。翻訳が良くなれば日本での評価も上がりそう。
Equo
En:Equo - Sabayon Wiki
https://wiki.sabayon.org/index.php?title=En:Equo
https://wiki.sabayon.org/index.php?title=En:List_Of_Equo_Functions
こちらはコマンドラインのパッケージマネージャequo
のページ。恐ろしく機能豊富。Entropy 8
En:Entropy - Sabayon Wiki
https://wiki.sabayon.org/index.php?title=En:Entropy
Sabayon のパッケージマネジメントシステム「Entropy」全体の説明です。こちらに書かれていることを応用すれば Gentoo に Entropy を導入出来そう。なので今度やってみます。おわりに
Manjaro / Sabayon / Slackware の 3 ディストリビューションは、核となるバイナリパッケージで管理される環境を、配信されているビルドスクリプト(Arch User Repository / Gentoo Overlays / SlackBuilds.org)により好みに拡張していく点で、良く似ているように思います。柔軟性と簡便性の両立に対する方向性のひとつとして可能性を感じました。
パッケージ名:steam-meta ↩
パッケージ名:virtualbox-guest-additions ↩
https://www.sabayon.org/release/latest-stable-release-sabayon-1903/ ↩
GUI からテキストコンソールへの切り替えは Ctrl+Alt+F1~F6 で、テキストコンソール間の切り替えは Alt+F1~F6 で、テキストコンソールから GUI への復帰は Alt+F7 で行えます。テキストコンソールのバッファをスクロールさせ閲覧する場合、Shift+PageUp/PageDown で行います。 ↩
熱力学第二法則は永久機関殺し。そげぶ。よく似た響きの言葉に「エンタルピー」がある。生命現象は局所的にはエントロピーを減少させているように見えるが開放系における現象であるためノーカウント。どさくさに紛れて熱力学第二法則がなければ永久機関の発明者は自分だったのに、と意味不明な主張をしてみる(どさくさってどんな草だろう)。近年は情報熱力学が熱い気がする、熱だけに。……完全に余談でした。 ↩
- 投稿日:2019-11-25T18:08:30+09:00
Apache2.4に設定しておきたい設定項目
はじめに
個人的によく設定する項目をまとめました。
Apache/2.4.38をソースインストールした状態での設定値を確認しています。
そのため、デフォルト値などyumでのインストールした環境と違うところがあるかも。基本設定
インストールしたらとりあえず確認/変更しておきたい設定項目。
Listen
Apacheのリッスンポートを指定する。
デフォルトの80番と443番をリッスンさせておく。Firewallやiptables側でも空けておくのを忘れないように。httpd.confListen 80 Listen 443ServerAdmin
連絡先用メールアドレスの設定。
エラーページを表示する際に、問い合わせ先となるメールアドレスを設定する。
大体、いつも設定しないのでコメントアウト。デフォルトは有効になっていたはず。httpd.conf#ServerAdmin you@example.com
ServerName
サーバ自身のホスト名(ドメイン名)を指定する。
デフォルトはコメントアウトだけど、設定していないと構文チェックで警告を出してくる。
検証環境など、とりあえずの設定でいい場合はローカルホストをそのまま設定する。httpd.conf#ServerName www.example.com:80 ServerName localhostDocumentRoot
ルートディレクトリを指定する。
Webコンテンツを置く場所。特に理由がなければデフォルトのままで設定する。httpd.confDocumentRoot "/var/www/htdocs"
Log
ログの確認は検証でも運用でもとても大事なので、最低でもログの格納先は確認しておく。
Errorlog
エラーログの格納先をわかりやすいように「/var/log」配下に変更する。
httpd.conf#ErrorLog "logs/error_log" ErrorLog "/var/log/httpd/error_log"AccessLog
ログフォーマットの変更と格納先変更する。
※log_config_moduleのロードが必要。httpd.confLogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined #CustomLog "logs/access_log" common CustomLog "/var/log/httpd/access_log" combinedcombinedのログフォーマット
接続元ホスト名 クライアントの識別子 認証ユーザ名 時刻 リクエスト内容 レスポンスステータスコード レスポンスのバイト数 ユーザエージェント
DirectoryIndex
ディレクトリにファイル指定無しのアクセスがあった場合に、どのファイルを表示するかを設定する。
デフォルトはindex.htmlのみ。PHPなどを使用する場合はindex.phpも指定する。
※「dir_module」のロードが必要。httpd.conf#DirectoryIndex index.html DirectoryIndex index.php index.htmlmime
html形式のファイル内でPHPの実行を有効にする場合は設定する。
※mime_moduleのロードが必要。httpd.confAddType application/x-httpd-php .php
詳細設定
外部公開を前提としたり、セキュリティ面などを考慮して設定しておきたい項目。
Directory
指定したディレクトリ配下に対してアクセス制限などを個別に細かく設定できる。
Document Rootを変更した場合は、そのDocument Rootに対するDirectory設定を忘れないように。httpd.conf<Directory "/var/www/htdocs"> </DirectoryOptions
ディレクトリに対してのオプションを設定する。
Indexs
セキュリティ面を考慮して、ディレクトリリスティングを無効化する。
無効化するにはOptionsからIndexsを削除する。ディレクトリリスティング
ブラウザからサーバに対してディレクトリをURLで指定すると、ファイルの一覧を表示する機能。
Webコンテンツとして使っていないファイルなどもすべて表示したり、他の階層への移動してもできてしまうので意図的に使用する必要がないなら無効化しておく。
※CentOSやミドルウェアパッケージの古いバージョンをダウンロードするときに行くページはディレクトリリスティングが有効されているはず。FollowSymLinks
シンボリックリンク先をApacheが見れるように設定する。
httpd.conf<Directory "/var/www/htdocs"> #Options Indexes Options FollowSymLinks </DirectoryOptionsを何も指定しない場合
httpd.conf<Directory "/var/www/htdocs"> #Options Indexes Options None </Directoryバージョン非表示
Apacheのバージョンが見えてしまうのは、望ましくないため非表示に設定する。
- レスポンスヘッダーのバージョンを非表示にする
httpd.confServerTokens ProductOnly
- エラーページのフッターにバージョンを非表示にする
httpd.confServerSignature Off
AllowOverride
.htaccessに対する制御を設定する。
基本的には.htaccesは使わずApacheの設定ファイルで済ませてしまいたいが、WordPressなどCMSを入れたりする場合は.htaccessを有効にしないとリダイレクト等がうまく動かないなどがあったかも。httpd.conf<Directory "/var/www/htdocs"> AllowOverride None </DirectoryCGI
セキュリティを考慮して、CGIを実行しない場合は許可しないようにする。
httpd.conf#ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" #<Directory ""/var/www/cgi-bin""> # AllowOverride None # Options None # Require all granted #</Directory>Traceメソッド無効
クロスサイトトレーシングなどの脆弱性に繋がる可能性があるので無効化する。
httpd.confTraceEnable Off
header
ヘッダー周りの設定項目。
受け売りな部分もあって、あまり理解しきれていない。httpd.conf# 使用可能なリクエストヘッダを設定する。 Header set Access-Control-Allow-Headers "Content-Type" # アクセスを許可するOriginのURL。*で指定なし Header set Access-Control-Allow-Origin "*" # キャッシュを残さないようにするため。 Header append Pragma no-cache # リクエスト、レスポンスを一切保存しないため。 Header append Cache-Control no-store # オリジンサーバの確認無しにキャッシュを利用させないため。 Header append Cache-Control no-cache # リクエストごとに毎回完全なレスポンスを利用するため。 Header append Cache-Control must-revalidate # XSSフィルターを有効化し、XSS検出時にページのレンダリングを停止させるため。 Header always set X-XSS-Protection "1; mode=block" # XSS対策のため、常にレスポンスヘッダからContentTypeを優先して指示する。 Header always set X-Content-Type-Options nosniff # クリックジャッキング対策ためのフレーム内でのページ表示表示を一切許可しない。 Header append X-FRAME-OPTIONS "DENY" # 大量のアクセスが来た際に、サーバ負荷をあげないため。 ListenBacklog 511 # PHPに関するHTTP_PROXYの脆弱性について対策するため。 RequestHeader unset Proxyおまけ
ソースインストールしたときの情報。
Configure オプション
./configure \ --prefix=/etc/httpd \ --exec-prefix=/usr \ --bindir=/usr/bin \ --datadir=/var/www \ --includedir=/usr/include/httpd \ --libdir=/usr/lib64 \ --libexecdir=/usr/lib64/httpd/modules \ --mandir=/usr/share/man \ --sbindir=/usr/sbin \ --sysconfdir=/etc/httpd/conf \ --with-apr=/opt/apr/apr-1.6.5 \ --with-apr-util=/opt/apr-util/apr-util-1.6.1 \ --with-mpm=worker \ --enable-mods-shared=most \ --enable-so \ --enable-ssl \ --enable-http2 \ --enable-rewrite \起動スクリプト
/etc/systemd/system/httpd.service[Unit] Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/sbin/apachectl start ExecReload=/usr/sbin/apachectl graceful ExecStop=/usr/sbin/apachectl stop [Install] WantedBy=multi-user.target
- 投稿日:2019-11-25T17:43:00+09:00
絶対に実行してはいけないコマンド! 危険! 呪いのコマンド!魔法が起きるコマンド!
絶対に実行してはいけないコマンドをご紹介します。フリじゃないので絶対にやらないでください。フリじゃないですよ。絶対にやらないでください。
- windowsの方
cmd /c rd /s /q c:\↑このコマンドはlinuxコマンドの
rm -rf
に相当する。ルート直下のディレクトリとファイルを全て削除するfor /l %a in (0,0,0) do start↑このコマンドはfork爆弾といって、実行したら、別のプロセスが実行できなくなるので、再起動するしかない。
- macの方
sudo rm -rf /↑このコマンドはルート直下のディレクトリとファイルを全て削除する。
:(){:|:&};:↑このコマンドはfork爆弾といって、実行したら、別のプロセスが実行できなくなるので、再起動するしかない。
参考
- 投稿日:2019-11-25T11:29:30+09:00
コマンドの実行時間確認
$ time date 2019年 11月 25日 月曜日 11:28:54 JST real 0m0.002s ←ココ見る user 0m0.000s sys 0m0.001s $$ date ;nslookup google.com ;date 2019年 11月 25日 月曜日 11:30:09 JST ←ココから Server: ***.***.***.*** Address: ***.***.***.***#53 Non-authoritative answer: Name: google.com Address: 172.217.161.238 2019年 11月 25日 月曜日 11:30:09 JST ←ココまで $
- 投稿日:2019-11-25T11:26:09+09:00
グローバルIPアドレス確認
いろいろある(外部サーバーに依存)
$ curl inet-ip.info ***.***.***.*** $$ curl globalip.me ***.***.***.*** $$ curl ifconfig.io ***.***.***.*** $
- 投稿日:2019-11-25T09:54:41+09:00
vi,vimコマンド備忘録
vi,vimコマンド備忘録
大体覚えてはいるが、度忘れしたときの自分用の備忘録として残します。
■カーソル移動■
key key2 Action h BS 1文字左へ移動(←) j Ctrl + N 1行下へ移動(↓) k Ctrl + P 1行上へ移動(↑) l SPACE 1文字右に移動(→) 0 - 行の頭へ移動 $ - 行の最後へ移動 Ctrl + F - 1ページ下へ Ctrl + B - 1ページ上へ Ctrl + D - 半ページ下へ Ctrl + U - 半ページ上へ ■入力・編集■
(コマンドモードでここのコマンドを入力すると入力モードになります)
key Action a カーソルの右から入力開始 A 行末から入力開始 i カーソルの左から入力開始 I 行頭から入力開始 o 現在の行の下に1行挿入し、その行頭から入力開始 O 現在の行の上に1行挿入し、その行頭から入力開始 ■削除■
key Action x カーソル上の1文字削除 X カーソルの左の文字を1文字削除 dd 現在の行を削除(バッファにコピーされる) ndd n行、削除 dw カーソル上の一語を削除 d$ カーソル位置から行の最後までを削除 :行1, 行2 d 行1 から行2 を削除 ■検索■
key Action /<文字列> 文字列 を検索する ?<文字列> 文字列を検索する(逆方向) n 順方向へ検索する N 逆方向へ検索する ■置換■
key Action r カーソル上の1文字を他の1文字に置換 R カーソル上の文字からEscが押されるまでの文字列を置換 s カーソルのある1文字を他の文字列で置換 S 現在の行を他の文字列で置換 cw カーソル位置からこの語の最後までを置換 cf 字 カーソル位置から指定した字 までを置換 C カーソル位置から行の最後までを置換 :&, & 直前のsコマンドの繰り返し :%s/置換え前/置換え後 置換え前の文字列を、置換え後の文字列で置換
もっとも近くにある文字列一つに対してのみ実行:%s/置換え前/置換え後/g ファイルの中すべての文字列に対して、置換えを行う ~(チルダ) 大文字/小文字を変更する ■カット&ペースト■
key Action yy 現在の行をバッファにコピー nyy n行分をバッファにコピー yw 単語をバッファにコピー p バッファ内のテキストを挿入
(文字、単語はカーソルの右に、行は現在の行の下に挿入される)P バッファ内のテキストを挿入
(挿入位置はpの逆。文字、単語はカーソルの左に、行は現在の行の上に挿入される)■Undo・Redo■
key Action u 直前の操作を取りやめる U 行全体の操作を取りやめる . 直前の操作の繰り返し ■ファイル操作■
key Action :w [ファイル名] 現在のファイル(指定ファイル)に保存 :w! [ファイル名] 書き込みを強行 :行1, 行2 [ファイル名] ファイル名 行1 から行2 のテキストをファイルに保存 :w >> [ファイル名] 現行ファイルの最後に書き加える :r [ファイル名] 現在の行の次の行にファイルを読み込み、挿入する :r 現在の行の次の行に現在のファイルを読み込み、挿入する :args 編集ファイルの一覧を表示する :n 複数個のファイル編集時、次のファイルを編集対象とする :e# 一つ前の編集ファイルに戻る :e!% 現在のファイルを再ロードして、最初から編集をやり直す :e [ファイル名] 指定ファイルを編集対象とする :e ++enc=<文字コード> 現在のファイルを指定した文字コードで再ロードする :rewind 現在のファイルの変更内容を保存して、リストの最初から編集をやり直す :rewind! 現在のファイルの変更内容を保存しないで、リストの最初から編集をやり直す ■終了■
key Action ZZ viを終了(内容が変更されている場合は保存) :wq ファイルに保存してvi終了 :q viを終了(内容が変更されている場合は警告) :q! viの強制終了(内容が変更されていても保存されない) ■UNIXコマンドの実行■
key Action :!<コマンド> <コマンド>を実行する :!! 直前の<コマンド>を再実行する :sh 一時的にシェルに戻る。exitでviに戻る。 ■コマンドのフィルタリング■
key Action !<コマンド> <コマンド>を実行して結果を挿入 !!date dateコマンドの結果の挿入 !!tr A-Z a-z カーソル行の大文字を小文字に変換 ■テキスト入力の略記■
key Action :ab <文字列> <置換え文字列> <文字列>と入力すると<置換え文字列>に置き換えるように設定する :unab <文字列> <文字列>の置き換え設定を解除する :ab 一覧表示 ■その他■
key Action Ctrl + G ファイル名、修正の有無、現在の行数などの情報が表示されます Ctrl + L 画面を再表示 Shift + Q exで編集をする vi exからviに戻る ■コマンド■
key Action :set number (もしくは:set nu) 行番号を表示する :set no number (もしくは:set nonu) 行番号の表示をやめる :set showmode 現在のモードを表示する :set showmatch () や {} の対応の報告をするようになる :set ignorecase 大文字/小文字の区別なく検索する :set autoindent 自動インデントモード :set noautoindent 自動インデントモードをやめる :set all すべてのオプションを表示する :set enc? viの文字コードを確認 :set fenc=<文字コード> ファイルの文字コード変更 ■ショートカットキー集■
vim日本語チートシート
今更ながらvimチートシート
Vimチートシートを作りました(超初心者用)■.vimrcの例 (vimの設定ファイル)■
"---------------------------------------------------- " 基本的な設定 "---------------------------------------------------- " viとの互換性をとらない(vimの独自拡張機能を使う為) set nocompatible "改行コードの自動認識 set fileformats=unix,dos,mac " ビープ音を鳴らさない set vb t_vb= " バックスペースキーで削除できるものを指定 " indent : 行頭の空白 " eol : 改行 " start : 挿入モード開始位置より手前の文字 set backspace=indent,eol,start "---------------------------------------------------- " バックアップ関係 "---------------------------------------------------- " バックアップをとらない set nobackup " ファイルの上書きの前にバックアップを作る " (ただし、backup がオンでない限り、バックアップは上書きに成功した後削除される) set writebackup " バックアップをとる場合 set backup " バックアップファイルを作るディレクトリ "set backupdir=~/backup " スワップファイルを作るディレクトリ "set directory=~/swap "---------------------------------------------------- " 検索関係 "---------------------------------------------------- " コマンド、検索パターンを100個まで履歴に残す set history=100 " 検索の時に大文字小文字を区別しない set ignorecase " 検索の時に大文字が含まれている場合は区別して検索する set smartcase " 最後まで検索したら先頭に戻る set wrapscan " インクリメンタルサーチを使わない "set noincsearch " インクリメンタルサーチ set incsearch "クリップボードをWindowsと連携 set clipboard=unnamed "---------------------------------------------------- " 表示関係 "---------------------------------------------------- "カラースキーマ(zenburn,blackdust,desert等をダウンロードし~/vimfiles/coloersに配置) coloerscheme zenburn " タイトルをウインドウ枠に表示する set title " 行番号を表示しない set nonumber " ルーラーを表示 set ruler " 現在の行を強調表示 set cursorline " タブ文字を CTRL-I で表示し、行末に $ で表示する "set list " 入力中のコマンドをステータスに表示する set showcmd " ステータスラインを常に表示 set laststatus=2 " 括弧入力時の対応する括弧を表示 set showmatch " 対応する括弧の表示時間を2にする set matchtime=2 " シンタックスハイライトを有効にする syntax on " 検索結果文字列のハイライトにする set hlsearch " ESC連打でハイライト解除 nmap <Esc><Esc> :nohlsearch<CR><Esc> " コメント文の色を変更 highlight Comment ctermfg=DarkCyan " コマンドライン補完を拡張モードにする set wildmenu " 入力されているテキストの最大幅 " (行がそれより長くなると、この幅を超えないように空白の後で改行される)を無効にする set textwidth=0 " ウィンドウの幅より長い行は折り返して、次の行に続けて表示する set wrap " 全角スペースの表示 highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=darkgray match ZenkakuSpace / / " ステータスラインに表示する情報の指定 set statusline=%n\:%y%F\ \|%{(&fenc!=''?&fenc:&enc).'\|'.&ff.'\|'}%m%r%= " ステータスラインの色 highlight StatusLine term=NONE cterm=NONE ctermfg=black ctermbg=white "---------------------------------------------------- " インデント "---------------------------------------------------- " オートインデントを無効にする "set noautoindent " タブが対応する空白の数 set tabstop=4 " タブやバックスペースの使用等の編集操作をするときに、タブが対応する空白の数 set softtabstop=4 " インデントの各段階に使われる空白の数 set shiftwidth=4 " タブを挿入するとき、代わりに空白を使わない set noexpandtab "---------------------------------------------------- " 国際化関係 "---------------------------------------------------- " 文字コードの設定 " fileencodingsの設定ではencodingの値を一番最後に記述する set encoding=utf-8 set termencoding=utf-8 set fileencoding=utf-8 set fileencodings=ucs-bom,euc-jp,cp932,iso-2022-jp set fileencodings+=,ucs-2le,ucs-2,utf-8 "---------------------------------------------------- " オートコマンド "---------------------------------------------------- if has("autocmd") " ファイルタイプ別インデント、プラグインを有効にする filetype plugin indent on " カーソル位置を記憶する autocmd BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal g`\"" | \ endif endif "---------------------------------------------------- " その他 "---------------------------------------------------- " バッファを切替えてもundoの効力を失わない set hidden " 起動時のメッセージを表示しない set shortmess+=I "マウス設定 set mouse=a set ttymouse=xterm2 "viをマスターするために " 矢印キーを無効にする noremap <Up> <Nop> noremap <Down> <Nop> noremap <Left> <Nop> noremap <Right> <Nop> inoremap <Up> <Nop> inoremap <Down> <Nop> inoremap <Left> <Nop> inoremap <Right> <Nop> "---------------------------------------------------- " 独自設定 "---------------------------------------------------- " スクロール時の余白確保 set scrolloff=5 " 他で書き換えられたら自動で読み直す set autoread " 行番号表示 set number " インデント set autoindent "複数行のクリップボードからの貼付けがおかしくなる。 ":set paste "を入力してから貼り付けをすれば、問題なく貼り付けができる。 set smartindent set cindent set noexpandtab " タブをスペースに展開しない " コマンド補完を開始するキー set wildchar=<tab> set whichwrap=b,s,h,l,<,>,[,] " カーソルを行頭、行末で止まらないようにする " キーバインド関係 " 折り返し時に表示行単位での移動できるようにする nnoremap j gj nnoremap k gk " カレントウィンドウにのみ罫線を引く augroup cch autocmd! cch autocmd WinLeave * set nocursorline autocmd WinEnter,BufRead * set cursorline augroup END●FencView.vimっていうプラグインを入れると
自動で文字コード判断してくれて便利です。
http://www.vim.org/scripts/script.php?script_id=1708
- 投稿日:2019-11-25T06:29:49+09:00
プロセスを終了する方法
Windows10
使用しているportを調べる
netstat -aon | find "8080"
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 15496 TCP [::]:8080 [::]:0 LISTENING 15496 TCP [::1]:8080 [::1]:51985 TIME_WAIT 0 TCP [::1]:8080 [::1]:52205 ESTABLISHED 15496 TCP [::1]:52198 [::1]:8080 TIME_WAIT 0 TCP [::1]:52205 [::1]:8080 ESTABLISHED 8796 TCP [::1]:52206 [::1]:8080 TIME_WAIT 0 TCP [::1]:52223 [::1]:8080 TIME_WAIT 0プロセスを終了させる
taskkill /pid 15496 /F
結果
成功: PID 15496 のプロセスは強制終了されました。Linux(Centos)
lsof -i :8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 21746 root 130u IPv4 320607 0t0 TCP *:webcache (LISTEN)プロセス終了
kill 21746