パソコンを廃棄する時のデータの消去方法!

パソコンを廃棄する時に、データの消去はとてもむつかしいですよね。以前 HDDに保管した個人情報の確実な廃棄についてではハードディスクを破壊してデータを復元できない確実な方法を説明しました。ソフトウェアを使ったパソコンのデータ消去を確実に遂行する!でデータを上書きして復元できないようにして情報を消去する方法を紹介しました。

外部媒体や特定の情報ではなく、具体的にこまってしまうパソコンを廃棄する時に保管している情報を、どうすれば対処すれば復元できない形でパソコンを捨てられるのかまとめます。一つ手順を組み込むことでパソコンを安全に廃棄できます。

データを消去するイメージ
acworksさんによる写真ACからの写真 

パソコンのデータ消去は上の図のように、黒板けしで消去できると良いのですが、残念ながら簡単には消えません。次にデータを書き込む時に上書きすることで消去の手間を減らしているのです。

パソコンのデータを確実に消去する方法

パソコンのデータを消去と言いますが、具体的には2つのことが実現できれば「データを消去できた」と見なせます。

  1. データを読み取れないようにする
  2. データを上書きして、データの痕跡を消す

1の「データを読み取れないようにする」には、データが保存してある部分を壊してしまって読み取り処理ができないようにすることを言います。「ハードウェアを破壊する」という言い方ができます。具体的にはディスクを壊したり、紙であればシュレッダーで細断するなどが該当します。

2の「データの痕跡を消す」というのは、データを読み取ることができてもそこには重要なデータが記録されていない状態にすることを言います。これは先ほどの黒板消しや消しゴムなどで痕跡を消すことや、モザイクをかけることも同じことになります。

モザイクについては、電子版のシュレッダーとも言えます。

データを消去するモザイクの例
PexelsKelly Lacyによる写真

上の図では、モザイクの例ですが、まだ粗いため、十分なデータ消去の効果が出ていません。もっと細かくしてシャッフルするとデータ消去の効果が出てきます。

データを復元できないように消去する具体的手順

ハードウェアを破壊する手法については、HDDに保管した個人情報の確実な廃棄についてで説明しています。HDDは対応しているのですが、SSDはしていないので、使いにくいですね。

HDDなどの内臓メディアを破壊するにはパソコンから取り出す必要があり、機種によっては分解する必要があり、とても手間がかかります。やはり物理的に壊すよりデータを上書く方法で抹消した方が処理しやすいです。

データを上書きして破壊する

データを上書きして消去する方法もあります。フォーマットでデータをすべて消して、次にランダムデータで上書いて隠れているデータを削除していく方法です。いろいろなフリーソフトがありますが、ポイントは復元ソフトです。復元できなければよいので、複数のソフトを試して復元できないことを確認しましょう。

外部メディア上のパソコンのデータを消去するには、パソコンのデータ消去を確実に遂行するで説明した方法を使います。内臓HDDやSSDは取り出してUSBで外部媒体に変えておくと同じ手順が使えます。下のようなHDDスタンドを使います。

上の図の製品は2つ挿せてデータコピーができるタイプですが、データ消去だけなら2台挿せる必要はありません。私は1台挿せるタイプを購入してデータを上書きしてデータを消去しています。

パソコンのディスクのデータを消去するためにUSB化する機器

上のような1ベイの機器を購入しました。2ベイでもそこまで金額差はないので、好みで選んで大丈夫だと思います。実際にディスクを指してみます。

パソコンの2.5インチ内臓ディスクのデータを消去する

2.5インチは小さいので、すっきりと収まってますね。使いやすいです。次は3.5インチを挿してみます。

パソコンの3.5インチ内臓ディスクのデータを消去する

3.5インチのディスクはやはり大きいです。でも上の伸びるので場所は取らないし、重みでコネクタがつながるので安定感は高いです。

なお、パソコンにUSBで接続すると外部媒体と認識します。実際にデータ消去すると時間はかかりますので、夜実行して放置しておくと良いです。

外部に委託するとデータが復元できないことを担保してくれるサービスもあります。

まとめ

データをハードウェアやソフトウェアで消去する方法を説明しました。では本題に戻ってパソコンの内臓ディスクのデータを確実に消去する方法は以下の2つになると考えます。

  1. 内蔵ディスクを取り出して機械的に壊す
  2. 内蔵ディスクを取り出して外部媒体に変換して、空き領域を無意味なデータで上書きしてデータを消去する

どちらにしても面倒です。もう少し簡単なデータを画一に消去する方法がないか確認してみます。

RedmineをCentOS8上で構築する手順

CentOS8でWebサーバMySQLを使ったデータベースサーバRuby on Railsを作ってきましたので、この機能を使ったRedmineを立ち上げてみます。Redmineはプロジェクト管理に使えるオープンソースソフトウェアです。

CentOS8でRedmineを構築するのは想定より面倒でした。備忘録としてまとめておきたいため、ここにまとめます。

Redmineを使ったWebアプリケーションの画面
このページの結論

RedmineはRuby on RailsとLAMPの上で動作します。CentOS8でRedmineを動作させるには2つのポイントを押さえる必要があります。他は従来の手法で構築できました。

  1. Passengerはgem経由でインストールする
  2. Redmineの指定したrailsのバージョンを使う

Redmineが動作するCentOS8のインストールと設定

Redmineに適したOSの設定が必要になりますので、簡単にまとめておきます。

CentOS8のインストール

まずはCentOS8のインストールです。手順はCentOSのインストールを最短で!に詳しく説明していますので、参考にしてください。OSに関しては説明している手順そのままでOKです。

SELinuxの無効化

WordPressのインストールではSELinuxを有効にしたまま設定ができましたが、Redmineは設定する項目が多すぎましたので、SELinuxを無効にします。

/etc/selinux/configを編集します。

Redmineを動作させるためにSELinuxの設定を変更

上の図は、viで/etc/selinux/configを開き、行数を表示させた状態です。

ちなみにviで行数を表示するにはコマンドモードで、「:set number」と入力します。行数の表示を解除するにはコマンドモードで「:set nonumber」と入力します。

上の図に戻って、①SELINUX=enforcingとなっている場所を、②にあるようにpermissiveに変更します。

Redmineの動作のためにSELinuxをpermissiveに変更

上の図の赤線のように変更して保存します。viで保存して終了する場合は「:wq」と入力します。

SELinuxの設定ファイルを変更したら再起動します。再起動後getenforceコマンドでpermissiveになっていることを確認します。

Redmineの動作のためにSELinuxの設定を確認

上の図のようにPermissiveと表示されれば大丈夫です。

setenforceコマンドでも起動後の変更できるのですが、恒久的にSELinuxを無効にするためには/etc/selinux/configファイルを修正する必要があります。

ファイアウォールの許可設定

RedmineはWebアプリケーションです。そのためHTTPとHTTPSを使います。ファイアウォールでHTTPとHTTPSの通信を許可するように設定します。ポート番号で言うと、HTTPがTCPの80番ポートを、HTTPSがTCPの443番ポートを使います。

CentOS8のfirewalldが有効な場合には、サービスのhttpとhttpsを許可してください。具体的な設定方法はfirewall-cmdでCentOS8を安全に公開しよう!で説明しています。または、firewalldを無効にしてすべての通信が通るように設定します。

Redmineに必要な機能のインストール

Webサーバのインストール

RedmineはWebアプリケーションであるため、Webサーバは必要です。ここではApacheを使います。Webサーバの構築方法はApacheをインストールしてWebサーバを簡単構築!で説明していますので、参考にしてください。

httpで接続してきたら、httpsへ転送するように常時SSL対応まで実装します。常時SSLの必要性については常時SSL化ってなぜ必要なのか?を参考にしてください。

MySQLサーバのインストール

MySQLはRedmineのデータを保管するデータベースとして使います。RedmineはPogstreSQLにもインストールできますが、LAMP環境で統一します。

MySQLサーバの構築方法は、MySQLをCentOSに簡単インストールを参考にしてください。構築するデータベースの情報は以下になります。

 
項番 項目 設定値
1 データベース名 redmine
2 ユーザー名 redmine_user
3 パスワード RedM1ne

rootでCentOS8のサーバにログインして、MySQLのデータベースを作ります。調べたところ一つ気を付ける点があって、データベースの文字コードをutf8ではなく、utf8mb4にしないと4バイトのUTF8の文字コードが入らないようです。

Redmine用のデータベースをMySQLで構築

上の図のように、rootでログインしてから①mysqlコマンドを実行します。②データベースredmineをutf8mb4の文字コードで作ります。③redmine_userユーザーをパスワードRedM1neで作成します。④redmine_userユーザーにredmineデータベースの全権限を付与します。⑤権限変更を即時反映します(古いバージョンだと必要な場合があると思います)。最後に⑥\qのMySQLコマンドの入力を終了します。

MySQLデータベースの作成の詳細については、MySQLをCentOSに簡単インストールをご覧ください。

Ruby on Railsのインストール

RedmineはRuby on Rails上で動作します。CentOS8にRuby on Railsをインストールするのは少し手間ですが、Ruby on Railsを最短でCentOS8に構築してみようにまとめていますので、参考にしてください。

Passengerのインストール

必要なRPMを追加インストール

Redmineで使うPassengerに必要とされるパッケージを追加します。以下のパッケージをインストールしないとPassengerのインストールでエラーが出て進みません。

 
項番 パッケージ名 説明
1 openssl-devel 開発用OpenSSLライブラリとヘッダ
2 httpd-devel 開発用Apacheライブラリとヘッダ
3 libcurl-devel 開発用libcurlライブラリとヘッダ

