vsftpdとは?

LinuxなどUNIX系OSでよく利用されるFTPサーバの一つ
OSに常駐するデーモンプログラムの一種で、FTPによる接続を受け付け、指定されたディレクトリ内での送受信を行うことができる

sudo yum list | grep ftp
sudo yum install vsftpd

なるほど、わかってきた

minetypeとは

$ cat /usr/share/mime/packages/freedesktop.org.xml

// 拡張子の確認
$ mimetype article.hpscript
article.hpscript:

$ sudo vi /usr/share/mime/packages/freedesktop.org.xml

  <mime-type type="application/hpscript">
    <comment>Hpscript File</comment>
    <comment xml:lang="ja">Hpscript ファイル</comment>
    <acronym>Hpscript</acronym>
    <expanded-acronym>Hpscript file</expanded-acronym>
    <glob pattern="*.hpscript"/>
  </mime-type>

// mime database更新
$ sudo update-mime-database /usr/share/mime
$ mimetype article.hpscript
article.hpscript: application/hpscript

うおおおおおおおおおおおおお
sugeeeeeeeeeeeee

HTTP_PROXY, HTTPS_PROXY, FTP_PROXYとは

HTTPプロキシは高性能なコンテンツフィルタ
Webトラフィックを検査して、ウィルス、その他の種類の侵入可能性があるコンテンツを識別する

環境変数のHTTPS_PROXYは、サーバにHTTPS接続したい時に使用するproxyの設定

HTTP_PROXYは接続先がhttp://target…
HTTPS_PROXYは接続先がhttps://target…

proxy設定はOS側からネットにアクセスする際に経由するって意味合いね

phpPgAdmin

phpPgAdminは、PostgreSQLサーバをwebブラウザ上で管理できるツール
コマンドなして操作できる

Github: https://github.com/phppgadmin/phppgadmin
Source: https://sourceforge.net/projects/phppgadmin/

### UbuntuへのphpPgAdminインストール
$ wget http://downloads.sourceforge.net/project/phppgadmin/phpPgAdmin%20%5Bstable%5D/phpPgAdmin-5.1/phpPgAdmin-5.1.tar.gz
$ tar zxvf phpPgAdmin-5.1.tar.gz
$ rm phpPgAdmin-5.1.tar.gz

### 設定
conf/config.inc.php

	$conf['default_lang'] = 'japanese';

$ php -S 192.168.56.10:8000

なるほど、なんとなくわかった。

[Apache] SSL証明書作成

$ httpd -version
Server version: Apache/2.4.37 (Red Hat Enterprise Linux)
$ sudo yum -y install openssl
$ sudo yum -y install mod_ssl

$ cd /etc/httpd/ssl/conf
$ sudo su root
# openssl genrsa 1024 > server.key
# openssl req -new -key server.key > server.csr
# openssl x509 -in server.csr -days 36500 -req -signkey server.key > server.crt

うん、OKかな

Apacheログローテーションとは?

logroteとは、ログファイルのローテーションを行うプログラム
ログファイルを別名でバックアップし、古くなったログファイルを順次削除する
apacheをパッケージからインストールした場合は、ログローテーションは自動でされる。以下のように表示されればインストールされている
$ rpm -qa|grep logrotate
logrotate-3.14.0-4.el8.x86_64

