Debian Linux
ファイル /etc/apt/sources.list の中で lenny をsqueezeへ変更して、apt-get update -> apt-get upgrade を実行します
その後システム全体のアップグレード # apt-get dist-upgrade
Debian 6 を最新にアップデイトと現状のバックアップ
さらにパッケージの状態を確認 # dpkg --audit # dpkg -l | more などで
APTの取得先を変更 /etc/apt/sources.list ファイルを編集し squeeze を wheezy へ変更 以下の行を追加します。
deb http://mirrors.kernel.org/debian wheezy main contrib
システムの最小アップグレード # apt-get update # apt-get upgrade
その後、システム全体のアップグレード # apt-get dist-upgrade
もし 「パッケージパッケージ
」の即時設定は動作しません。詳細については man 5 apt.conf の APT::Immediate-Configure の項を参照してください というエラーが起きたら以下のコマンドを入力します。
# apt-get dist-upgrade -o APT::Immediate-Configure=0
その他アップグレードで障害が起きた場合はDebianサイトで詳細確認 ここから
※2014年1月、Debian 6 (squeeze) から7 (wheezy)へアップグレードした際に、以下の現象が起こりました。
apache2 の hppd.conf という空ファイルができていない事でapache2が起動しなかった
PHPで以下の警告が出たので、 suhosin モジュールを削除 apt-get purge php5-suhosin
Postfix起動時に警告 unused parameter: mynetwork_style=subnet が表示されたので、/etc/postfix/main.cf で mynetwork_style の行をコメントに設定してPostfix 再起動
Debian 7 を最新にアップデイトと現状のバックアップ
さらにパッケージの状態を確認 # dpkg --audit # dpkg -l | more などで
APTの取得先を変更 /etc/apt/sources.list ファイルを編集し wheezy を jessie へ変更 以下の行を追加します。
deb http://mirrors.kernel.org/debian jessie main contrib
システムの最小アップグレード # apt-get update # apt-get upgrade
その後、システム全体のアップグレード # apt-get dist-upgrade
その他アップグレードで障害が起きた場合はDebianサイトで詳細確認 ここから
Debian 8を最新にアップデイトと現状のバックアップ
アップデイトは # apt-get update # apt-get upgrade # apt-get dist-upgrade
さらにパッケージの状態を確認 # dpkg --audit # dpkg -l | more などで
APTの取得先を変更 /etc/apt/sources.list ファイルを編集し jessie を stretch へ変更 以下の行を追加します。
deb http://mirrors.kernel.org/debian stretch main contrib
システムの最小アップグレード # apt-get update # apt-get upgrade
その後、システム全体のアップグレード # apt-get dist-upgrade
reboot してアップグレードしたことを確認 $ uname -mrs $ lsb_release -a
注意事項:
Apache MySQL PHPがjessieの環境を以降できない現象が起きた場合は、モジュールの設定ファイルをバックアップし、モジュールごとに削除、インストールを行ないます。
その他アップグレードで障害が起きた場合はDebianサイトで詳細確認 ここから
aptのsources.listファイルの設定(2019年6月17日現在)
/etc/apt/sources.list
deb http://ftp.jp.debian.org/debian stretch main contrib non-free
deb-src http://ftp.jp.debian.org/debian stretch main contrib non-free
deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free
/etc/apt/sources.listファイルの設定(Debian 10.1.0 2019年10月5日現在)
deb http://deb.debian.org/debian/ buster main
deb-src http://deb.debian.org/debian/ buster main
deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main
# buster-updates, previously known as 'volatile'
deb http://deb.debian.org/debian/ buster-updates main
deb-src http://deb.debian.org/debian/ buster-updates main
既存のパッケージの状態を確認します。 sudo dpkg --audit 何も結果がなければ問題がないのでOKです。
現状の /etc/apt/sources.list で特別なレポジトリがあるか確認します。
stretch -> buster へ書き換え
sed -i -e 's/stretch/buster/' /etc/apt/sources.list
deb http://ftp.riken.jp/Linux/debian/debian/ buster main contrib non-free
deb-src http://ftp.riken.jp/Linux/debian/debian/ buster main contrib non-free
deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
deb http://ftp.riken.jp/Linux/debian/debian/ buster-updates main contrib non-free
deb-src http://ftp.riken.jp/Linux/debian/debian/ buster-updates main contrib non-free
以下のコマンド実行、apt update 実行でレポジトリの取得エラーなどがないか確認します。エラーの場合は別のレポジトリに変更します。
apt update
apt autoremove
apt clean
apt-get upgrade
apt full-upgrade
apt-get upgradeを実行後、minissdpdパッケージを使うかどうか聞いてきました。使わない設定が良いと思います。途中でminissdpdパッケージをapt purgeしました。その後upgradeを実行し、full-upgrade を実行
※参考にしたサイト:https://sysrigar.com/2020/02/22/debian%E3%82%929stretch%E3%81%8B%E3%82%8...
既存のパッケージの状態を確認します。 sudo dpkg --audit 何も結果がなければ問題がないのでOKです。
現状の /etc/apt/sources.list で特別なレポジトリがあるか確認します。
buster -> bullseye へ書き換え
sed -i -e 's/buster/bullseye/' /etc/apt/sources.list
sedコマンド実行後に deb http://security.debian.org/debian-security buiiseye/updates mainなどになっている場合は、 bullseye-security main に修正します。
deb http://deb.debian.org/debian bullseye main
deb-src http://deb.debian.org/debian bullseye main
deb http://security.debian.org/debian-security bullseye-security main
deb-src http://security.debian.org/debian-security bullseye-security main
deb http://deb.debian.org/debian bullseye-updates main
deb-src http://deb.debian.org/debian bullseye-updates main
アップグレードコマンド
apt update
apt upgrade --without-new-pkgs
apt full-upgrade
※参考にしたサイト:https://sysrigar.com/2021/08/21/debian-10-buster%E3%81%8B%E3%82%8911-bul...
/etc/apt/sources.listファイルの設定(Debian 11.1.0 2022年4月1日現在)
deb http://ftp.jp.debian.org/debian/ bullseye main
deb-src http://ftp.jp.debian.org/debian/ bullseye main
deb http://security.debian.org/debian-security bullseye-security main
deb-src http://security.debian.org/debian-security bullseye-security main
deb http://ftp.jp.debian.org/debian/ bullseye-updates main
deb-src http://ftp.jp.debian.org/debian/ bullseye-updates main
Debian 11 での non-free contribute pacakges は
deb http://ftp.jp.debian.org/debian/ bullseye main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ bullseye main contrib non-free
deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free
deb http://ftp.jp.debian.org/debian/ bullseye-updates main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ bullseye-updates main contrib non-free
bullseye --> bookworm へ書き換え
sed -i -e 's/bullseye/bookworm/' /etc/apt/sources.list
さくらのクラウドで運用する場合の /etc/apt/sources.list
deb http://ftp.jp.debian.org/debian/ bookworm main
deb-src http://ftp.jp.debian.org/debian/ bookworm main
deb http://security.debian.org/debian-security bookworm-security main
deb-src http://security.debian.org/debian-security bookworm-security main
deb http://ftp.jp.debian.org/debian/ bookworm-updates main
deb-src http://ftp.jp.debian.org/debian/ bookworm-updates main
contrib non-free-firmwareのレポジトリを追加した場合の /etc/apt/sources.list
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
deb http://deb.debian.org/debian-security/ bookworm-security main contrib non-free non-free-firmware
アップグレードコマンド
apt update
apt upgrade --without-new-pkgs
apt full-upgrade
再起動後20分程度でシステムが止まって(サスペンド)しまう現象。この現象は、デスクトップ環境をインストールした場合に影響すると思われます。インストールするデスクトップ環境によっては、設定内容がことなると思います。
参考にしたページ: https://qiita.com/ikesama200/items/f595293de82ddc9fa3f1
GUIからはサスペンド設定が変更できないので、以下のファイルを修正します。
/usr/share/gdm/dconf/90-debian-settings -> /etc/gdm3/greeter.dconf-defaults
リンク元の /etc/gdm3/greeter.dconf-defaults を編集して、最終行に追加
sleep-inactive-ac-timeout = 0
sleep-inactive-battery-timeout = 0
システムを再起動して20分でサスペンドしないか確認します。
サスペンド、スリープ、ハイバネ―トコマンド
概要: https://wiki.debian.org/Suspend
サスペンドおよびハイバネーションを無効にする場合
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
実行例(debian9):$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Created symlink /etc/systemd/system/sleep.target → /dev/null.
Created symlink /etc/systemd/system/suspend.target → /dev/null.
Created symlink /etc/systemd/system/hibernate.target → /dev/null.
Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.
上記を有効化する場合
sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target
設定した内容でシステムを有効化
systemctl restart systemd-logind.service または リブート
参考にしたサイト https://takuya-1st.hatenablog.jp/entry/2021/11/26/172528
スリープを無効にする場合
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Debian 8 からApacheのバージョンが2.4になりました。Debian 7の2.2から大幅に違います。
Apacheの設定ファイルの変更
Order allow,denyは使えないので、下記のように修正する
# Order allow,deny
Require all granted
/etc/apache2/sites-availableにある設定ファイル全ての最に「.conf」を付ける
既存の設定をバックアップし、a2dissite * で活性化されているサイト全てを非活性にする
サイトを活性化する a2ensite *
Apacheを再起動
・Groupの追加
#addgroup hogehoge
・グループIDを指定する場合は、
#addgroup --gid 1200 hogehoge
・Groupの削除
#delgroup hogehoge
・ユーザーの追加
#adduser hoge
ホームディレクトリなども作成してくれます。
またデフォルトで必要なファイルは、/etc/skel/内のファイルがホームディレクトリへコピーされます。
・UIDを指定する
#adduser --uid 1200 hoge
・グループを指定する場合。
#adduser --ingroup hogehoge hoge
・ホームディレクトリを指定する
#adduser --ingroup hogehoge --home /home/hogehoge
・システムユーザー(ログインできないユーザー)を作成する。
#adduser --system hoge
・グループを指定する場合
#adduser --system --ingroup hogehoge hoge
・ホームディレクトリを指定する
#adduser --system --ingroup hogehoge --home /var/hoge hoge
・ホームディレクトリを作らない
#adduser --system --ingroup hogehoge --no-create-home hoge
・ユーザーの削除
#deluser hoge
*ホームディレクトリは残ります。
・ホームディレクトリも同時に削除する。
#deluser --remove-home hoge
・ホームディレクトリも含む、関係する全てのファイルも同時に削除する。
#deluser --remove-all-files hoge
ユーザー"hoge"で、サウンドデバイスを利用したい場合は、"hoge"を"audio"グループに含める必要があります。
/etc/groupを直接編集する場合は、以下のようになります。
audio:x:29:hoge,hoge2
*複数のユーザーを記述する場合は、カンマで区切ります。
コマンドを利用する場合は、
#adduser hoge audio
このサイトで以下のコマンドを使って、GNONEのキーボードマッピングを新規(aa)に設定します。 ただし、日本語変換などは別途設定しないと動かないようです。 取り合えず英語モードでは使えました。
gconftool --set /desktop/gnome/peripherals/keyboard/kbd/layouts --type List --list-type String [aa]
ホスト名の名前解決で問題がある場合が多いので、 /etc/hosts ファイルを編集します。
127.0.1.1 ホスト名.localdomain ホスト名.localdomain を
127.0.1.1 ホスト名.localdomain ホスト名 に修正します。
/etc/apt/sources.List ファイルに以下のサイトから取得したサンプルを書き込み、アップデート
/etc/hosts および /etc/resolv.conf でホスト名やドメイン名の設定が間違っている場合がありますので、修正します。
Debian 6 の頃からのようですが、useraddコマンドで作成したユーザはコマンドヒストリが使えない、adduserコマンドで作成するとOKです。
参考にしたサイト: http://minus9d.hatenablog.com/entry/2017/07/19/213801
aptitudeコマンドで、改善案を探しながら、一つ前のバージョンに戻ったり、その時の状況にあわせて、数回、繰り返すと、解決する場合があります。
参考にしたサイト: http://itengine.seesaa.net/article/454359986.html
sudo apt-get update
sudo apt-get upgrade
sudo apt-get -s dist-upgrade
sudo apt-get dist-upgrade
参考にしたサイト: https://blog.serverworks.co.jp/could-not-update-due-to-apt-key-error https://qiita.com/tororoMeshi/items/07049c18f91d8eebcbdc https://gihyo.jp/admin/serial/01/ubuntu-recipe/0675
サードパーティーのAPTレポジトリパッケージを追加する時に使っていた「apt-key」コマンドは2020年8月の2.1.8から廃止予定になりました。そのため、警告がでます。
今回は、yarnレポジトリの場合で説明します。
現在のyarn GPG鍵を /etc/apt/trusted.gpg.d/ もしくは /usr/share/keyrings/ へエキスポートします。
yarn用のaptレポジトリの編集 /etc/apt/sources.list.d/yarn.list ファイルを編集し、エキスポートしたどちらかのyarn GPG鍵に書き換えます。
パッケージを更新
DebianのApacheについて
1)# a2enmod rewrite コマンドの実行
2).htaccessファイルの設定を有効にするために、 /etc/apache2/site-avaiable/default で使用するディレクトリで AlloOverride All に設定します。
その後Apache2に再起動 /etc/init.d/apache2 restart
環境 Debian GNU/Linux 4.0 以降
1) /etc/apache2/sites-avaiable にdefaultファイルを参考にして、追加するサイトの設定ファイルを作成します。
2) シンボリックリンク作成の代わりにDebianのApacheコマンドで追加作成、削除します。以下のコマンドは、 /etc/apache2/sites-enabled で実行します。
新規作成 "a2ensite サイト名" 削除の場合 "a2dissite サイト名"
3) Apacheの再読込 # /etc/init.d/apache2 reload
他の仮想ホストに干渉する可能性があるため、デフォルトの仮想ホストを無効にします。
sudo a2dissite 000-default.conf
新規作成 "a2enmod サイト名" サイト削除 "a2dismod サイト名"
mod_pagespeedを追加する場合:
Googleのmod_pagespeedサイトから最新版をダウンロード
dpkg -i mod-pagespeedモジュールファイル
もしくは
apt-get -f install mod-pagespeedモジュールファイル
確認で、/etc/apache2/mods-available と mods-enabled で pagespeed.conf pagespeed.load が設定されているか確認、もしくは e2enmod mod_pagespeed を実行して既にインストール済になっているか確認します。
その後、apache2を再起動
標準ログは、/var/log/apache2 に保存されます。 access.log error.log という名前になります。 リアルタイムで動作を調べるときには、 tail -f access.log -n 100 などでモニターでき、便利です。
.htaccess のファイル名を変更します。
/etc/apache2 にある apache2.conf で AccessFileName .htaccess という行を
コメントに設定する(読み込まないようにする)
/etc/apache2 にある httpd.conf に .htaccess の内容をコピーする。この
設定ファイルで、RewriteRuleなどを設定する。 なを、/etc/apache2/sites- avaiable/
以下の仮想ドメイン用の設定ファイルには、RewriteEngine ON を設定して下さい。
Apache2を起動時に、 using 127.0.0.1 for ServerName などのエラーメッセージが表示される場合は、/etc/apache2/apache2.conf の最後の行に、 ServerName hoge.hogedomain.com:80 を記入し、Apache2を再起動してエラーメッセージが表示されるか確認します。
DebianのOSを更新した際に、Apacheのアップデイトなど、関連ファイルが更新され、古い設定ファイルなどが残っている場合があります。 その場合は、以下のようなエラーメッセージが表示されることがあります。
apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load: Cannot load /usr/lib/apache2/modules/libphp5.so into server: /usr/lib/apache2/modules/libphp5.so: cannot open shared object file: No such file or directory Action 'configtest' faile
このようなエラーの場合は、apacheの設定ファイルなどをバックアップし、その後、ディレクトリなども削除する apt-get --purge remove apache2 を実行します。
Apache2の場合、 /etc/apache2/sites-available/default ファイルを修正し、apache2を再起動します。
修正箇所は、Options Indexes FollowSymLinks MultiViews の行で Indexes を削除します。
参考にしたサイト: https://symfoware.blog.fc2.com/blog-entry-1120.html
環境 Debian 8,9
# apt-get install openssl
# cd /etc/ssl/certs/
# openssl genrsa -des3 -out server.key 2048
任意のパスフレーズを入力
Apacheの起動のたびに、パスフレーズの入力を求められので、削除します。
# openssl rsa -in server.key -out server.key
これで秘密鍵の準備は出来ました。今度はサーバー証明書を作成します。証明書要求の作成を行います。
# openssl req -new -days 3650 -key server.key -out server.csr
...... Common Name (e.g. server FQDN or YOUR name) []:192.168.1.3 <-www.example.comまたはIPアドレス
...... A challenge password []:(空白)
...... An optional company name []:(空白)
証明書を発行してもらうための要求ファイルができたので、証明書を発行
# openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 3650
これでもう、server.csrは不要です。パーミッションを変更します。
# chmod 400 server.*
server.keyが秘密鍵。server.crtがサーバー証明書。
SSLモジュールの有効化
# a2enmod ssl
/etc/apache2/sites-available/default-ssl.conf を編集して、ServerNameと作成した秘密鍵、公開鍵のパスを指定。
# vi /etc/apache2/sites-available/default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
ServerName 192.168.1.3:443 <-サーバー名もしくはIPアドレス
.......
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/certs/server.key
SSLサイトの有効化
# a2ensite default-ssl
Apache2再起動 # /etc/init.d/apache2 restart
/etc/ssl/private/ディレクトリに、例えばmy_passphrase.shファイルを作成します。
#!/bin/sh
echo "設定したパスワード"
管理者のみ実行権限付きパーミッションに変更
chmod 500 /etc/ssl/private/my_passphrase.sh
/etc/apache2/mods-available/ssl.confの修正
SSLPassPhraseDialog exec:/etc/ssl/private/my_passphrase.sh
Apache2再起動
参考にしたページ:
https://def-4.com/ssl-passphrase/
参考にしたサイト: https://www.tecmint.com/redirect-http-to-https-on-apache/
https://www.yokoweb.net/2017/03/23/ubuntu-wordpress-ssl-coressl/
Mod Rewirte の実行 $ sudo a2enmod rewrite
使用するドメインルートディレクトリに.htaccess ファイルの作成し以下の設定を記載
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
もしくは
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
Apache2の再起動
参考にしたサイト:
http://www.techspacekh.com/installing-and-configuring-apache-web-server-...
https://letsencrypt.jp/usage/#ExecClientSoftware
https://www.tecmint.com/install-free-lets-encrypt-ssl-certificate-for-ap...
https://qiita.com/ninneko/items/87a76f0f1dc6d82500fb
https://linux-svr.com/tips/Web%E3%82%B5%E3%83%BC%E3%83%90/12.php
opensslで既にSSL(インストールされているサーバーで認証サーバーも兼用する)環境が設定ずみとして、
apacheのバーチャルホストの設定で
/etc/apache2/sites-available/www.XXXcom.conf のファイルを編集します。
VirtualHost *:443 以下を追加
<VirtualHost *:80>
ServerName www.XXX.com
DocumentRoot /var/www/html/xxx
ServerAlias XXX.com
CustomLog /var/log/apache2/xxx-80-access_log common
ErrorLog /var/log/apache2/xxx-80-error_log
<Directory "/var/www/html/xxx">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName www.XXX.com
ServerAdmin [email protected]
DocumentRoot /var/www/html/xxx
ServerAlias xxx.com
CustomLog /var/log/apache2/xxx-443-access_log common
ErrorLog /var/log/apache2/xxx-443-error_log
<Directory "/var/www/html/xxx">
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/certs/server.key
</VirtualHost>
この状態だと、http と https の両方が稼働する状態なので、常時、httpsへ切り替わるように設定します。
httpからhttpsへリダイレクトする方法として、以下のようにhttpのタグにリライトを設定します。
<VirtualHost *:80>
<Directory ...>
................................
</Directory>
</VirtualHost>
新しい設定ファイル /etc/apt/sources.list.d/backport.list を用意して,以下の内容を記述します。
deb http://ftp.debian.org/debian jessie-backports main
次に、Debianの更新 sudo apt update
jessie-backports から python-certbot-apacheをインストール
apt install python-certbot-apache -t jessie-backports
これで、certbotコマンドが実行できるようになります。
認証ファイルの作成 (www.xxxx.co.jp とxxxx.co.jpの2つのパターンに対応する)
sudo certbot certonly --webroot -w /var/www/html/xxxx -d www.xxxx.co.jp -d xxxx.co.jp
できた、cert.pem chain.pem fullchain.pem privkey.pem をApacheのファイルで設定します。
/etc/apache2/sites-available/www.xxxx.co.jp.conf のファイルに以下の項目を追加
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/www.xxxx.co.jp/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.xxxx.co.jp/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/www.xxxx.co.jp/chain.pem
最後に、自動更新の設定
sudo certbot renew
動作の確認は sudo systemctl |grep certbot
参考にしたサイト:http://www.kmiura.net/archives/8801264.html
certbotのインストールとバージョンの確認
sudo apt-get update
sudo apt-get install -y certbot
sudo certbot --version
certbot 0.10.2
以下のコマンドを実行して、SSL認証ファイルを生成
certbot certonly --webroot -w /var/www/html -d www.XXXX.com -d XXXX.com
連絡先メールアドレスを設定、ライセンスの確認をすれば、SSL認証ファイルができます。
Apacheの場合は https://certbot.eff.org/lets-encrypt/debianbuster-apache.html
インストール: sudo apt-get install certbot python-certbot-apache
証明書の発行: sudo certbot --apache -d www.gennai3.co.jp -d gennai3.co.jp
自動更新の設定: sudo certbot renew --dry-run
以下にインストールされます
/etc/crontab/
/etc/cron.*/*
systemctl list-timers
SSLなしのドメインの設定 一般的なApacheでの設定 www.xxx.jp.conf
###################################################################### # URL: http://www.xxx.jp/ ###################################################################### <VirtualHost *:80> ServerName www.xxx.jp DocumentRoot /var/www/html/0000 ServerAlias xxx.jp CustomLog /var/log/apache2/0000/xxx-80-access_log common ErrorLog /var/log/apache2/0000/xxx-80-error_log <Directory "/var/www/html/0000"> Options FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> </VirtualHost>
このサイトがSSLなしで見れることを確認してから、sudo cetbot --apache コマンドを実行する
その際に、 www.xxx.jp と xxx.jp のどちらをSSL対応にするか確認があるので、xxx.jp を選択します。
www.xxx.jp.confファイルに以下の内容が追加されます。
RewriteEngine on RewriteCond %{SERVER_NAME} =xxx.jp [OR] RewriteCond %{SERVER_NAME} =www.xxx.jp RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
さらに、SSL対応のファイルが追加されます。www.xxx.jp-le-ssl.conf
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName www.xxx.jp DocumentRoot /var/www/html/0000 ServerAlias xxx.jp CustomLog /var/log/apache2/0000/xxx-80-access_log common ErrorLog /var/log/apache2/0000/xxx-80-error_log <Directory "/var/www/html/0000"> Options FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> SSLCertificateFile /etc/letsencrypt/live/xxx.jp/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/xxx.jp/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> </IfModule>
$ sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com
--apache: Use the Apache plugin.
--agree-tos: Agree to terms of service.
--redirect: Force HTTPS by 301 redirect.
--hsts: Add the Strict-Transport-Security header to every HTTP response. Forcing browser to always use TLS for the domain. Defends against SSL/TLS Stripping.
--staple-ocsp: Enables OCSP Stapling. A valid OCSP response is stapled to the certificate that the server offers during TLS.
$ sudo certbot certonly -a apache --agree-tos --no-eff-email --staple-ocsp --email 名前@gmail.com -d mail.ドメイン名.biz
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for mail.ドメイン名.biz
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/mail.ドメイン名.biz/fullchain.pem
Key is saved at: /etc/letsencrypt/live/mail.ドメイン名.biz/privkey.pem
certonly: TLS 証明書を取得しますが、Web サーバーにはインストールしません。
-a nginx: 認証に Apache プラグインを使用する
--agree-tos: 利用規約に同意します。
--no-eff-email: EFF財団からのメールを受け取りません。
--staple-ocsp: OCSP ステープルを有効にします。有効な OCSP 応答は、TLS 接続中にサーバーが提供する証明書にステープルされます。
--email: 重要な通知とアカウントの復旧に使用するメール アドレスを入力します。
-d: ドメイン、つまりメール サーバーのホスト名。
他の仮想ホストに干渉する可能性があるため、デフォルトの仮想ホストを無効にします。
sudo a2dissite 000-default.conf
crontabに毎日certbot renew を実行し、postfixとdovecot を再起動、Apacheの場合
sudo crontab -e @daily certbot renew --quiet && systemctl reload postfix dovecot apache2
登録されている証明書の確認
sudo certbot certificates
証明書の削除
sudo certbot delete --cert-name 登録ドメイン名
証明書を失効し削除する場合(deleteコマンドは失効しないので)
sudo certbot revoke --cert-path /etc/letsencrypt/live/登録ドメイン名/cert.pem
削除・失効後は、ApacheやNginxの設定も変更します。参考にしたサイト:https://weblabo.oscasierra.net/letsencrypt-revoke/
オープンソースCMS Drupalの運用環境で、Basic認証を設定する場合
apache2のhtpasswdを追加インストール
# aptitude -y install apache2-utils
認証ユーザー名とパスワードを設定します。パスワードファイル(.htpasswd)は/etc/apache2に保存する場合
# htpasswd -c /etc/apache2/.htpasswd ユーザー名
Drupalのdrupal_rootディレクトリにある、.htaccessファイルのトップ行に以下の内容を追記します。
AuthUserFile /etc/apache2/.htpasswd
AuthName "Input ID and Password."
AuthType Basic
Require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
Require all denied
</Files>
Apache2を再起動。
Debian12のApache2で動作検証しました。SSL対応は未検証です。 参考:https://rainbow-engine.com/apache-reverseproxy-howto/
参考: https://www.softel.co.jp/blogs/tech/archives/5465
mod_proxy と mod_proxy_http を有効化する sudo a2enmod proxy proxy_http
/home/www/html/work 以下のディレクトリにCMSなどをインストールして、仮想ディレクトリで運用する場合です。社内開発用サーバーでの運用。
http://debian1xxxx にアクセスすると、/home/www/html/work/ 以下のCMSなどが起動します。
<VirtualHost *:80> DocumentRoot /home/www/html/work ServerName debian1xxxx ServerAdmin xxx@xxxxx ErrorLog /var/log/apache2/debian1/debian1xxxx.error.log CustomLog /var/log/apache2/debian1/debian1xxxx.access.log combined ProxyRequests Off <Directory /home/www/html/work> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted Allow from 192.168.0 </Directory> ProxyPass /work http://debian1xxxx/ ProxyPassReverse /work http://debian1xxxx/ </VirtualHost>
参考まで < 以下の設定は動作未検証です。>
出典: https://docs.graylog.org/docs/web-interface#configuring-webif-nginx
HTTPの場合
<VirtualHost *:80> ServerName xxx.example.org ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> <Location /> RequestHeader set X-xxx-Server-URL "http://xxx.example.org/" ProxyPass http://127.0.0.1:9000/ ProxyPassReverse http://127.0.0.1:9000/ </Location> </VirtualHost>
HTTPSの場合
<VirtualHost *:443> ServerName xxx.example.org ProxyRequests Off SSLEngine on # <- your SSL Settings here! <Proxy *> Order deny,allow Allow from all </Proxy> <Location /> RequestHeader set X-xxx-Server-URL "https://xxx.example.org/" ProxyPass http://127.0.0.1:9000/ ProxyPassReverse http://127.0.0.1:9000/ </Location> </VirtualHost>
Debian コマンド
良く使う、代表的なDebianコマンドについて
パッケージの情報を参照 dpkg -s <パッケージ名>
インストール済み dpkg -L <パッケージ名>
インストールされているパッケージを参照 dpkg -l | grep <検索>
パッケージのインストール dpkg -i <パッケージ名>
OS・パッケージの更新情報取得 apt-get update
OS・パッケージの更新 apt-get upgrade
インストール済みパッケージの更新チェック apt-get check
パッケージのインストール apt-get install <パッケージ名>
削除 apt-get remove <パッケージ名>
パッケージの依存関係を修復する場合 apt-get -f install
パッケージの検索 apt-cache search <検索対象>
ディストリビューションのアップグレード apt-get dist-upgrade
キャッシュの削除 /var/cache/apt/archives 以下のパッケージを削除 apt-get clean apt-get autoclean
apt ソースリスト /etc/apt/sources.list
aptコマンド実行で保留がある場合は
apt-get update
apt-get dist-upgrade
で保留もアップデイトされます。
パッケージのインストール aptitude -y install パッケージ名
パッケージの検索 aptitude search パッケージ名
パッケージ情報を参照 aptitude show パッケージ名
パッケージを削除 aptitude remove パッケージ名
パッケージの設定ファイルも含めて削除 aptitude purge パッケージ名
データベース更新 aptitude update
データベース更新後にパッケージの更新 aptitude safe-upgrade
/etc/sudoers を編集、もしくは visudo コマンドを実行して編集します。
設定方法は、 ユーザー名 ホスト名=(コマンド実効ユーザー) コマンド
例えば、user1 にすべてのコマンドを実効させる場合は
user1 ALL=(ALL) ALL になります。
Javaのバージョンを入れ替える時に使用します。
# update-alternatives --config java
PHPのバージョンを入れ替える時には、例えば PHP7.4に切り替えるときは、
# update-alternatives --set php /usr/bin/php7.4
もしくは 以下のコマンドで切り替え環境を選択できます。
sudo update-alternatives --config php alternative php (/usr/bin/php を提供) には 8 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ 0 /usr/bin/php8.1 81 自動モード 1 /usr/bin/php5.6 56 手動モード 2 /usr/bin/php7.0 70 手動モード 3 /usr/bin/php7.1 71 手動モード 4 /usr/bin/php7.2 72 手動モード 5 /usr/bin/php7.3 73 手動モード * 6 /usr/bin/php7.4 74 手動モード 7 /usr/bin/php8.0 80 手動モード 8 /usr/bin/php8.1 81 手動モード 現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください:
DebianでSMTP(メール送信)サーバーの設定
Debian 10 などで標準インストールされるシンプルなSMTPサーバーです。
Debianサーバーで、crontab などと連携してシステム上のアラームメッセージなどを自動送信させるために、exim4を使ってみました。
参考にしたサイト:
http://mirahouse.jp/n10/blog/2015/debian-exim4/
https://www.bnote.net/kuro_box/kuro_debian_exim4.shtml
rootで dpkg-reconfigure exim4-config を実行
General type of mail configuration: mail sent by smarthost; received via SMTP or fetchmail
System mail name:サーバのFQDN
IP-addresses to listen on for incoming SMTP connections:127.0.0.1 ; ::1
Other destinations for which mail is accepted:サーバのFQDN
Machines to relay mail for:(blank)
IP address or host name of the outgoing smarthost:送信させる外部のsmtpサーバー::587
Hide local mail name in outgoing mail? <Yes>
Visible domain name for local users:サーバのFQDN
Keep number of DNS-queries minimal (Dial-on-Demand)? <No>
Delivery method for local mail:mbox format in /var/mail/
Split configuration into small files? <No>
外部の転送先アカウント設定
/etc/exim4/passwd.client を編集
外部のSMTPサーバー名:そのメールアドレス:パスワード
sudo chown root:Debian-exim /etc/exim4/passwd.client
sudo chmod 640 /etc/exim4/passwd.client
必要であれば、システム内部のメールを転送するために、 /etc/email-addresses も設定します。
システムへの反映 update-exim4.conf
これで、コマンドラインから mail コマンドで送信できます。送信テストコマンドのサンプル
echo "test" | mail -s "test1" (送信先のメールアドレス)
参考: << www.linux.net-japan.info/install04.html >>
sshd_configの設定
/etc/ssh/sshd_configファイルを設定する。
設定方針:指定したユーザのみが、SSHサーバに接続できるように設定する。
vim /etc/ssh/sshd_config
PermitRootLogin no
AuthorizedKeyFile %h/ .ssh/authorized_keys
DenyUsers ALL
AllowUsers etch taro hanako
2) TcpWrapperの設定
/etc/hosts.allowと/etc/hosts.denyファイルで、SSH接続できるネットワーク又はIPアドレスを指定する。
TCPのパッケと段階でもアクセス制限を行う。この場合は、内部のプライベートネットワークからの接続を許可している。
vim /etc/hosts.allow
ALL: 127.0.0.1
sshd: 192.168.1.
vim /etc/hosts.deny
sshd: ALL
3) sshd_configの設定変更を有効にする
/etc/init.d/ssh restart
ssh-keygen -t rsa を実行します。
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxxxx/.ssh/id_rsa):
/Users/xxxxx/.ssh/id_rsa already exists.
Overwrite (y/n)? yes
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/xxxxx/.ssh/id_rsa.
Your public key has been saved in /Users/xxxxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Dqvvyxxxxxxxxxxxxx [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| .o . . |
| o.=.xxxxxxx
| oxxxxxxxxx
| xxxxxxxx
| . . xxxxxxxxxxxx
|. . ...=+ . ... .|
|. . ..xxxxxxxxxxxxx
| . . o o . |
| .xxxxxxxxxxxx
+----[SHA256]-----+
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:wASxKs7rxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxx
Please contact your system administrator.
Add correct host key in /Users/xxxxxxx/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/xxxxxxx/.ssh/known_hosts:4
RSA host key for 192.168.0.8 has changed and you have requested strict checking.
Host key verification failed.
このワーニングの原因は、接続先ホストを再インストールしたり、SSHサーバーの設定が変更になった場合などで接続できない状態になっているからです。
一つの方法として、known_hosts の設定情報を削除する方法です。 ssh-keygen -R 接続ホスト名
ssh-keygen -R 192.168.0.8
# Host 192.168.0.8 found: line 4
/Users/xxxxx/.ssh/known_hosts updated.
Original contents retained as /Users/xxxxx.ssh/known_hosts.old
SSH接続の確認
ssh hodota$ ssh -l hodota 192.168.0.8
The authenticity of host '192.168.0.8 (192.168.0.8)' can't be established.
ECDSA key fingerprint is SHAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.8' (ECDSA) to the list of known hosts.
[email protected]'s password:
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jan 17 12:08:21 2016 from xxxxxxxx.xxxxxxx
詳細はここを参考に
Debianでの設定について、簡単に注意することをまとめました。
詳細は 「実践 Debian GNU/Linuxサーバー ルート養成講座」 (秀和システム) という本がわかりやすく、良いと思います。
Bind 9 のchroot化について
https://wiki.debian.org/Bind9#Bind_Chroot
DebianでBind 9 を稼働させるときにchroot化したいと思います。そこで、以下のサイトの手順を参考に設定しました。
http://www.mk-mode.com/octopress/2013/10/18/debian-7-dns-chroot/
Debian 7 と Debian 8 でインストールテストしました。
aptitude -y install bind9 bind9utils dnsutils
起動オプションの編集 /etc/default/bind9
#OPTIONS="-u bind -4"
OPTIONS="-u bind -4 -t /var/bind9/chroot"
chrootディレクトリ作成
mkdir -p /var/bind9/chroot/{etc,dev,var/cache/bind,var/run/named}
chroot化で必用なスペシャルファイルの作成、パーミッション
mknod /var/bind9/chroot/dev/null c 1 3
mknod /var/bind9/chroot/dev/random c 1 8
chmod 660 /var/bind9/chroot/dev/{null,random}
元のBindディレクトリをchrootへ移動
mv /etc/bind /var/bind9/chroot/etc
シンボリックリンクの作成
ln -s /var/bind9/chroot/etc/bind /etc/bind
オーナー、グループ、パーミッション変更
chown -R bind:bind /etc/bind/*
chmod 775 /var/bind9/chroot/var/{cache/bind,run/named}
chgrp bind /var/bind9/chroot/var/{cache/bind,run/named}
起動スクリプトの編集 /etc/init.d/bind9 PIDファイルのパス変更
PIDFILE=/var/bind9/chroot/var/run/named/named.pid
rsyslogにログ出力するように変更
echo "\$AddUnixListenSocket /var/bind9/chroot/dev/log" > /etc/rsyslog.d/bind-chroot.conf
syslogdの再起動
/etc/init.d/rsyslog restart
Bind9の再起動
/etc/init.d/bind9 start
マスターサーバと同じようにBind9をインストールし、ゾーンファイルのディレクトリを作成します。
mkdir -p /etc/bind/zones/slave chown -R bind:bind /etc/bind/zones
/etc/bind/named.conf.local ファイルの編集
zone "example.jp" { type slave; file "/etc/bind/zones/slave/example.jp.zone#; masters {xxx.xxx.xxx.xxx;}; };
必用なドメイン名とそのゾーンファイルを定義して、Bind 再起動。
スレーブ・サーバの動作確認
dig @スレーブサーバIPアドレス a www.example.jp +short
使用するドメイン名.com TXT 3600 v=spf1 +ip4:(メールサーバーと設定したIPドレス) ~all
xxxxxx.com TXT 3600 v=spf1 +ip4:202.1xx.xxx.xxx ~all
上記設定でお名前ドットコムサイトでのDNS設定でSPF設定はOKでした。2021年2月の時点で。
一つのドメインに複数のSPFレコードを記述する際には、一行で記述します。
例: example.jp. IN TXT "v=spf1 +ip4:192.168.10.0/24 +ip4:10.1.2.0/24 ~all"
メールサーバーを持っているドメインの場合
例: example.jp. IN TXT "v=spf1 include:_spf.google.com +ip4:202.212.xxx.xxx/29 mx ~all"
DNS機能が正常かどうか確認する方法は、いくつかありますが、Webサイトでの確認する方法として、http://dnscheck.iis.se/ というサイトを使っております。 シンプルです。 そのほかにもたくさんサイトがありますが、信頼できそうなサイトを利用しましょう。
/usr/sbin/named-checkzone example.com /etc/bind/example.com.zonefile
/usr/sbin/named-checkconf /etc/bind/named.conf
Debianを運用していて必要となるさまざま話題について。
HDDをフォーマットして、mountコマンドで動作確認して、
mount /dev/sdb1 /home/s1
問題なければシステム起動時に自動マウントさせるためには、/etc/fstab ファイルに設定します。 たとえば、
/dev/sdb1 /home/s1 ext3 defaults 0 0
次のWebサイトの情報を参考にしました ここから
10MBのブロックサイズでゼロを書き込む # dd if=/dev/zero of=/dev/hda bs=10MB
もしくは 乱数を2回書き込んだ後,ゼロフィルを実行 # shred -n 2 -z /dev/hda
HDDを修復する方法
起動中のHDDはfsckコマンドで修復できません。アンマウントして修復できるような環境で実行します。
ディスクの確認 # fdisk -l
HDDのアンマウント # umont /dev/xxxx (デバイス名)
修復 # fsck -v -y /dev/xxxx (デバイス名)
vnc4serverをインストールする場合
1)apt-get install vnc4server もしくは aptitude -y install vnc4server
2) /etc/vnc.conf を新規作成し、以下の設定を追加
$geometry = "2048x1024";
$depth = "24";
3) suになるか sudoコマンドでVNCパスワード作成
vncpasswd
4) .vnc/xstartup に Gnomeセッションの起動スクリプト追加
exec gnome-session &
5) VNCサーバーの起動 vncserver :1 停止 vncserver -kill :1
Debian 8 (jessie)の場合、GNOMEではVNCサーバーに接続エラーが起きるので、GUI環境をGNOME2ベースのMateを使用します。
詳細は ここを参照
XRDPをインストールする場合
Debian 9 Stretch GNOMEデスクトップ もしくは Mateデスクトップ
最初に xserver-xorg-legacy を削除するとGNOMEでもXRDPが実行できました。バグのようですが、詳細は、https://unix.stackexchange.com/questions/389005/using-xrdp-without-local... にて。
# apt-get purge xserver-xorg-legacy
# apt -y install xrdp
# systemctl start xrdp
# systemctl enable xrdp
Windowsのリモートデスクトップ接続で、セッションに [Xvnc] を選択し、ユーザー名とパスワードを入力し接続します。
Debian 10 Buster の場合、GNOME環境をtaskselで選択インストールすると、サスペンドやスリープなどのPC環境をサポートする機能も含めてインストールされ、サーバーとして使うには、20分ぐらいで電源が落ちたり、不要な機能がありましたので、taskselコマンドで、デスクトップ環境、GNOME環境をアンインストールして、再起動後に、taskselコマンドで、デスクトップ環境とMateだけを選択してインストールしてから再起動します。
その後、xrdpをインストールしてもつながらない場合は、 ここを参考に https://www.hiroom2.com/2017/06/19/debian-9-xrdp%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/#sec-1
「could not acquire name on session bus」のエラーが表示される場合は、/etc/xrdp/startwm.sh を編集します。
exec mate-session (これを挿入)
test -x /etc/X11/Xsession && exec /etc/X11/Xsession (これは元から)
exec /bin/sh /etc/X11/Xsession (これは元から)
起動時に「Could not acquire name on session bus」が表示される場合は、mate-sessionの起動前に
unset DBUS_SESSION_BUS_ADDRESS
を挿入してXRDPを再起動して改善しました。 詳細は http://verifiedby.me/adiary/0126
Debian 10 での設定サンプル /etc/xrdp/startwm.sh
最後の行あたりは、以下のように設定します。
unset DBUS_SESSION_BUS_ADDRESS
exec mate-session
test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession
digコマンドやnslookupコマンドが使えない場合は、追加インストールします。
リモートホストからローカルホストへコピー
リモートホストの「example.com」にユーザー名「user1」でログインし、「file1」というファイルをローカルホストへ「file2」という名前でコピー
リモート間でファイルのコピー
オプション
暗号化してファイル転送
scp [オプション] コピー元 コピー先
主なオプションは
リモートホストからローカルにファイルをコピー、ひとつのファイル「/home/user/file1」をコピー
ローカルからリモートホストにファイルをコピー
scp コピー元ファイル ユーザ名@リモート・ホスト名:/リモート先のPATH
リモートホストから別のリモートホストにファイルをコピー
scp [email protected]:/home/user/tmp/file1 [email protected]:/home/user/tmp/
HDDのDiskからDiskへのコピーなどでパーティションサイズを拡大させたい、結合させたいときに、Gpartedプログラムを使います。
Diskに未割当の領域があり、それを、既存のパーティションに結合させる手順
パーティション変更を実行(保留を実行)させると、Linuxブートなどのワーニングが表示されますが、とりあえず実行します。
詳細は ここ を参考にしました
tasksel コマンド GUI環境や初期デスクトップ環境をインストール・アンインストールするのに便利です。
参考にしたサイト: https://qiita.com/nkojima/items/e9a851e40ef8e2af9993
#!/bin/bash
IP_LIST=(172.17.12.143 172.17.11.130 172.17.15.81 172.17.15.82)
MAILTO='送信先のメールアドレス'
LOG_FILE=./ping.log
for ip in ${IP_LIST[@]}
do
ping_result=$(ping -w 5 $ip | grep '100% packet loss')
date_result=$(date)
if [[ -n $ping_result ]]; then
echo "[SEVERE] server inactive: $ip $date_result" >> $LOG_FILE
echo $ip | mail -s "[ALERT] server down!! $date_result" $MAILTO
else
echo "[INFO] server active: $ip $date_result" >> $LOG_FILE
fi
done