3つのパッケージをインストールします。

Redmineに関連して必要なパッケージをインストール

上の図のように、赤線の部分にdnf installコマンドでパッケージをまとめてインストールしています。

Redmineに関連するパッケージのインストール完了

上の図の最後のように、「完了しました!」と表示されればパッケージのインストールは終了です。

Rubyのgemを使ってPassengerのインストール

PassengerはApache上でRuby on Railsのアプリケーションを動作させるためのモジュールです。PassengerはまだCentOS8のパッケージが公開されていませんのでRubyのパッケージ管理コマンドgemでインストールします。

RedmineをApacheで動作させるためにPassengerをインストール

上の図のように、rootでログインして①passengerをgemでインストールします。②1つのgemがインストールえきたことを確認します。

Apache用のPassengerモジュールをインストール

ApacheからPassengerを呼び出すmod_passenger.soモジュールを作成します。公式サイトにはCentOS8用のパッケージが公開されていないためgem経由でインストールしたpassengerを使ってインストールします。

passenger-install-apache2-moduleコマンドを実行します。

RedmineをApacheで動作するために必要なPassengerモジュールインストール

上の図のように、rootで①passenger-install-apache2-moduleコマンドを実行します。②続ける場合はEnterキーを入力し、中断して終了する場合はCtrl+Cを入植するように指示しています。

インストールを続けるので、Enterキーを入力します。

RedmineをApacheで動作するために必要なPassengerモジュールインストール第2

上の図のように、画面が進みます。ここではRPMでインストールを勧めますが、インストールを継続するなら赤下線のように、Enterキーを入力してくれと書いてあります。

インストールを続けるので、Enterキーを入力します。

RedmineをApacheで動作するために必要なPassengerモジュールインストール

上の図の左下赤枠のように、使いたい言語は何かと聞かれるので、RubyとNode.jsが入っている状態でEnterキーを入力して勧めます。

ここから、ソフトウェアのコンパイルが始まります。サーバの性能に依りますが、5分以内には終わると思います。

Redmineに必要なPassengerのコンパイル完了

上の図のように表示されればインストールは成功です。Enterキーを入力して進みます。

Redmineに必要なPassengerのコンパイルが完了

上の図のように、エラーはないのですが、3つの警告がありました。エラーは無かったので、インストールは完了です。Enterキーを入力して進みます。

Redmineに必要なPassengerのインストールが完了

上の図のように、やっとPassengerのインストールが完了してコマンドプロンプトに戻ってきました。

mod_passengerをApacheに組み込む

passenger-install-apache2-moduleに引数を付けると、Apache用にmod_passengerを組み込む瀬鄭が表示されます。これを設定ファイルに流し込みます。

Redmineの動作のためにPassengerをApacheに組み込む

上の図のように進めます。①インストールで実行したコマンドpassenger-install-apache2-moduleにsnippet引数を付けて実行するとインストールしたpassengerをApacheに組み込む設定が表示されます。