/var/log/httpd/*_log : ローテートするファイルを指定
daily: ローテーションを行う間隔を指定 daily, weekly, monthlyがある
rotate 2: 保存されるアーカイブファイルの数
missingok: missingokはログファイルがなくてもエラーにならない、nomissingokはログファイルがないとエラー
ifempty: ログファイルが空でもローテート、noifemptyは空だとローテーションしない
dateext: アーカイブされたファイルの末尾に年月日が付与される
postrotate: endscripまでのコマンドをログローテーション後に実行
/sbin/service httpd reload > /dev/null 2>/dev/null || true: httpdの再起動を行う処理。httpdが新たに作成したログファイルに記録し始める。
compress : gzipで圧縮
create 0644 hoge hoge: ローテーション後、空のログファイル作成 [パーミッション][ユーザ名][グループ名]
su root root : ローテートするユーザをrootに指定

なるほどねー 
一見複雑そうに見えるが、一つ一つ潰していくと、理解が深まるな

Apache virtualhostに記入する項目

### *.confの書き方
– Include: インクルード
e.g. Include /etc/httpd/conf/httpd.conf

– PidFile: PidFileは、サーバーがプロセスID(PID)を記録するファイル

– ScoreBoardFile: 他のプロセスから統計情報にアクセスできるようになる

– KeepAliveTimeout: 要求がなされてから接続を閉じるまでの、サーバーが待機する時間を秒数で設定。サーバーが要求を受信すると、代わりにTimeoutディレクティブが適用される。デフォルトでは、KeepAliveTimeoutは15秒に設定。

– MinSpareServers、MaxSpareServers: prefork MPMでのみ使用。着信要求の数に基づいて適切な数のスペアサーバープロセスを維持することで、 Apache HTTP サーバー が検出された負荷に対して動的に適応する方法を調整

– StartServers: 起動時に作成されるサーバー プロセス数を設定。Web サーバーがトラフィックの負荷に基づいて動的にサーバー プロセスを停止したり作成したりするので、このパラメータを変更する必要はない。 Web サーバーは、起動時に、preforkMPM 用に 8 サーバープロセスを、 workerMPM用に 2サーバープロセスを起動するように設定される。

– IfModule mod_ssl.c: mod_sslの設定。IfModuleは指定したモジュールが存在したときに処理される

– Listen: Apache がクライアントからのリクエストを受け付けるポート番号を指定するのに使用
以下のように複数指定することもできる
Listen 80
Listen 8080

– Group: サーバーがリクエストに応答する際に所属するグループ

– User:サーバがリクエストに応答する際に用いるユーザ ID

### VitualHostの書き方
– ServerAdmin: サーバがクライアントに送るエラーメッセージに含める電子メールアドレス
e.g. ServerAdmin root@localhost
– ServerName: 自分自身のホスト名を表す時に使用するホスト名とポート番号を設定
– DocumentRoot: Webから見えるメインのドキュメントツリーになるディレクトリ
– ErrorLog: エラーログを出力する場所を設定
– CustomLog: アクセスログを出力する場所, combinedはログのフォーマット
– ScriptAlias: CGI(Perl)を利用するための設定
– SSLEngine: On/OFFで、SSLを有効にするかどうかを指定
– SSLProtocol:使用するSSLプロトコルのバージョンを指定
– SSLCipherSuite: SSL機能で使用可能とする暗号種別を指定。ディレクティブに指定した暗号種別とクライアントが使用できる暗号種別との間で一致するものがあれば,SSL通信が確立されHTTPリクエストを受信
– SSLCertificateFile: Webサーバの証明書を格納したファイル名を指定。サーバ認証するためにWebサーバの証明書を先頭として,中間CA(認証局),ルートCAの順にCAの証明書を連結することができる。証明書はPEM形式。
– SSLCertificateFile: Webサーバの秘密鍵のファイル名を指定。秘密鍵のファイルはPEM形式。RSA暗号を利用した秘密鍵のファイルおよび楕円曲線暗号を利用した秘密鍵のファイルについてそれぞれ一つ指定
– SetEnvIf:クライアントからのリクエストを基に環境変数を定義

なるほど、中々いい感じ。

Apache virtualhostの書き方

/etc/httpd/conf/httpd.conf が大元となっており、/etc/httpd/conf.d/*.confを作成する。拡張子は.conf
個別のモジュールは /etc/httpd/conf.dや /etc/httpd/conf.modules.d に保存されている

<VitualHost *:80>
	ServerName any
	DocumentRoot /var/www/html
</VitualHost>
<VitualHost *:80>
	ServerName a.test
	DocumentRoot /var/www/html/site_a
</VitualHost>

– 文法テスト
apachectl configtest
– 再起動
systemctl restart httpd

/etc/httpd/conf/httpd.confを編集する方法もある

Listen 80
NameVirtualHost *:80

なるほど、設定項目を一つ一つ洗っていくしかないな。

systemdの*.serviceの書き方

ディレクトリ: /etc/systemd/system/*.service

[Unit]
Description=Load dump capture kernel
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/opt/bin/run-kexect.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Unit, Service, Installのセクションから成り立ち、Unit, Installは共通的な設定内容、Serviceはサービスを実行するため

### Unitセクション
Description: ユニットの説明
After/Bifore: 指定したユニットの実行順番。Afiter=bar.serviceの場合、bar.serviceのstart-up処理が終わるまで実行しない
Requires/Wants: ユニットの依存関係の定義 Wants=bar.service など
その他: man 5 systemd.unit

### Serviceセクション
Type: Typeには以下の5つがあり、設定がなければsimpleがデフォルトで使用される
L simple, forking, oneshot, notify, dbus
ExecStart: 実行するコマンドラインを書く
RemainAfterExit: typeがoneshotの場合は、コマンド実行後もステータスをアクティブにする

### Installセクション
WantedBy/RequiredBy: systemctl enable xxxでユニットをenableした時に、.wants, .requiredにシンボリックリンクを作る
/etc/systemd/system/multi-user.target.wants/

なるほど

OSのユーザ作成

$ less /etc/passwd

vagrant:x:1000:1000::/home/vagrant:/bin/bash
ken:x:500:100::/home/ken:/bin/bash

ユーザ名: ken
パスワード: x
ユーザID: 500
グループID: 100
コメント:
ホームディレクトリ: /home/vagrant
ユーザが利用するシェル: /bin/bash

$ sudo useradd -u 2000 -g 2000 -m -s /bin/bash hpscript
-m は ユーザ名でホームディレクトリを作成
$ cat /etc/passwd

パスワード付与
$ sudo passwd hpscript

なるほどー 理解した