②次にPassengerの設定をApacheの設定に流し込むために①の出力をリダイレクトして画面から/etc/httpd/conf.d/passenger.confに流し込みます。/etc/httpd/conf.d/*.confはApacheが自動で読み込みますので、これで準備はできました。

③念のため設定でエラーがないことをapachectlコマンドで確認します。④Syntax OKを表示されて設定上エラーがなければ、⑤Apacheを再起動します。apachectl gracefulは設定の再読み込みだけでモジュールを読み込まないので、Apacheの再起動が必要です。

Redmineの設定

Resmineの動作に環境が整いましたので、いよいよRedmineの設定に入ります。まずはRedmineをダウンロードします。公式ダウンロードサイトを開いて最新安定板をダウンロードします。

Redmineの安定板をダウンロード

上の図のStable releasesと記載のある赤枠部分が最新安定板です。tar.gzかzip形式をダウンロードします。

ダウンロードしたら、/var/www/html/以下に展開します。

Redmineのファイルを展開

上の図では、tar.gzのファイルを展開していますが、zipの場合はunzipを使って展開してください。展開後はファイルの所有権をWebサーバを実行するapacheユーザーとapacheグループにすべて変更します。chownの-Rはディレクトリ以下のすべてのファイルとディレクトリに適用するオプションです。

次はWebサーバのディレクトリ構成を変更します。先ほど展開したディレクトリの中にredmine-4.1.1/というディレクトリができています。RedmineがWebサーバとして表示するディレクトリはredmine-4.1.1/public/になります。展開したディレクトリと合わせて/var/www/html/redmine-4.1.1/public/をDocumentRootに設定変更する必要があります。今回は一つのサーバをRedmineが占有する想定で構築しますが、VirtualHostの場合も考え方でDocumentRootをどこにするかの違いだけです。

WebサーバのDocumentRootを変更するには/etc/httpd/conf/httpd.confを修正します。標準のApacheの設定では以下のようになっています。

Redmine用にApacheの設定を変更する前

上の図の赤線のように、DocumentRootは標準では/var/www/htmlに指定してあります。これをRedmineの設定に置き換えます。

Redmine用にApacheの設定を変更後

上の図のように、DocumentRootを置き換えたら保存して終了します。/var/www/html以下以外にするとディレクトリの許可設定も変更する必要があるので、変更箇所はさらに増えます。

今回はRedmineをCentOS8の上に構築する流れを説明する目的ですので、他のディレクトリへ変更する場合は想定しません。

設定変更が完了したら、apachectl gracefulで変更を反映してWebサーバへの設定は完了です。

Redmineのデータベース接続設定

Redmineがデータベースと接続する設定をします。redmine-4.1.1/config/ディレクトリの下にdatabase.yml.sampleというファイルがあります。このファイルを同じディレクトリのdatabase.ymlにコピーします。コマンドで書くと下のようになります。viでの編集までコマンドを記載しました。

Redmine用のデータベース接続ファイルの準備

次にdatabase.ymlを編集します。展開した朝護の標準設定は以下の内容です。

Redmineがデータベースと接続する情報を保管するファイルの変更前

上の図のように、productionの項目を設定します。データベース名を指定するdatabase行、ユーザー名を指定するusername、パスワードを指定するpassword行をMySQLで作った情報に置き換えます。

Redmineがデータベースと接続する情報を保管するファイルの変更後

Redmineに必要なgemパッケージをインストールします。

Redmine用のRailsに入れ替え

redmine 4.1.1に必要なrailsは5.2.4.2のため、railsを入れなおします。

Redmineが必要としているRailsのバージョンに変更

上の図のように、最新版ではRailsの6.0.3が入ります。RedmineのGemfileを見るとわかりますが、4.1.1ではRailsの5.2.4.2が必要です。そこでRailsをインストールしなおします。

①gemコマンドで、railsとrailtiesを削除します。②で確認メッセージが出るのでyキーを入力して削除を進めてください。③バージョン指定でrailsをインストールします。④railsの5.2.4.2がインストールされればOKです。

Redmine用のパッケージをインストール

OS用mysql2-develパッケージをインストール

最初にMySQL用のライブラリとヘッダを含むmysql-develをdnfコマンドでインストールします。

Redmineに必要なmysql-develパッケージをインストール

Ruby用mysql2パッケージをgemでインストール

次にgemコマンドでsqlite2のバージョン0.5.3をインストールします。

Redmineで使うmysql2をgemでインストール

上の図のようにgem install sqlite2と入力して指定のパッケージをインストールします。

Redmineに必要なrubyパッケージをbundleでインストール

Redmineのディレクトリへ移動し、bundle installと実行します。

Redmineで使うrubyのパッケージを追加インストール

上の図のように、①redmineのディレクトリへ移動して、②bundle installを実行します。警告のように一般ユーザーで実行するよう警告されますが、Redmineの構築方法をまとめるためですので、簡略化して今回はrootでインストールします。

少し時間が必要ですが、bundleコマンドが必要なパッケージを追加してインストールします。

Redmineでbundle installが完了

上の図のようにコマンドに戻ればインストールは完了です。

Redmineの初期データ作成

セッション改ざん防止用秘密鍵の作成

Redmineがセッションで使う改ざん防止用の秘密鍵を生成します。redmineのディレクトリで、bundle exec rake generate_secret_tokenと実行します。

Redmineのセッションで使う改ざん防止用秘密鍵を作成

上の図のようにコマンドを実行するとエラー無く終了します。

Redmine用のデータベーステーブルを作成

データベースにReadmineが使うテーブルを作成していきます。Redmineのディレクトリで、RAILS_ENV=production bundle exec rake db:migrateとコマンドを入力して実行します。

Redmine用のデータベーステーブルを作成

上の図のように、コマンドを実行するとデータベーステーブルの作成が始まります。マシンの性能にも依りますが、1分ほどで完了します。

Redmine用のデータベースに初期データを登録

前項で作成したデータベーステーブルに初期データを登録します。Redmineのディレクトリで、RAILS_ENV=production bundle exec rake redmine:load_default_dataとコマンドを入力します。

Redmine用のデータベーステーブルにデフォルトデータを設定

上の図のように、コマンドを実行すると言語の指定が必要です。日本語を使うのでjaと入力して進めます。

デフォルトのデータを設定する作業はすぐに終わります。

Redmineの動作確認

やっと構築作業が完了しました。いよいよRedmineへ接続します。http://サーバのIPで接続すると、最初は少し待たされますがRedmineのページが表示されます。

Redmineのトップページの状態

上の図のようにRedmineのページが表示されれば、インストールは成功です。右上の「ログイン」をクリックします。

Redmineのログインページ

上の図のように、ログインページが表示されたら、管理者のIDはadminで初期パスワードはadminです。

Redmineのログイン後にパスワードの変更が必要

初期パスワードを変更してログインを進めてください。初期パスワードを変更できると下の図のようになります。

Redmineの初期パスワード変更後の正常画面

ここまでくればRedmineは構築完了です。あとはRedmineを使うだけです。

まとめ

Redmineの構築はやはり面倒でした。そのため私自身もこの備忘録を活用しています。長文をご覧になっていただき、ありがとうございました。この記事が約二立てることを願ってます。

firewall-cmdでCentOS8を安全に公開しよう!

firewall-cmdは、CentOS7から採用されているホスト型のファイアウォールです。CentOSと同じように無償で利用が可能です。CentOS6まではiptablesを使っていたのですが、慣れないfirewalldを使うよりほとんど無効化してしまうことが多いと思います。

組織では各サーバにファイアウォールを設定するより独立させて一元管理するアプライアンス型を使う方が多いです。

本記事ではファイアウォールをどこに置くかではなく、安全にCentOSをサーバとして公開できるよう最低限ファイアウォールの設定をまとめておきたいと思います。

firewall-cmdをはじめとするファイアウォールが保護するイメージ
ar130405によるPixabayからの画像
このページの結論

firewall-cmdはWindowsファイアウォールと同じでホスト型のファイアウォールです。外部からの通信で許可したいものを許可します。

CentOSをサーバ公開するにあたり、最低限のファイアウォールを設定する方法を以下3点でまとめます。

  1. 公開用のポートを許可する
  2. 許可していたポートを拒否する
  3. 変更を一時的から恒久的に反映する

firewall-cmdを使った現在の設定確認

firewall-cmdはファイアウォールを提供しているfirewalldの状態を確認したり、設定変更できるコマンドです。ここでは現在の設定を確認します。

まずはfirewalldが動作しているか確認します。systemctl status firewalldと入力します。

ファイアウォールの有効状態を確認

上の図のように、①systemctl status firewalld でファイアウォールの有効か無効かを確認します。②firewalldのサービスがenabled(自動起動する状態)であることがわかります。③今の状態がactive(running)で起動していることを表示しています。

ファイアウォールが無効な状態であればまずは起動します。systemctl start firewalldで起動できます。起動時に自動的にファイアウォールを有効にするにはsystemctl enable firewalldで設定できます。

ファイアウォールが有効なことがわかりました。これでfirewall-cmdで設定を表示したりできます。現在の設定は、現在有効な設定だけを表示する firewall-cmdにlist-allオプション または、全ての登録している設定を表示する list-all-zonesオプションがあります。

firewall-cmdでファイアウォールの有効なルールを表示

上の図のように、①firewall-cmdにlist-allオプション付与で現在有効な設定を表示します。publicというゾーンがデフォルトとして設定されているため、そのゾーン情報が表示されています。②には許可するサービス名が設定されています。cockpitとdhcpv6-clientとsshです。

firewall-cmdのオプションをlist-allオプションからlist-all-zoneオプションに変更すると、全てのゾーンの情報を表示します。

許可しているサービスの情報を見るにはfirewall-cmdに「info-service=サービス名」オプションとしてます。

firewall-cmdでサービスの詳細を表示

上の図のように、許可されているサービスを確認します。①cockpitは②TCPの9090番のポートを利用します。cockpitは管理用のWebGUIのポートで、詳細はRedHatのLINUXホストへのCOCKPITのインストールを参照してください。

上の図で③はdhcpv6のクライアントサービスで、④UDPの546番ポートを使います。⑤SSHサービスは⑥TCPの22番のポートを使います。

firewall-cmdを使って変更する

Webサーバのアクセスを許可

WebサーバはHTTPとHTTPSを許可する必要があります。HTTPSが必要な理由は常時SSL化という時代の要請から必須になりました。

HTTPはTCPの80番ポートを使います。HTTPSはTCPの443番ポートを使います。サービスが定義されているか確認します。

firewall-cmdでhttpとhttpsのサービスを表示

上の図から、httpとhttpsサービスは定義済みであることがわかります。httpはTCPの80番ポートを、HTTPSはTCPの443番ポートを使うように指定されています。

今の設定を確認します。firewall-cmdにlist-allオプションを付けて実行します。

firewall-cmdで標準で動作しているファイアウォールのルールを表示

上の図のようにサービスはcockpitとdhcpv6-clientとsshのサービスが許可されています。

上の状態でhttpとhttpsを許可します。許可した後でどのように変わったかを確認します。

firewall-cmdでサービスを許可する

上の図のように、①で現在の設定を確認します。②にはhtpとhttpsは許可されていません。③httpとhttpsのサービスを許可します。④もう一度設定を確認します。⑤httpとhttpsが追加されています。

この状態であれば、Webサイトを構築して公開することが可能になりました。ただし再起動すると設定がリセットされて戻ってしまいます。これは次の項目で説明する変更を保存して恒久反映する手順が必要です。

DNSサーバのアクセスを許可

複数のポートを使うサービスを許可してみます。DNSサーバはTCPの53番ポートとUDPの53番ポートを使います。それではdnsサービスを確認します。

firewall-cmdでDNSサービスの詳細を表示

上の図のように、①dnsサービスの詳細をfirewall-cmdで表示すると、②dnsサービスにはTCPの53番ポートとUDPの53番ポートの2つが含まれています。

同じように firewall-cmdにadd-service=dnsオプションを付けてコマンドを実行するとDNSサーバのポートを許可します。

許可したサービスを拒否する場合

add-serviceオプションで許可したので、remove-serviceオプションで許可したサービスを拒否します。具体的にdnsサービスを許可している状態からdnsサービスを拒否するコマンドの流れを見てみます。

firewall-cmdで許可したサービスを拒否する

上の図のように、①現状のファイアウォール設定を表示すると、②http,https,dnsの3つのサービスを追加で許可していることがわかります。③dnsサービスの許可を取り消して拒否します。④もう一度ファイアウォール設定を表示すると、⑤httpとhttpsは許可していますがdnsは消えました。

firewall-cmdの変更を保存して恒久反映

firewall-cmdで許可するサービスを追加したり、削除することで設定できるようになりました。ですが、設定を保存しないと再起動した際には変更が消えてしまいます。ファイアウォールを設定変更して、問題ないことが確認できたらすぐに保存しましょう

具体的コマンドはfirewall-cmdにruntime-to-permanentオプションを付けると今の設定を/etc/firewalld/ディレクトリ以下に保存します。

firewall-cmdで現在の設定を保存

上の図のように、successと表示されれば保存は成功しています。次の再起動時にも同じファイアウォールの設定が有効になります。

ファイアウォールを無効にしたい場合

セキュリティレベルが低下することから、おすすめはしませんが、ファイアウォールを無効にしたい場合には、以下の順で停止します。

  1. ファイアウォールの機能を停止する
  2. ファイアウォールが自動指導しないように設定する

まずは、現在の状態を確認します。systemctlコマンドで確認します。

ファイアウォールの現在の状態を表示

上の図のように、①systemctl status firewalldでfirewallの自動起動の設定と起動状態を表示します。②自動起動はenabledなので、有効です。③起動状態はrunningなので起動中です。

ファイアウォールの機能を停止

ファイアウォールの起動を停止して、全ての通信が受信できるようにします。systemctl stop firewalldで停止します。

ファイアウォールを停止

上の図のように、①firewalldの機能を停止して、全てのデータを送受信できるようにします。②自動起動と今の起動状態をもう一度表示します。③起動状態はdeadなので停止中です。

ファイアウォールの自動起動を停止

次は自動起動を停止します。systemctl disable firewalldでファイアウォールが自動で起動しないように抑制します。

ファイアウォールを無効化

上の図のように、①firewalldが起動時に自動で起動しないよう無効化します。②もう一度自動起動と起動状態を確認します。③自動起動がdisabledで無効化されていることを確認できました。

まとめ

ホスト型のファイアウォールは細かい設定は不要と思います。細かい設定がファイアウォールに必要な場合は、アプライアンス製品のファイアウォールを導入した方が管理は楽になると考えられるためです。

簡単でしたが、firewall-cmdの基本的な使い方を説明しました。もっと高度なこともできますが、ホスト型のファイアウォールとは役割が違うので専用のアプライアンスを使った方が良いと思います。

ApacheをインストールしてWebサーバを簡単構築!

パソコンやスマホでネットサーフィンする時にいつもお世話になっているのがWebサーバです。Webサーバはいろいろありますが、実績のあるApacheを使うことが多いです。Webサーバの構築が簡単にできるようになっていますので、初級部分のWebサーバ構築をまとめておきます。

Apacheをインストールして使って作るWebサイトのイメージ
Gerd AltmannによるPixabayからの画像

インフラエンジニアとして避けて通れないWebサーバは今や無料で構築することができます。機能が豊富なApacheだからこそ基本的なことは押さえておきたいです。

このページの結論
  1. Apacheのインストールは簡単に無料でできます。
  2. サーバOSはCentOS8を使います。
  3. Apacheのパッケージをインストールして、自動起動と起動設定して確認します。
  4. サーバ証明書を作り常時SSL化します。

Apacheのインストールと初期設定

OSのインストール

OSはCentOS8を使います。CentOS8のインストールについては、CentOSのインストールを最短で!にまとめていますので、参考にしてください。

Apacheのインストール

Apacheをインストールする手順は簡単です。CentOS8のパッケージでhttpdとmod_sslをインストールするだけで最低限のWebサーバソフトウェアは準備が完了します。

Apacheのインストール

上の図のように、dnf install httpd mod_sslでWeb サーバソフトウェアのApacheとSSL化のソフトウェアがインストールできます。依存関係からインストールするパッケージがリストアップされます。yキーとEnterキーを押してインストールを勧めます。

Apacheのインストールが完了

上の図のように、インストールが正常に完了すると「完了しました!」と表示されます。インストールは異常で終了です。

Apacheの初期設定

インストールが完了したら、自動起動と起動設定をします。

Apacheの自動起動と起動する

上の図のように、①Webサーバの起動状態を確認します。②Webサーバの自動起動は無効になっています。CentOSを再起動してもWebサーバは自動で起動しません。

③systemctlコマンドにenableオプションを付けることでApacheをシステム起動時に自動起動させるように設定を変更します。④起動の状態を確認します。⑤Webサーバの自動起動状態がenable(自動起動)状態に変わりましたが、⑥サービスは今inactive(停止状態)です。

⑦webサーバを起動します。⑧Webサーバの起動状態を確認します。⑨Webサーバはactive(起動状態)に変わりました。なお、⑨から4行下のStatusにはポート443と80でlisteningとあります。これはApacheがポート443とポート80でWebサービスを提供していることを示しています。

Apacheには設定ファイルの内容を確認するapachectlコマンドが付属しています。apachectlにconfigtestを付けてコマンドを実行してみます。

Apacheのインストール後の設定ファイルの内容確認

上の図のように、①Apacheの設定内容を確認するコマンドを実行します。②最終的に設定が問題なければ「Syntax OK」と表示されます。なお、メッセージの意味は「ServerNameを指定してWebサイトのFQDNを設定してください」という意味です。

設定を確認後に、変更した設定をApacheに有効にするにはsystemctl restart httpdコマンドを実行します。

以上でApacheの初期設定が完了しました。

Apacheの常時SSL化設定

Webサイトのサーバ証明書を作成

サーバ証明書を作る方法は、SSLサーバ証明書の作り方をわかりやすくを参照して、秘密鍵と公開鍵を準備してください。公開鍵は中間証明書が必要な場合があります。

 
必要な物 用途 要否
秘密鍵 秘密にするべき証明書のデータ 必須
公開鍵 公開してよい証明書データ 必須
中間証明書 ルート認証局から直接証明書を配布されない場合に必要 不要な場合もある

サーバ証明書をApacheに導入

作成したSSLサーバ証明書に使う秘密鍵と公開鍵は、Webサーバに認識させる必要があります。秘密鍵と公開鍵がどこにあるかを記載しているWebサーバの設定ファイルは/etc/httpd/conf.d/ssl.confで指定します。

Apacheのインストール後にSSLサーバ証明書を瀬鄭する場所

上の図は、/etc/httpd/conf.d/ssl.confの中を表示した状態で、行番号が先頭の数字です。

①はSSLサーバ証明書の公開鍵を置くファイル名をフルパスで指定しています。②はSSLサーバ証明書の秘密鍵を置くファイル名をフルパスで指定しています。③はSSLサーバ証明書に中間証明書が必要な場合に使います。標準では先頭でコメントアウトしてあります。

各ファイルの内容を作成したサーバ証明書に置き換えるか、別のファイルに保管してファイルのパスを書き換えるかを選んでSSLサーバ証明書のデータをファイルに置きます。

データをファイルに反映し、設定ファイルも正しく書き換えれば、apachectl configtestで設定内容を確認して、apachectl graceful かsystemctl restart httpdで変更内容を反映します。

サーバ証明書を反映した後に、https://で始まるWebサイトにアクセスすると証明書が更新されていることを確認できます。

Apacheのhttpからhttpsへの転送設定

https://で始まるWebサイトを構築できたら、最後にhttp://で接続してきた時にhttps://に転送する方法を説明します。httpのWebサイトを定義している場所に以下の設定を入れます。

Apacheのインストール後にHTTPからHTTPSへのリダイレクト設定

上の図は/etc/httpd.conf/httpd.confをviで編集し、行番号を左側に表示させています。135行目付近に/var/www/htmlのディレクトリ設定箇所があります。ここに上の図の赤枠内のように設定を入れます。

変更を保存して、systemctl restart httpdで変更を反映します。これでHTTPからHTTPSにリダイレクトされます。

ファイアウォールの設定確認

ApacheでWebサーバを構築できても、ブラウザで接続してみたとき、Webサイトが表示できないことがあります。いくつか原因がありますが、もっとも身近な原因としてCentOS8で標準で動いているファイアウォールが原因となる場合があります。

Webサーバを構築した時、HTTPとHTTPSのプロトコルを使います。ファイアウォールで拒否していないか確認してください。CentOS8に標準でインストールされているファイアウォールの設定方法がわからない方は、firewall-cmdでCentOSを安全に公開しよう!で説明しています。参考にしてください。

まとめ

Apacheのインストールと基本的な設定を紹介しました。他にも細かい設定ができますが、まずは基本的なWebサーバとして動作する設定と常時SSLへの対応ができるように説明しました。

シュレッダーを家庭に導入しました

シュレダーが欲しいと思い、迷った挙句に購入しました。導入した理由は、コロナ禍により自宅学習となった子供たちの学習用プリントが増えて自宅で印刷する機会が増えたからです。幸い私が勤務する会社の方はペーパーレス化が進んでおり、仕事上で印刷が必要な状況は最低限となりました。

子供たちの勉強で使ったプリントは名前や学校や筆跡が入っている個人情報です。手で裁断も面倒ですので、この機会に家庭で使えるコンパクトで安価なシュレッダーを導入したいと考えました。

シュレッダーは家庭でも個人情報を抹消するために有効

シュレッダーの仕様

シュレッダーを使う場面ですが、以下を想定しています。

  1. はがきDM
  2. 回覧板を回覧した後
  3. 郵便物に付いているあて名ラベル
  4. 学校からのプリント
  5. 繰り越し後の通帳

最近は電子データ化して紙を減らしていますので、シュレッダーの出番は意外に使いどころは多いです。スキャナはEPSONのPM-T960をまだ使ってます。余談ですが次はFAX電話機と統合したいと考えています。ブラザーのMFC-J998DNです。

脱線しましたが、せっかく導入するシュレッダーには、下の機能は欲しいです。

電動であること

回転ハンドルで細断するタイプは手が痛くなります。細断の時間は次の準備や後片付けをして時間を有効に活用したいため、電動タイプは必須です。

小型であること

紙を細断する機会は頻繁にあるとは思っていません。多くても1日に1回まとめて10枚くらいで納めたいです。使わない時間の方が多いので、大型では保管する場所が無駄になります。日本の居住スペースは狭いので小型であることも必須です。

対応する用紙サイズはA4は必須ですので、小型と言ってもそこまで小さくはできないと思います。

安価であること

使う頻度が多くないからこそ、安価でないと買えません。そのため予算は¥10,000円以下とします。

マイクロクロスカットで細断すること

細断サイズは細かいほど良い情報は洩れないので、マイクロクロスカットができることも必須です。

選定した機種

シュレッダーのメーカーをあまり知らないため、どこがよいかから調査を開始です。賛否両論はあると思いますが、¥10,000円以下だとなかなか見つけられませんでした。すべてを満たしてくれたシュレッダーが下になります。

メーカのホームページの製品一覧に載っていないですが、ホームページの量販店カタログには載っていました。もっと小さいサイズもありましたが、全ての要件を満たしてくれる製品が他に無かったので、GSHA11M-Bを購入しました。

シュレッダーの使用感

重さが5kgでしたので、通販で購入しました。届いたのは以下です。

シュレッダーの外箱

幅380mm×奥行255mm×高270mmです。この箱の中にシュレッダーが1cmくらいの隙間だけできっちり収まっていました。

取り出してみると5kgは、全体の大きさから想定すると重く感じます。下のような感じで、通販画面でみたそのままです。

シュレッダーGSHA11M-Bの上の面

裏から見ると電源コードが出ています。

シュレッダーGSHA11M-Bの背面

ACアダプタが内蔵されているようで、外には電源ケーブルだけですのですっきりしています。デスクにおいても邪魔にはならないですね。

外観と設置場所

大きさから見た目から、書類ケースのように見えます。とりあえず、プリンタの近くに用紙を保管しているので、置いておきます。

シュレッダーをプリンタラックに収めたところ

シュレッダーをプリンタラックの真ん中に収めました。一番下の段は用紙や予備インクを設置しています。一番上にはプリンタPM-T960を置いて置いてます。使う時に電源を入れて取り出す使い方です。

使ってみた感想と機能

使ってみると、想定していたより音は大きく夜中に細断すると近隣に迷惑をかけることになります。細断した紙を見ると、思ったほど小さくないです。でも個人情報を読み取れるほど大きいわけではないので、合格です。

機能についてはホームページにある通りで、通常細断のほかに逆回転もできて紙詰まり対策は良好です。

一度に細断できる枚数は4枚なので、随時細断して捨てますので許容できます。細断した紙は細かいため舞います。飛ばないように気を付けてゴミ袋に移してください。

シュレッダーの必要性について

個人情報の漏洩に気をつけるようになり、個人情報を捨てる前に確実に隠す必要があります。今後、シュレッダーの必要性はさらに増していくと考えています。情報漏洩は取り消せないので、漏洩しないように注意するしかないのが現実です。

シュレッダーが不要となるのは、紙で配布する資料が無くなる時と同じだと思います。

Ruby on Railsを最短でCentOS8に構築してみよう!

今回はRuby on Railsをサーバ環境に構築してみます。Windowsでは、Ruby on Railsを最短でwindowsに構築してみよう!で記載しています。サーバ観光としてCentOS8の上にRuby on Railsを構築してみます。

Ruby on RailsをCentOS8に構築

Ruby on RailsをCentOS8に構築してみた感想ですが、必要なパッケージがわかっていればWindowsより簡単でした。しかし、必要なパッケージを見つけるまでが少し面倒でしたので、備忘録として残しておきます。

ポイントは赤字で強調しました。

このページの結論

Ruby on RailsをCentOS8にインストールする手順は以下です。

  1. Gitのインストール
  2. 開発ツール(make、c++)をインストール
  3. 必要なライブラリやヘッダをインストール
  4. パッケージマネージャーYarnをインストール
  5. RubyとRailsのインストール

Ruby on Rails用にCentOS8を構築

CentOS8の想定環境

CentOS8はクリーンインストール後を想定しています。具体的な手順は次の候で説明しますが、インストール時にパッケージ選定等は行っていないません。すでにインストールしている場合には、追加でインストールする必要は無いです。

CentOS8のインストール

本ページで使用するCentOS8のインストールは、Centosのインストールを最短で!で説明しています。

Hyper-V上にインストールを想定していますが、通常のサーバハードウェアにCentOS8をインストール場合も同じ手順です。ただし、新しいハードウェアを使う場合、ドライバが対応していない場合があります。新しいハードウェアは事前にCentOS8が対応していることを確認してから導入しましょう。

Ruby on RailsをCentOS8の上に構築

Ruby on RailsをインストールするCentOS8の構築が完了したら、必要なツールをインストールします。必要なツールのインストールが完了したら、Ruby本体とRailsをインストールします。最後に動作確認して終了です。rootでログインして進めます。

Ruby on Railsに必要なツールのインストール

Ruby on RailsをCentOS8にインストールするためには、いくつもツールやパッケージが必用でした。まとめるよりグループ化して説明します。

フリーでオープンなバージョン管理Gitのインストール

gitをインストールします。CentOSのdnf(旧:yum)でインストールします。dnf install gitと入力します。

Ruby on Railsで使うgitのインストール

上の図のように。赤線部分がgitをインストールするために入力するコマンドです。最下行にインストールしてよいか聞かれていますので、yと入力してインストールを進めます。

Ruby on Rails用にgitのインストールが完了

gitのインストールが正常に完了すると、上の図のようになります。

コンパイラのインストール

Ruby本体はパッケージでインストールできますが、Railsは開発環境が必用です。開発環境には2つ必要で、1つ目がコンパイラで2つ目がライブラリとヘッダです。この項目では一つ目のコンパイラをインストールします。

Ruby on Railsをインストールするために必要なCentOS8のコンパイラパッケージはmakeとc++です。dnf install make gcc-c++で2つまとめてインストールします。

Ruby on Rails用コンパイラをインストール

上の図のように、赤線部部でdnf install make gcc-c++を入力して開発用コンパイラをインストールします。最下行にインストールしてよいか聞かれていますので、yと入力してインストールを進めます。

Ruby on Rails用にコンパイラのインストール完了

上の図のように、インストールが成功すると「完了しました!」と表示されます。

パッケージマネージャYarnのインストール

YarnはCentOS8のパッケージ管理の標準リポジトリに含まれ無いので、パッケージ管理のリポジトリを追加します。

Ruby on Railsで使うYarnをパッケージ管理リポジトリへ追加

上の図のように、YarnをインストールためのCentOS8用リポジトリはcurlコマンドでダウンロードします。curlのエラーメッセージを-sオプションで非表示として、リポジトリに追加する内容をリダイレクトして/etc/yum.repos.d/yarn.repoに書き出します。

上の図の赤線2行目のcatはリポジトリの内容を確認用に表示しています。注意点はenabledが1になっていることを確認してください。これが1でないとリポジトリが無効となり、yarnをインストールできません。

準備ができましたので、Yarnをインストールします。dnf install yarnと入力します。

Ruby on Rails用にYarnをインストール

上の図のように、dnfコマンドでyarnパッケージをインストールえきるようになれば成功です。最下行にインストールしてよいか聞かれていますので、yと入力してインストールを進めます。

Ruby on Railsで使うYarnのインストールが完了

上の図のように、インストールが成功すると「完了しました!」と表示されます。

Ruby on Railsに必要なライブラリやヘッダのインストール

Ruby on Railsに必要なライブラリやヘッダは以下になります。最低限以下の5つをインストールするとRuby on Railsをインストールできる環境になります。

 
項番 パッケージ 用途
1 rpm-build RPMパッケージを作るためのスクリプトやプログラム
2 zlib-devel 圧縮と伸長用Zlibを使った開発用ヘッダとライブラリ
3 readline-devel コマンドライン入力を処理するreadlineの開発用ヘッダとライブラリ
4 sqlite-devel SQLデータベースエンジンSQLite3用開発ヘッダとライブラリ
5 nodejs サーバ側で使うJavaScriptのライブラリ

dnfコマンドでインストールします。dnf install コマンドで5つのパッケージをインストールします。まとめて5つインストールしてもよいですし、分割して一つずつインスールしてもよいです。

Ruby on Railsで使う開発用ライブラリとヘッダをインストール

上の図では、赤線部分で5つのパッケージをまとめてインストールします。表示しきれていませんが、最下行にインストールしてよいか聞かれていますので、yと入力してインストールを進めます。

Ruby on Railsで使う開発用ライブラリとヘッダのインストール完了

上の図のように、インストールが成功すると「完了しました!」と表示されます。

Ruby本体のインストール

いよいよRuby 本体をインストールします。Ruby on Railsに必要なRuby本体のパッケージは3つです。dnf installコマンドでインストールします。

Ruby on Rails用にruby本体と開発キットとgemをインストール

上の図のように、赤線部分でdnf installコマンドを発行します。インストールするパッケージはrubyとruby-develとrubygems-develの3つです。最下行にインストールしてよいか聞かれていますので、yと入力してインストールを進めます。

Ruby on Rails用にruby本体と開発キットとgemのインストールが完了

上の図のように、インストールが成功すると「完了しました!」と表示されます。

Ruby on Railsのインストール

いよいよRuby on Railsをインストールします。

Ruby on Railsを構築するためにRailsをインストール

上の図のように、gem install railsと入力して、Ruby用パッケージ管理用コマンドgemでrailsをインストールします。

Ruby on Rails用Railsのインストールが完了

性能によりますが5分ほど経過するとインストールが完了します。上の図の赤線のように、「Successully installed rails」と表示されえばRuby on Railsの構築は成功です。

Railsの旧バージョンに変更

インストールできたrailsですが、記事作成時点で最新版の6.3.0がインストールされています。特定のバージョンに変えたい場合、最新版を削除して指定のバージョンをインストールします。

まずは、railsを削除します。Windows版Ruby on Railsと同じように、railsとrailtiesをgemコマンドで削除します。

Railsのアンインストール

上の図のように、①のコマンド gem uninstall rails railties でRailsを削除します。②確認メッセージが表示されるので、yキーを入力して削除します。

railsのどの安定バージョンがインストールできるかを表示します。

Railsの安定バージョンを表示

上の図のように、赤線部分で gem list rails -rea と入力するとすべての安定バージョンを表示します。例えばrailsのバージョン5の最後の安定バージョンをインストールしたい場合は、上の結果から5.2.4.2を指定します。

Railsの指定バージョンをインストール

上の図のように、赤線部分で gem install rails -v 5.2.5.2と最後の2つの引数でバージョンを指定してインストールします。

Ruby on Railsの動作確認

Ruby on Railsの動作確認もかねてRailsアプリケーションの構築とWebサーバを起動します。

Railsアプリケーションの構築

端末上で、rails new コマンドを発行します。

Ruby on Rails用のアプリケーションを新たに作成

上の図では、railsAppというアプリケーション名でRailsアプリを作ります。

Ruby on Railsのアプリケーション初期構築完了

上の図のように、「Webpacker successfully installed」と表示あれればRailsアプリケーションの初期構築は完了です。

Railsアプリケーション用Webサーバの起動

最後にRailsアプリケーション用のWebサーバを起動します。前項で作成したRailsアプリケーションのディレクトリへ移動して、rails serverと入力してWebサーバを起動します。

Ruby on Railsのアプリケーション用Webサーバを起動

上の図のように、赤線部分が入力するコマンドです。cdコマンドでディレクトリを移動して、rails serverでWebサーバを起動します。起動したらブラウザでhttp://127.0.0.1:3000/に接続します。

Ruby on RailsをCentOS8に構築

上の図のように、Railsのページが表示されれば成功です。ブラウザ閉じて、rails serverの端末ではCtrlキーを押しながらCキー押してWebサーバを終了します。

最後に

Ruby on RailsをCentOS8にインストール手順はいかがでしたか。CentOS8にRuby on Railsを構築する方法は、インストールするパッケージを見つけることができれば簡単です。

Ruby on RailsをCentOS8に構築するために苦労している方の参考になれば幸いです。

MySQLをCentOSに簡単インストール

WordPressやRedmineなど、オープンソースのソフトウェアにデータベースとしてよく使われているMySQLのインストール方法をまとます。サーバOSは実績のあるCentOS8を初期インストール後の標準の状態を前提として使います。

WordPressのインストールについては、wordpressは簡単にインストールできるでまとめています。

MySQLデータベースのイメージ
このページの結論

MySQLをCentOS8にインストールするポイントは以下です。

  1. MySQLサーバをインストールする
  2. 初期設定する
  3. MySQLサーバを起動する
  4. データベースを作る
  5. バックアップ設定する

MySQLのインストールと起動

MySQLをインストール

CentOS8では名称がMariaDBとなっています。まずはrootでCentOSサーバにログインします。

インストールするパッケージはmariadbとmariadb-serverです。dnf install mariadb mariadb-server とコマンドで入力します。

WordPressのデータを保管するMariaDBをインストール

上の図のように、dnfコマンドでインストールします。ソフトウェアをインストールする作業はこれで完了です。

MySQLの初期設定

インストールが終わったら、文字化けが起きないように文字コードを設定します。そのために/etc/my.cnf.d/mariadb-server.cnfを編集します。

MariaDBの文字コードを設定

上の図のように、[mysqld]の直下に行を挿入し、character-set-server=utf8と入力します。文字コードを設定したら保存して閉じます。

次にMariaDBサーバを起動します。systemctlコマンドを使います。systemctlコマンドを使って起動状態を確認します。systemctlコマンドを使うと自動起動するかどうか、今起動中か停止しているかの2点を確認できます。

MariaDBの起動状態を確認

上の図のように、①systemctl status mariadbとと入力すると、mariadbの状態が表示されます。②自動起動するかについてはdisabled(無効)なので、自動起動しません。③現在の起動状態かどうかについては、inactive(dead)のため停止中です。

MySQLを起動

MySQLを起動には2種類あります。1つが起動時に自動的に起動させることです。2つ目が今手動で起動させることの2点があります。

まずは1点目の起動時に自動で起動するように設定します。systemctl enable mariadbと入力します。

WordPress用に使うMariaDBをシステム起動時に自動起動する設定

上の図のように、MariaDBがシステム起動時に自動で立ち上がるようにする設定コマンドです。赤線部分で入力しています。

コマンドの入力が終わったら、もう一度systemctl status mariadbコマンドで状態を確認します。

自動起動設定後のMariaDBの状態確認

上の図のように自動起動を設定したら、②の部分がdisabled(無効)からenabled(有効)に変わりました。

次に2点目の今停止しているMySQLを起動状態に変更します。上の図でMariaDBが停止している③の状態を起動状態にします。systemctl start mariadbでMySQLサーバを起動します。

自動起動と起動させたMariaDBの状態

上の図のように、①MySQLサーバを手動で起動します。②の自動起動状態は変わりません。③今の起動状態はactive(動作中)に変わりました。

MariaDBの詳細な状態確認

上の図のように、赤枠で囲った部分のcharacterの文字コードがすべて同じであれば文字化けは起こりません。MariaDBが起動していないと上の内容は表示されません。

以上でMySQLサーバの起動と確認は完了です。

MySQLデータベースの作成

データベースを作成するには、今MySQLの状態を確認しないと作ることができません。

MySQLの現在の状態を確認

具体的にデータベースを作成するにあたり、既存のデータベース名とユーザー名が重複しないようにします。

意図的にデータベース名やユーザー名を重複させることはありますが、新たなソフトウェアのデータを保管するデータベースの領域は分けて作ることが一般的です。

MySQLの作成済みデータベース名を確認

まずはデータベース名が重複していないか確認します。今のMySQLに登録してあるデータベース名を表示します。

rootでログインしてmysqlshowコマンドを実行します。

MySQLに登録済みのデータベースを表示

上の図では、初期設定直後のMySQLデータベースサーバに対して実行しました。information_schema、mysql、performance_schemaの3つのデータベースしかありません。

MySQLの作成済みユーザー名を確認

次にMySQLコマンドでデータベースに接続できる登録済みユーザーの一覧を表示します。

MySQに登録済みユーザーを表示

上の図のように、MySQLに登録しているユーザーを表示します。①mysqlコマンドでmysqlデータベースに接続します。②select分でuserテーブルからuser列とhost列を表示します。③ユーザーアカウントrootしかありません。ホストはlocalhostからのみ接続を許可されています。

password列は表示していないですが、デフォルトのrootはパスワード無しで登録されていますので、空欄です。パスワードを登録すると暗号化されたパスワードが入ります。

MySQLデータベースの設計

MySQLに登録しているデータベースとユーザー名が判明しましたので、重複しないようデータベースを設計します。設計に当たっては、最低でも以下3つの情報が必要です。

 
項番 項目 設定値
1 データベース名 testdb
2 ユーザー名 testuser
3 パスワード teStP@ss

MySQLの設定値は大文字小文字は区別されます。ただし、OSはユーザー名の大文字小文字は区別しないので、大文字と小文字の区別はしないという制約をデータベース設計に課します。つまり、Userとuserは同じとします。

MySQLデータベースの構築

前項で設計した、testuserが全権限を持ったMySQLデータベースtestdbを作ります。

MySQLでデータベースを構築

上の図のように、rootでログインしてから①mysqlコマンドを実行します。②データベースtestdbを作ります。③testuserユーザーをパスワードteStP@ssで作成します。④testuserユーザーにtestdbデータベースの全権限を付与します。⑤権限変更を即時反映します(古いバージョンだと必要な場合もあると思います)。⑥MySQLコマンドの入力を終了します。

上の図のコマンド実行結果のように、「Query OK」と表示されれば正常に処理されています。

作成したユーザー、データベースを削除する場合はdropコマンドを使います。drop user testuser、drop database testdbで削除できます。

作成したMySQLデータベースとユーザーの確認

mysqlコマンドを使います。ユーザー名とデータベース名を指定しパスワードを端末から入力します。

作成したMySQLデータベースとユーザーの確認

上の図のように、-uオプションを指定するユーザー名を指定できます。-pはパスワードを端末から入力する指示です。最後のtestdbはデータベース名です。

パスワードを正しく入力するとtestdbのtestuserで接続できていることが確認できます。statusコマンドでどのユーザーでどのデータベースに接続しているか表示することもできます。

MySQLデータベースのバックアップ

一番簡単な方法はrootでサーバへログインした後、mysqldumpコマンドを使います。引数に–all-databasesを付けるとMySQLデータベースを初期構築した後にmysqldump –all-dataabsesで出力したSQLをmysqlコマンドで流し込むだけで復旧できます。

データベースはメモリ上でデータの更新を行いますので、ディスク上のファイルをコピーしても復元できません。必ずmysqladminを使って復元用のSQLコマンドをバックアップとして取得してください。

なお、mysqladminで取得したバックアップデータはSQL文が記載してあるテキスト文書のため、圧縮して保管することをお勧めします。

簡単ですが、MySQLデータベースを構築する際の参考にしていただけると幸いです。

WSLを使ってUNIXコマンドをWindowsで使う!

以前UnixコマンドをWindowsで使いたいというタイトルで、UnixコマンドをWindowsにインストールすることなく使える方法を提示しました。WSLを使うとインストールする必要はありますが、Unixコマンドを使うことができます。今回はWSLを使ってWindows上でUnixコマンドを使える環境を説明します。

繰り返しになりますが、Windows上でUnixコマンドを使いたい時は、巨大なファイルの検索とか、切り出しとか、WindowsのテキストエディタやExcelなどのアプリケーションで開けない場合や、Unixコマンドを使い慣れた方には一つの解決策になります。

WSLで使うUbuntuのデスクトップイメージ
このページの結論

WSLは、LinuxがWindowsを操作できるインターフェースを提供します。WSLのポイントは以下です。

  1. Microsoft 標準提供です
  2. Windowsのフォルダやファイルを操作可能です
  3. UnixコマンドだけなのでWindwosのリソースを無駄に消費しない

WSLを使うメリットとデメリット

WSLを使うメリット

WSLはLinux向けにWindowsを操作できるインターフェースをします。この機能を使うと、WSLに対応したLinuxからWindowsを操作できます。

今具体的には、LinuxコマンドでWindowsのファイルを操作えきることくらいです。PowerShellのような形でUbuntuのLinuxコマンドが使えます。

Linuxコマンドに慣れた人にとっては,、サードパーティのフリーソフトを探す必要がないことです。

WSLを使うデメリット

WSLを使うデメリットは、UNIXコマンドをWindowsで使いたい!で紹介したUnxUtilsがインストール不要であるのに対して、WSLはインストールが必要であることとと、コマンドプロンプトから直接使うことができないことです。

Windowsのフォルダにアクセスするには、WSLを起動した後にLinuxコマンドでディレクトリを少し移動する必要があります

WSLの機能を有効化

WSLの機能を有効にするにはWindowsの再起動が必要ですので、再起動ができない時は避けましょう。Windowsの機能の有効化と無効化を開きます。まずは管理者権限のあるアカウントでWIndowsにログインします。

Windows10のスタートメニュー

上の図のように、①スタートメニューをクリックして、②設定をクリックします。

Windowsの設定画面

上の図のように、WIndowsの設定ウィンドウが開きます。赤枠内の検索ボックスに「機能の有効化」と入れると、すぐ下に「Windowsの機能の有効化または無効化」が表示されますので、それをクリックして設定するウィンドウを表示します。

WSLを有効にするためWindowsの機能から探す

上の図のように、「Windowsの機能の有効化または無効化」ウィンドウが表示されます。右のスクロールを動かし下から1/3くらいのところに上の図の赤枠のようにWindows Subsystem for Linuxがあります。ここにチェックを入れます。

WSLを有効にする

上の図のように、チェックを入れて、右下のOKボタンをクリックします。

WSLを有効にしている状態

上の図のように進めば後は完了を待つだけです。WSLの有効化が終わるとWindowsの再起動を求められますので、再起動します。

Windowsの再起動が完了するとWSLの機能は有効になっています。

WSLに対応したUbuntuをインストール

WSLが有効になった後は、利用するユーザーでUbuntuをMicrosoft Storeからインストールします。

WSL対応UbuntuをMicrosoft Storeで探す

上の図のように利用するユーザーでタスクバーのMicrosoft Storeアイコンをクリックします。

WSL対応UbuntuをMicrosoft Storeから探すため検索ボックスを見つける

上の図のように、Microsoft Storeのウィンドウが表示されたら、右上の赤枠にある検索をクリックします。

WSL対応Ubuntuを探すために検索窓に入力

上の図のように、赤枠内の検索窓に「ubuntu」と入力して検索します。

WSL対応の最新版Ubuntuを選択

上の図のように、Ubuntuは3種類表示されます。Linuxコマンドを使うだけなら最新版でも問題なく使えますので、上の図の赤枠の20.04を選択します。

WSL対応Ubuntuの20.04をイントール

上の図のように、WSLに対応したUbuntu 20.04が表示されます。右上の赤枠「インストール」をクリックしてインストールを開始します。Microsoftへのログインが表示されても、ログインしなくてもインストールできます。

WSL対応Ubuntu 20.04をインストールしている状態

上の図のようにインストールをクリックした箇所の左側にバーが出てインストールしている状態を表示します。

WSL対応Ubuntuuのインストールが完了

上の図のように、右上が「起動」になればインストールは完了です。

WSLを使ってみる

WSLを使ってみます。初回起動は少し時間がかかります。

Ubuntu専用のターミナルを立ち上げる

WSL対応Ubuntuをスタートメニューから探す

上の図のように、①スタートメニューとなりの検索アイコンをクリックして「ubuntu」と入力し、②上に表示される「Ubuntu 20.04 LTS」をクリックします。

WSL対応Ubuntuを初回起動時の画面

上の図のように、ユーザー名の入力が必要な状況になれば初期設定は完了です。ユーザー名とパスワードを入力してプロンプトを表示させます。

あとはUbuntuのコマンドラインです。ただし、ディレクトリ構成が特殊で、Windowsのファイルは/mnt/以下にドライブ名とともにマウントされています。cdコマンドで移動してWindowsのファイルにアクセスします。例えばCドライブは/mnt/cディレクトリに、Dドライブは/mnt/dにマウントされます。

コマンドプロンプト上でWSLを起動する

コマンドプロンプトを起動して、ubuntu2004と入力するとWSL対応Ubuntuが起動します。起動したあとは同じです。ディレクトリも変わりますので、Cドライブにアクセスしたいなら/mnt/cディレクトリに移動します。

このあたりはPowerShellと同じですね。ただ、初期のディレクトリが違います。これは.bashrcとかで記述するとうまく元居たフォルダに移動できるかもしれません。と思っていたのですが…。

さらに調べてみると、コマンドプロンプト上でwslと入力すると今のディレクトリでUbuntuのLinuxコマンドが使える状態になりました

WSLコマンドが使いやすい

コンピュータ名やユーザー名を隠したら、上の図のようによくわからないイメージになりましたが、伝えたいことは「コマンドプロンプトでwslと入力すると使いやすいです」ということです。

まとめ

WSLは今のところ、LinuxコマンドをWindowsで使えるところまでしか使いこなせていない私ですが、これだけでもUnixコマンドが使えるのはとても助かります。

これまではUnixのコマンドを使ってデータ処理したい場合は、別途Unixを別マシンで立ち上げる必要がありました。そういう煩わしい作業が要らないので、今後の発展に期待したいです。

PythonのDjangoフレームワークを最短で作る!

人気のPythonの学習環境を作るために、DjangoフレームワークとセットでWindowsパソコン上に構築します。比較的簡単でしたが、ポイントが一つあります。Pythonが使いやすくて人気な理由の一端が理解できました。

PythonとDjangoフレームワーク開発環境を作る

PHP on Laravelを最短でWindowsに構築や、Ruby on Railsを最短でWindwosに構築と同じようにPythonでもまとめます。

このページの結論

PythonとDjangoフレームワークのインストールは2つのステップで終わります。Djangoのインストールではコマンドプロンプトを「管理者として実行」してインストールします。

  1. Pythonのインストール
  2. Djangoのインストール

Pythonのインストールと初期設定

Windows10では、Microsoft Storeからでもインストールできます。ここでは少し複雑なインストーラからインストールする方法を説明します。

PythonをWindowsにインストール

まずはPythonをインストールします。Pythonのホームページへアクセスします。

Pythonをホームページからダウンロード

上の図のように、Pythonのほーむぺーじが表示されたら、①Downloadsにマウスを移動させるとメニューが表示されます。②Windows付近をクリックします。

PythonのStable板をダウンロード

上の図のように、赤枠部分のリンク先にWindowsのStable版があります。

Stable版のPythonをダウンロードできるページ

上の図のようにサイトが変わったら、下の方にスクロールします。

Windows用Pythonのインストーラをダウンロード

上の図のように、ダウンロードできるファイルの一覧が表示されます。赤枠の実行可能インストーラをクリックしてダウンロードします。

ダウンロードできたら、インストーラを実行してインストールします。

Pythonをインストールする先を選択

上の図のように、インストーラの最初の画面が表示されます。①インストール先のPythonが実行できるように「Add Python 3.8 to PATH」をクリックしてチェックを入れて、②インストールをカスタマイズをクリックします。

Pythonインストール時のオプションを選択

上の図のように、Pythonインストール用にオプション機能を選択します。すべてにチェックが入っていることを確認して、右下のNextをクリックします。

Pythonをインストールするときのアドバンスオプション

上の図のように、詳細オプションを選択します。①すべてのユーザーが利用できるようにチェックを入れます。②デバッグ機能が必要ならチェックを入れます。

詳細オプションが選択できたら、右下のInstallをクリックして進めます。

Pythonをインストールしている状態

上の図のように、インストールがここまで進むと正常にインストールできます。

Pythonインストール後のパス長制限を無効にする

上の図のように、セットアップが成功しましたと表示されれば終了です。最後にパス長の制限を緩和するために、赤枠のDisable path length limitをクリックします。

Pythonのインストール完了

上の図のように表示されればインストールは終了です。右下のCloseをクリックしてPythonのインストールを終了します。

pipを最新版にバージョンアップ

Pythonでパッケージを管理するpipを最新版にバージョンアップします。コマンドプロンプトを「管理者として実行」してください。管理者として実行しないとソフトウェアのインストールができません。

コマンドプロンプトでpython -m pip install –upgrade pipと入力します。

Pythonのpipを更新

もう一度実行するとしたのようになり、最新版に更新できたとわかります。

Pythonのpip更新をもう一度実行した結果

Djangoのインストールと環境設定

PythonにDjangoをインストールするには、最初にコマンドプロンプトを管理者モードで起動します。管理者モードで起動したら、pip install Djangoと入力します。

PythonのDjangoをインストール

管理者モードのコマンドラインでインストールするとPATH変数が通ったフォルダに実行ファイルを置きますので、PATH変数を修正する必要がありません。

Microsoft StoreからPythonをインストールすると個別ユーザーへのインストールとなります。このためDjangoをインストールする時に表示されるフォルダをPATH変数に追記する必要があります。

DjangoアプリケーションとWebサーバの構築

Diangoアプリケーションを作成

ここまでインストールできたらDjangoフレームワークの準備は完了です。プロジェクトを作りたいフォルダへ移動してdjango-admin startproject mysite(mysiteは好きなフォルダ名でOKです)と入力するとmysiteというフォルダ名が作られてDjangoフレームワークのプロジェクトが出来上がります。

PythonのDjangoフレームワークでプロジェクトを作成

上の図のように、成功すると何のメッセージも出ませんが、フォルダは作られます。

Django用Webサーバを起動

前項で作成したプロジェクトのアプリケーションが動作するか確認するためのWebサーバを起動します。作成したプロジェクトのフォルダに移動して、python manage.py runsererと入力します。

Python用Djangoフレームワークで作成したプロジェクトで確認するWebサーバを起動

上の図のように、実行中となれば成功です。Google ChromeなどのWebブラウザを起動して、http://127.0.0.1:8000/入力します。

PythonのDjangoフレームワークで構築したプロジェクト用Webサーバ

上の図のように、Webサイトが表示されれば成功です。以上ですが、参考になれば幸いです。

WordPressは簡単にインストールできる!

ブログやWebサイトを簡単に作れるWordPressですが、テーマを変えたり構成を変えたり試したいことないでしょうか? そのような時、本番環境を壊さずに試せる検証環境があると良いですよね。

このページではWindowsパソコン上にWordPressをインストールして検証環境を作ります。試してみると思っていたより簡単に立ち上げることができましたので紹介したいと思います。

WordPressの検証環境ができるとWebサイトの移行や新しテーマのテストなど、変更後の影響を事前に確認できるので、とても便利です。

WordPressのテストサイトを使う

このページの結論

Windows上でWordPressを直接動かすことは簡単ではないです。でも、Hyper-V上にCentOSをインストールしてその上でWordPressを動かすと簡単に構築できます。具体的手順は以下です。

  1. Windows上のHyper-VにCentOSをインストールして起動する
  2. CentOSの上にLAMP(Linux, Apache, MySQL, PHP)環境を作る
  3. WordPressをインストールして起動する

WordPressの環境を準備

CentOSのインストールと起動

CentOSを動かすためにHyper-Vを使う

Windows上でCentOSを直接起動するには、Hyper-Vの助けが必要です。Hyper-VをWindows上で動かすにも条件があります。詳細な手順については、仮想環境を個人で試用してみたいを参照してください。

Hyper-Vの上でCentOSをインストールして起動する

Windows上でHyper-Vが動作したら、仮想環境なので少し手順が違います。でもHyper-V上でCentOSをインストーする手順はCPUやメモリ、ディスクリソースを定義することですので、わかればそこまで難しいことではないと思います。

Professional以上のエディションのWindows10であれば標準でHyper-Vが付いています。パソコンのリソースは2台動かすために必要ですが、追加の費用が不要なのは助かります。

Hyper-V上にCentOSをインストールする具体的な手順は、CentOSのインストールを最短で!を参照してください。

データベースサーバを起動

データベースはMySQLを使います。データベースのインストールについてはMySQLをCentOSに簡単インストールの項番1でにまとめています。

Webサーバのインストール

Webサーバはインストールが容易なApacheを使います。Apache本体とmod_sslをインストールします。mod_sslはApacheにSSLを提供するApache用のモジュールです。

rootでログインしてdnf install apache mod_sslと入力して2つの機能をインストールします。

WordPress用ApacheとSSLのインストール

上の図のように、赤線部分でパッケージインストールコマンドを実行します。標準では入っていないので、インストールするか確認メッセージが最後に表示されています。インストールするのでyキーとEnterキーを入力してインストールを進めます。

WordPress用ApacheとSSL機能のインストール完了

上の図のように、多くのインストールメッセージが流れていきます。最後に「完了しました!」と表示されれば正常にインストールが完了しています。

これでWebサーバとSSL機能のインストールが完了しました。次はWebサーバを起動します。データベースMariaDBサーバと同じように、自動機能を有効化して、起動します。

WebサーバのApacheは高機能で本来は多くの設定機能があります。今回は検証環境を簡単に立ち上げることを目的としているので、細かい設定や機能は省略して標準機能で立ち上げます。

WordPress用Apacheの自動起動とサーバ起動

上の図では、①Webサーバの自動起動と起動状態を表示します。②自動起動はdisabled(無効)で③サービスはinactive(dead)で停止状態です。

④Webサーバの自動起動を有効にします。

⑤もう一度①と同じようにWebサーバの自動起動と起動状態を表示します。⑥自動起動はenabled(有効)に変わりましたが、⑦サービスはinactive(dead)で変わりません。

⑧Webサーバを起動します。

⑨もう一度①⑤と同じようにWebサーバの自動起動と起動状態を表示します。⑩自動起動はenabled(有効)で変化は無いですが、⑪サービスはactive(running)で起動状態に変わりました。

良く上の図のメッセージを見ると⑪から下3行目にport 443, port80 とhttpsのポートでもWebサービスを起動しました。サーバ証明書は自己署名になりますが、SSL対応のWebサーバが起動できたことになります。

PHPのインストール

WordPressに必要なPHPのモジュールは以下の3つです。

 
項番 パッケージ名 説明
1 php PHPプログラム本体(Apache用モジュールも含まれる)
2 php-json JSON形式のデータを扱うPHP拡張
3 php-mysqlnd MySQLへ接続する機能を使うPHP拡張

上の3つのパッケージをdnfコマンドでインストールします。

WordPress用にPHPをインストール

上の図のように、赤線部分でPHP関連モジュールをインストールします。インストールが完了したら、PHP自体の設定は終わりです。WebサーバのApacheはPHPモジュールを認識するために再起動が必要です。

WebサーバApacheでPHPもモジュールを読み込ませるためにsystemctl restart httpdで再起動するかシステムを再起動します。

以上でPHPの設定は完了です。

SELinuxの設定

WordPressを動作させるにはSELinuxの設定は必須です。方法は2つあります。SELinuxを無効にする。SELinuxがWordPressの動作に影響がないよう設定を許容する。以上の2つになります。

SELinuxを無効にする方法はお勧めはできませんが、簡単に実行できます。/etc/selinux/configのファイルをエディタで開き、SELINUXの値をdisabledに変更して、サーバを再起動します。これでSELinuxが無効になります。

もう一つはSELinuxの設定を緩和します。実施することは2つです。Apacheがネットワーク接続できるように許容することと、Apacheのプロセスがデータを書き込めるように許容することです。

Apacheがネットワーク接続できるように許与するには、httpd_can_network_connectの値を1にします。コマンドはsetsebool -P httpd_can_network_connect=1を実行します。

Apacheのプロセスがデータを書き込めるように許容するには、httpd_unifiedの値を1にします。コマンドはsetsebool -P httpd_unified=1を実行します。

SELinuxのWeサーバのネットワーク接続を許可

上の図の1行目にhttpd_can_network_connectの値を1に変更するコマンドです。2行目でgetseboolで内容を確認しています。-Pは恒久的に設定を反映します。-Pが無いと再起動した後に設定値が戻りますので、注意してください。また、イコール(=)前後は空白を入れるとエラーになりますので、ご注意ください。

次にApacheのプロセスがデータを書き込めるように許容します。設定する変数はhttpd_unifiedを1に変更します。同じコマンドで設定します。

以上でSELinuxの設定は完了です。

WordPressのインストール

WordPressソフトウェアのダウンロード

WordPressはダウンロードサイトから取得します。取得したらCentOSのサーバに置きます。zipでもtar.gzでもどちらでもCentOSサーバ上で展開できます。

WordPressをダウンロードサイトから取得

WordPressソフトウェアの展開

ダウンロードサイトから取得したWordPressソフトウェアを/var/www/html/下に展開します。zipなら、”unzip [ファイル名]”コマンドで展開します。tar,gzならtarコマンドに “tar -zxf [ファイル名]”コマンドで展開します。

展開するとwordpressディレクトリが出来上がります。フルパスは/var/www/html/wordpress/の下にWordPressのソフトウェアが展開されたことになります。

WordPressのURL調整

WebサーバApacheのWebサイトトップディレクトリは/var/www/htmlディレクトリです。このまま公開するとhttps://サイト名/wordpress/がWordPressを使ったWebサイトになります。

WordPressのサイトをトップディレクトリに持ってくる場合にはApacheのせてい変更が必要です。そのためにはApacheのDocuemntRootを/var/www/htmlから/var/www/html/wordpressに変更します。変更後の/etc/httpd/conf/httpd.confは下のようになります。

WordPressのディレクトリをDocumentRootにする

上の図はCentOS8で/etc/httpd/conf/httpd.confをviで開き、行数を左に表示させた状態です。122行目にDocumentRootの指定がありますので、修正しました。変更後保存して終了します。

設定が完了したら、Webサーバに反映します。systemctl restart httpdでWebサーバを再起動します。又はapachetl gracefulで設定ファイルを再読み込みさせます。

WordPress用データベース領域の作成

WordPress用のデータを保存する領域をMariaDBに作成します。作るデータベース名などのパラメータは以下とします。

 
項番 項目 設定値
1 データベース名 wordpress
2 ユーザー名 wordpress
3 パスワード W0rdPress

データベースの作成方法については、MySQLをCentOSに簡単インストールの項番2にまとめています。

WordPressの初期設定

それではWebサーバにアクセスしてWordPressの初期設定を反映します。CentOSのサーバにrootでログインします。左上のアクティビティからFirefoxを立ち上げて、https://localhost/にアクセスします。

Wordpressの初期セットアップ画面

上の図のように表示されれば、WebサーバとPHPの設定は完了です。「左下のさあ、始めましょう」をクリックして進みます。

WordPressの初期セットアップでデータベースへの接続情報を入力

上の図のように、WordPressのデータを保管するデータベースへの接続情報を入力します。MariaDBのインストール時に設定した値を設定していきます。データベース名はwordpress、ユーザー名はwordpress、パスワードはW0rdPressです。

データベースのホスト名はlocalhostとしてください。IPv6のループバックIPアドレス::1で接続します。MariaDBの設定の中ではIPv4のポートはListenしていません。

入力を完了すると下のようになります。

WordPress用データベース設定例

テーブル接頭辞は、今回の構築例では標準のままで大丈夫です。左下の「送信」ボタンをクリックして次へ進みます。

WordPress用のデータベース接続情報後にインストールを開始

上の図のようになれば、いよいよデータベースにWordPress用の初期情報を書き込みます。左下の「インストール実行」をクリックします。正常に初期データベースを構築できると下の図を表示します。

WordPress用の初期データベース構築が完了

後はサイト名、管理者のユーザー名とパスワード、管理者のメールアドレスを設定してWordPressの初期設定が完了します。

Hyper-VとCentOSの力を借りて、Windows上にWordPressを容易にインストールして構築することができました。参考になれば幸いです。