Djangoのデータベースを正しくバックアップ、リストアする

Djangoのデータベースをバックアップ

Djangoのアプリをデプロイするのは良いですが、大切なデータは守りたいですよね。

今日はPythonのウェブフレームワーク、Djangoで作成したアプリケーションのデータベース(PostgreSQL)のデータベースをバックアップする方法を紹介します。

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

通常データベースのバックアップには下記の様な方法があります。

  • pg_dumpのコマンドを使ってダンプファイルを抽出する。
  • Djangoについてくるsqlclear/sqlallのコマンドを使う。
  • Djangoについてくるdumpdata/loaddataのコマンドをつかう。

正しくDjangoのデータのバックアップを取る

上記のやり方には不備があります。

これらの方法だと、メディアファイル、つまり、FileFiledを使ってアップロードされたデータはバックアップに含まれません。

更に、Python manage.py migrateのコマンドで作成されるテーブル、つまりはパーミッション、セッションはバックアップに含まれません。

ですので、今日紹介するライブラリを使って簡単に正しいバックアップを取るようにしましょう。

django-dbbackupをインストールする

では、django-dbbackupのライブラリをインストールします。

下記にリンクを付けるので参考にしてください。

https://pypi.org/project/django-dbbackup/

pip install django-dbbackup

#おまけです。
pip freeze > requirements.txt

次にプロジェクトのsettings.pyファイルに下記の様にインストールしたアプリを追加します。

INSTALLED_APPS = (
    ...
    'dbbackup',  # django-dbbackup
)

DBBACKUP_STORAGE = 'django.core.files.storage.FileSystemStorage'
DBBACKUP_STORAGE_OPTIONS = {'location': '/my/backup/dir/'}

バックアップを置く場所は下記の様に指定してもOKです。

DBBACKUP_STORAGE = 'django.core.files.storage.FileSystemStorage'
DBBACKUP_STORAGE_OPTIONS = {'location': BASE_DIR/'dump'}

dumpフォルダーを作成しました。ここにbackupを置くようにします。

バックアップをとる

ではこれでOK。下記のコマンドでバックアップが取れるか試してみましょう。

python manage.py dbbackup

バックアップファイルができました!

バックアップからデータをリストア

では、試しにデータを変えてみます。レコードを一つ追加してみました。

では、コマンドラインからバックアップを使ってデータをリストアしてみましょう。

このコマンドで一番新しいバックアップのファイルを使ってデータベースを上書きします。

python manage.py dbrestore

お見事!

データがバックアップの値に戻りました。

お疲れ様です。

Pythonでpsycopg2を使ってみる

Python Psycopg2 使い方

今日はPythonを使ってローカルのPostgreSQLのデータベースとつなげてみます。 今日の環境 psycopg2のインストール ではpipを使って、psycopg2をインストールしていきます。これは、PostgreSQLのデータベースのアダプターになります。 OKですね。 DBに接続する ではPgAdmin4、もしくはコマンドラインからデータベースと接続したテーブルがあることを確認しましょう。 接続したらちゃんと接続を閉じるのでそこまで書きます。 DBに接続できなかった時にエラーを出す方法 ダミーのデータを入れる 次にPythonでテーブルのデータを表示させる前にデータを入れておきます。 PostgreSQLのデータベースのデータを表示 では下記のコードで実際のデータベースのlistingテーブルのデータを表示させます。 では、コマンドプロンプトで試すとデータが表示されました! psycopg2でレコードを追加する では、PyhtonからPostgreSQLのデータベースにデータ(レコード)を追加しましょう。 下記のコードを追加しましょう。 レコードが追加されました! CSVファイルからデータベースに書き込む ではCSVファイルを使って、Postgresのターブルにデータをコピーさせます。 該当するカラムにデータを流し込む 先ほどのやり方だと、データベースのテーブルのカラムとCSVファイルのヘッダーの数が一致しないとシンタックスエラーとかになります。 これで解決します。 とりあえず、今日はこれくらいで! お疲れ様です。

Django REST APIを公開

DjangoAPI-Demo

皆さん、こんにちは。 今日は、PythonのウェブフレームワークDjangoで作成したREST APIを公開するので是非使ってみてください。 APIの概要 このAPIはコールセンターをイメージしたDBを構成し、CRUD操作(Create,Read,Update,Delete)を可能にしたAPIです。 もう一つにトークン認証でログインしたユーザーのみアクセスできるAPIもあります。 そちらは、81番ポートからアクセスしてください。今回はトークン認証の不要なAPIのみ紹介します。 使えるAPI 利用可能なAPI http://172.104.81.40/api/ このURL(URI)にアクセスすると、下記のように各URLからAPIにアクセスできます。 Office:オフィス情報のAPIです。 Staff:従業員のAPIです。Officeの情報が紐づいています。 Tickets:お客様からのコール情報に他のテーブル(スタッフ、店舗情報、チケットカテゴリ)が紐づいています。 Ticket-Categories:コールのカテゴリ情報です。 Company:企業情報です。 StoreS:各企業の店舗情報です。 Customer-contact:お客様の連絡先です。 Djangoセットアップの手順 下記のURLにソースコードがアップロードされているので自由にクローンして使ってください。 https://github.com/TraitOtaku/Django-TicketAppAPI Gitを使ってクローンからセットアップまでの手順です。 モデルの内容 各アプリのmodels.pyを参照して受け入れるデータタイプとデータが必須かどうかを確認してください。 blank=True, null=Trueの場合はデータがなしでもOKです。 シリアライザーの内容 各アプリのSerializers.pyが先ほどのDBとコミュニケーションをとるmodels.pyをシリアル化してAPIの役目をします。チケットの例でいうとReadのGETリクエストが来たときとその他のリクエストで別々のリスポンスを返すようにしています。その設定はViews.pyで行いますが、APIの内容はここで決めます。 https://github.com/TraitOtaku/Django-TicketAppAPI/blob/master/tickets/serializers.py UIからデータを操作してみる では、実際にDjangoのAPIのUIを使用してデータを操作してみましょう。 http://172.104.81.40/api/tickets/ 上記のJSONデータを入れてあげると、DjangoからAcceptのリスポンスが返されてデータが追加されました。 レコードの更新と削除 先ほど作成したレコードはIDが1で作成されました。このデータにアクセスするには下記のようにURLの最後にIDを追加すればOKです。 http://172.104.81.40/api/tickets/1/ そうするとDELETEのオプションと下記にPUTとPATCHのオプションが追加されるのでそこからレコードを削除するなり修正するなりできます。

Pythonでウェブスクレイピング – BeautifulSoup ②

Beautiful Soup使い方

では前回練習したウェブスクレイピングの続きを説明します。 前回の記事はこちらからどうぞ。 今日はヤフオクに表示されている入札価格と商品名などをスクレイピングしていきたいと思います。 requestsのライブラリをインストール ではPythonから実際のウェブサイトにアクセスするにあたりHTTPリクエストを送ることになります。その際にRequestsのライブラリを使うのでインストールしましょう。 前回、virtualenvで環境を作った人はアクティベートすることを忘れずに! ではページのHTMLをスクレイピングします。 ウェブページの内容が出てきました。 リスティングのHTMLを見る ではデベロッパーツールで各リストを囲っているカードのエレメントをみます。 見てわかるようにliエレメントでProductというクラスがありますね。 ではこのProductクラスをすべてスクレイピングします。 Pythonファイルを実行してちゃんとスクレイピングできているか確かめましょう。 次に一つのリスティングから必要な情報を吸い取ります。 ではこのリスティングをループさせます。 10分ごとにスクレイピングを実行させる では先ほどのコードをファンクションにして10分ごとに実行させるように設定します。 データをSCVに書き出す 日本語のエンコードは私は”utf_8_sig”で行いました。(アメリカのPCなので。。。 色々試してください。

Pythonでウェブスクレイピング – Beautiful Soup ①

PythonでBeautiful Soupを使ってみよう

今日はPython初心者の方でもわかるウェブスクレイピングについて説明します。 ウェブスクレイピングとはウェブサイトにある情報をスクレイプ(剥ぎ取る)という事です。 例でいうと、過去の天気予報の情報をサイトからスクレイピングしたり、Amazonのサイトの商品の情報をスクレイピングしたりできます。 そのデータをどうするかはあなた次第ですが、このPythonの得意分野である自動化という力を発揮できる素晴らしいプロジェクトになります。 下準備 Beautiful Soupとは Beautiful Soup(美しいスープ)はPythonのライブラリです。このライブラリを使ってウェフスクレイピングを行います。他にもウェブスクレイピングができるライブラリがありますが、一番お勧めがこのBeautiful Soupになります。 HTMLの基本を知っておく ウェブサイトのスクレイピングをするにあたり、HTMLの構造を知らないとどの情報をスクレイピングしたいのか指示ができません。 まずは簡単なサイトでスクレイピングの練習をしましょう。 簡単なHTMLで練習 ローカルの環境にテスト用でHTMLを作成してスクレイピングの練習をします。 不要な人は飛ばしてください。 ではPythonとBeautifulSoupをセットアップしていきましょう。 環境のセットアップ Pythonのライブラリをインストールする際にpip(パッケージマネージャー)を使用します。 このままパッケージをインストールしてしまうと、グローバルにパッケージがインストールされてしまいます。 個人で楽しむ分には問題ありませんが、今後、多数のプロジェクトを並行して作業するにあたり、仮想環境を準備するのが最適になります。 本題とはそれますが、それを学びたい方は下記の動画を見てください。 virtualenvのインストール 仮想環境を使いたい人はこちらのコマンドでインストールします。 インストールができたら仮想環境を作成します。 仮想環境をアクティベートします。 これでコマンドプロンプトの左側に環境名が表示されればOKです。 ここからPythonでインストールしたライブラリはenv内に格納されるのでアクティベートされたときのみPythonがアクセスできます。 BS4のインストール BeautifulSoup4を略してbs4と言います。 何事もインストールする前にはちょっとだけでも公式ドキュメンテーションを見ておくものです。 https://www.crummy.com/software/BeautifulSoup/bs4/doc/ ではこれをインストールしていきましょう。 インストールされました! lxmlのインストール BS4で作業するにあたり、HTMLのパーサー(読み込む役割)をするライブラリが必要になります。 LxmlはHTMLのパーサーのライブラリの一つで、お勧めなのでインストールしていきます。 コードを書く ではやっと下準備が整ったのでコードを書いていきましょう。 私は、テキストエディタはVSCodeを使います。皆さんが使っているものをどうぞ。 では下記のようにコードを書いていきます。 同じディレクトリにindex.htmlで下記の中身のファイルを作成します。 ではコマンドプロンプトからPythonファイルを実行します。 見事!HtmlのファイルがPythonから読み込まれました。 しかし、このままだとHTMLタグも入って見づらいのでbeautifulSoupのPrettifyを使ってキレイにしましょう。 さっきよりキレイになりました! HTMLタグで絞り込む .find ではH1タグのHTMLだけをスクレイピングしたい場合はこのようにします。 soup.findメソッドを使い、タグを指定してあげます。 .fins_all これだと最初のh1タグしかスクレイピングされませんね。 では、すべてのh1タグをスクレイピングするようにしましょう。 findのメソッドをfind_allに変えてみましょう。 すべてのh1タグがスクレイピングされました! … Read more

複数のDjangoのアプリを同じサーバーからデプロイする方法

複数のサイトを一つのサーバーからデプロイする方法

皆さん、こんにちは! Djangoのアプリはデプロイできたけど、複数のDjangoアプリを同じサーバーからデプロイしたいという方に是非読んでほしい記事です。 Djangoのアプリのデプロイができたら複数のDjangoアプリをデプロイすることも特に難しいことはないので是非チャレンジしてください。 今日の環境 Ubuntu 22.04のインストールされたサーバー SSHで接続できる状態 Djangoアプリが一つデプロイされている状態 詳しいDjangoのデプロイについては下記の記事から進めてください。 Djangoがデプロイができたらこの記事に戻ってきましょう! 今日はticketauthという名前のアプリをデプロイします。 あと、Linuxのコマンド(Bash)が少しわかっている方が理解しやすいです。 今日のスタック 今日は上記の記事で紹介したNginxをウェブサーバー、GunicornをWSGIのアプリケーションサーバーとして使用したものに2つ目のDjangoを追加するようにします。 Djangoがデプロイできた状態でさらにもう一つDjangoのアプリを同じサーバーからデプロイするような形で進めます。 ユーザーがアクセスする方法 同じサーバーに複数のドメイン(なんとか.comとか)でそれぞれのDjangoアプリに誘導する方法もあります。 今日は今使っている80番のポートがあるので81番のポートを開けてユーザーがIPアドレスから2つ目のDjangoアプリにアクセスできるようにします。 Djangoアプリをアップロード では、自身で作成したDjangoアプリ(2つ目)をアップロードしましょう。 場所はどこでもよいですが、前回はhome/user名の直下に置いたので同じ階層に置きます。 ticketapiが前回デプロイしたものです。 tikcetapiAuthが今アップロードしたばかりのものでこれからデプロイします。 下準備 では、前回の記事を参考にしながら、下記のDjangoの下準備を進めましょう。 Django用に仮想環境を作成 仮想環境をアクティベート pipでDjangoプロジェクトのライブラリをインストール Settings.pyのコンフィグ設定 DBの設定(PostgreSQLに接続) Staticファイルの扱い データベースのマイグレーション スーパーユーザーの作成 collectstaticの実行 ファイヤーウォールの設定 Djangoのテストサーバーでテスト Gunicornを使ってテスト Gunicornの設定ファイルの作成 ではDjangoのテストサーバーでIPアドレスからアクセスして問題がないようでしたら、2つ目のDjango用に新しくGunicornの設定ファイルを作成します。 今回使うのは、SocketファイルとServiceファイルです。 Gunicornのソケットファイルの作成 前回の記事でgunicorn.socketファイルを作成しているので2つ目のアプリ用と分かるような名称にして.socketファイルを作成します。 中身はこんな感じになります。 Gunicornのサービスファイルの作成 サービスファイルはGunicornがDjangoのファイルをプロセスするためのコンフィグファイルになります。 テストサーバー(python manage.py runserver)の本番用という事ですね。 では下記のコマンドでサービスファイルを作成します。 中身はこのような感じです。 次に下のコマンドでGunicornソケットを実行します。これで自動でソケットファイルが作成されます。 次にこれをEnable(実行:オン)にします。これで、ソケットに接続された際にsystemdが自動でgunicorn.socketを実行して処理してくれるようになります。 Gunicorn Socketファイルを確認しよう gunicorn.socketをアクティブにします。 … Read more

Gunicornってなに?

Gunicornって何

DjangoやFlaskなどのPythonアプリケーションをデプロイする際に使うGunicorn(ジーユニコーン)。 デプロイはできたけど、実際にどのような役目をしているのか分かりづらいですよね。 今日はGunicornについて紹介していきます。 Gunicornとは Gunicorn(Green Unicorn)は、PythonのWebアプリケーションサーバーであり、高速で拡張可能な環境でのWebアプリケーションのデプロイメントを容易にするために設計されています。 Gunicornは、WSGI(Web Server Gateway Interface)準拠のWebアプリケーションフレームワークと連携して動作します。WSGIは、PythonのWebアプリケーションとWebサーバーの間の標準化されたインターフェースです。つまり、GunicornはPythonのWebアプリケーションを受け入れ、HTTPリクエストを処理し、Webアプリケーションに渡す役割を果たします。 Gunicornの特徴的な特徴の一つは、マルチワーカーモデルを採用していることです。これにより、複数のプロセスを同時に実行し、複数のリクエストを同時に処理することができます。これにより、Webアプリケーションのパフォーマンスが向上し、ユーザーに迅速かつ効率的なレスポンスを提供することが可能になります。 さらに、Gunicornは拡張性に優れています。ワーカープロセスの数や接続数などのパラメーターを調整することで、サーバーの動作を調整することができます。また、NginxやApacheなどのリバースプロキシと組み合わせて使用することもできます。これにより、Gunicornは高トラフィックの環境でも優れたパフォーマンスを発揮することができます。 Gunicornはコマンドラインツールとして提供されており、比較的簡単にインストールして使用することができます。また、Pythonの仮想環境やDockerコンテナ内など、さまざまな環境で利用することができます。 要約すると、GunicornはPythonのWebアプリケーションを高速かつ拡張可能な方法でデプロイするためのサーバーソフトウェアです。マルチワーカーモデルと拡張性の高さが特徴であり、Webアプリケーションのパフォーマンス向上とスケーラビリティを実現します。 以下、さらに詳しく説明します。 Gunicornの定義 Gunicornの公式サイトに記載されているものを翻訳します。 Gunicorn もしくは緑のユニコーンとはPythoinのWSGI HTTPサーバーでUnixの為に作られました。これはPre-Forkワーカーモデルです。(※各ワーカーをアプリケーションごとに割り当てロードに必要なキャパシティ以上を割り当てる) Gunicornは様々なウェブフレームワークに対応し、簡単に実装でき、サーバーに負担のかからない、軽量なサーバーになります。 Gunicornができた経緯 Gunicorn(Green Unicorn)は、RubyのWebサーバーであるUnicornにインスパイアされて作られました。RubyのUnicornは、高パフォーマンスで信頼性の高いWebアプリケーションサーバーとして広く使用されていました。 Pythonのコミュニティでは、RubyのUnicornの成功とパフォーマンスの高さに触発され、同様の機能を持つPython用のWebサーバーが求められるようになりました。そこで、Python開発者のBenjamin PetersonがGunicornを開発しました。 Gunicornの開発は、2009年に始まりました。当初はワーカープロセスの管理やリクエストの処理など、基本的な機能の実装に焦点を当てていました。その後、GunicornはPythonのWSGI(Web Server Gateway Interface)仕様との互換性を持つように拡張され、Pythonの主要なWebフレームワークとシームレスに連携できるようになりました。 Gunicornは、PythonのWebアプリケーションサーバーとしての需要を満たすため、活発なオープンソースプロジェクトとして成長しました。開発者コミュニティの貢献により、Gunicornは安定性とパフォーマンスの向上が図られ、多くのユーザーによって利用されるようになりました。 また、Unixのアプローチとして、毎回アプリケーションのデプロイをするたびに下記の作業が必要でした。 以上の作業がアプリケーションのデプロイごとに必要になりとても時間がかかります。 それを解決するのがGunicornになります。 サーバーの仕組みを理解する Pythonのウェブアプリケーションのデプロイには下記の3つのスタックが必要になります。 ウェブサーバーはユーザーからのリクエストを受け、ドメインロジックとHTTPコネクションを担当します。ウェブサーバーは正しいリクエストだけを判別し、実際のDjangoアプリ等に渡してあげることが役目になります。 Django等のアプリケーションは各リクエストに対してリスポンスをすることしかできないことを理解しておきましょう。 ではアプリケーションサーバー(Gunicorn)の役目をこれから説明します。 Web Server Gateway Interface(WSGI)とは Web Server Gateway Interface(WSGI)は、PythonのWebアプリケーションとWebサーバーの間の標準化されたインターフェースです。WSGIは、PythonのWebアプリケーションフレームワークやWebサーバーの開発者が、相互に互換性のあるコンポーネントを作成するための共通のルールを提供します。 WSGIの主な目的は、WebアプリケーションフレームワークとWebサーバーを疎結合にすることです。これにより、異なるフレームワークやサーバーを組み合わせることができ、柔軟性と再利用性が向上します。WSGIを使用することで、Webアプリケーションの開発者は、特定のWebサーバーに依存しないアプリケーションを作成できます。 WSGIでは、2つの主要なコンポーネントが定義されています。 WSGIを使用する場合、Webサーバーとアプリケーションはお互いに疎結合であるため、異なる組み合わせが可能になります。これにより、異なるWebフレームワークを使用したり、Webサーバーを切り替えたりする際の柔軟性が向上します。 要約すると、WSGIはPythonのWebアプリケーションとWebサーバーの間の標準化されたインターフェースであり、疎結合性と柔軟性を提供します。WSGIによって、PythonのWebアプリケーションは異なるフレームワークやサーバーと組み合わせることができ、再利用性と相互運用性が向上します。 WSGIサーバーとしてのGunicorn Gunicornは複数のウェブサーバーと交信ができます。またGunicornはどのウェブサーバーを使っているかも気にしません。(例えばNginxとかApacheとか) GunciornはWSGIサーバーとしてウェブサーバーとコミュニケーションが取れることだけと条件としています。 GunicornはウェブサーバーとPythonアプリケーションの間に入り下記の問題を解決してくれます。なので自身で解決策を探す必要がありません。 Gunicornの代替オプション … Read more

Postgresのユーザーのパスワードを忘れた場合

PostgreSQL

サーバーで色々操作していてPostgresのデータベースで使うユーザーのパスワードを忘れた場合は下記の方法で新しいパスワードを再設定しなおしましょう。 今日の環境 Ubuntu22.04 PostgreSQL 14 今日の目的 Postgresの設定ファイルから仮でパスワードなしで接続できるようにします。 その後にコマンドから、新しいパスワードを設定しなおします。 最後にパスワードでデータベースに接続させるように再設定します。 ※作業にリスクがあると感じた場合はバックアップを取るなり自己責任で操作をしてください。 pg_hba.confを探す Postgrtesをインストールした後にpg_hba.confのコンフィグファイルも作成されます。ここでユーザーがどのようにデータベースに接続できるようにするか設定できます。 通常は下記のファイルパスにあります。 PostgreSQLのバージョンによりファイルの場所が少し変わるので注意します。 /etc/postgresql-9.1/pg_hba.conf /etc/postgresql/14/main/pg_hba.conf rootで入っている場合はpwdのコマンドでどこにいるか確認しましょう。 cd のコマンドとlsのコマンドを使いながらPostgresの場所を探します。 pg_hba.confを見つけました。 pg_hba.confのバックアップをとる では下記のコマンドでオリジナルのファイルをコピーしておきます。 ※パスワードをリセットしたらこっちに戻します。 ファイルがコピーで来たことを確認しました。 認証方法を変更する ではテキストエディタを使ってこのpg_hba.confを開きます。 もともとはこんな感じになっていますね。 これを下記のように変えます。 Ctl +X で抜け出し Yで上書き、エンターでファイル名をそのままにします。 Postgresのサーバーをリスタートする ではファイルを更新しただけではコンフィグを読み取ってくれないのでPostgresのサービスを再起動します。 postgresのユーザーで接続する ここでコンフィグをtrustにしたのでどのユーザーでもパスワードなしで接続できるようになりました。 ではpostgresのユーザーで接続してみます。 パスワードなしで入れました。 パスワードを更新する では更新したいユーザーのパスワードを下記のコマンドで更新します。 元のコンフィグファイルに戻す パスワードなしで誰でも接続できてしまうのは危険なので、元のファイルに戻します。 Postgresサーバーのリスタート 同じようにPostgresのシステムを再起動します。 これでpsqlのコマンドでパスワードが聞かれたらもとに戻っているという事ですね。 ではお疲れ様です。

UbutnuサーバーをVirtualBoxにインストールしよう

皆さん、お疲れ様です。

今日は、Ubutnu ServerのISOファイルを使って、VirtualBoxにインストールする作業を説明します。

Ubutnu のデスクトップバージョンも同じやり方でできますし、他のLinuxも同じ方法なので是非試してみてください。

特にお金のかかるサーバーをレンタルする前のテストにはもってこいです!

今日の環境

  • Windows10(VirtualBoxのホストPC、OSで何でもOKです。)
  • ホストPCのメモリが8G以上(理想は16G以上)
  • VirtualBoxがインストールされた状態
  • UbutnuServer22.04

VirtualBoxってなに?

VirtualBoxはOracle社が提供している仮想マシンのアプリケーションのことです。MicrosoftではHyper-Vという同じような仮想マシンを提供しています。他に、有名なものではVMWareというものもあります。

動画ではVirtualBox(以下、略してVB)のインストールから説明しているのでご覧ください。

ISOファイルをダウンロード

Ubuntuの公式サイトからUbuntu ServerのISOファイルをダウンロードしておきます。

https://ubuntu.com/download/server

VBインスタンスを作成

Instanceは事例、という意味ですが、プログラマーの世界では、プロジェクトの意味合いに近いものになります。

では、早速Newのボタンを押して新しいインスタンス(プロジェクト)を作成します。これが各OSがインストールされる仮想マシンになるわけですね。

で、マシン名と、メモリのサイズを指定していきます。サーバーだけならデスクトップよりもメモリは食わないので4Gあれば足りるかな?私は8Gに設定しておきました。これは後から調整できるので色々試してください。

で、Createをクリック。

ファイルサイズを指定します。

使用目的にもよりますが、使うと思う分のハードディスクを割り当ててください。

Hard Disk File Typeは、仮想マシンのファイル端子のことです。他の人とシェアしないならどれでも構わないと思います。

私はVMDKを選びました、これならエキスポートした仮想マシンファイルをVirtualBox以外のアプリケーションにインポートすることができます。

Storage on physical hard diskはハードディスクの容量をどのように区切るかの設定です。

通常はDynamically allocatedでOKです。これは、指定した分を実際にハードディスクから削り取るのではなく、使った分だけダイナミックにホストPCから割り当てるという事になります。

これで問題なければCreateを押します。

ネットワークの設定

では、インスタンスがハイライトされた状態でSettingsを押して詳細を確認します。 

ネットワーク設定を見てみましょう。

もし同じLANネットワークで使用したいのであればBrige Networkを使用しましょう。

その場合は、ホストPCが192.168.1.5とかなら、192168.5.16などの同じネットワークのIPが割り当てられます。

NATの場合はちょっと複雑になります。私の場合はとりあえずこのままでOKにしておきます。

インストールするOSを指定

ではStartボタンからマシンを起動しましょう。

そうするとスタートアップに使用するででディスクを指定してくださいというメッセージが出ます。

フォルダのアイコンをクリックしましょう。

Addを押します。

では、ダウンロードしておいたUbuntuサーバーのISOファイルを指定します。

Chooseを押します。

ではStartを押してマシンを起動しましょう。

Ubuntuサーバーのインストール

ではインストールが始まるので言語選択の画面になるまで待ちます。

日本語がないので英語で進めていきます。私はプログラミングは全部英語で行っています。皆さんも同じ習慣をつけることをお勧めします。

ではEnglishがハイライトされた状態でエンターを押します。

キーボードの設定をします。

キーボードのタブボタンを使って上下にスクロールします。スクロールアップの場合はシフトを押しながらタブになります。LayoutをJapanese、VariantをJapaneseにしましょう。

完了したらDoneを選択します。

特にハードディスクに制限がない場合は通常版のサーバーをインストールしましょう。

minimizedバージョン(軽量版)をインストールしても後から変更できるのでどっちでもOKです。

選択したらDoneをクリックします。

ネットワークの設定をします。

これも後から変更できるのでそのままにしてDoneにしましょう。

次のプロキシアドレスの設定も後から行うのでそのままdoneにします。

これもそのままDoneでOKです。

ストレージはヴァーチャルボックスで割り当てた分をUbuntuサーバーで使用できるようになっているのでデフォルトのまま次に進みましょう。

では全体のサマリーをみて問題がなさそうならdoneを押します。

そうすると確認のメッセージが出るのでContinueを選択しエンター。

Ubutnuのユーザーを作成します。

これはログインの際に使います。

こんな感じで適当に入力できたらDoneを押します。

次にオープンSSHサーバーをインストールするか聞かれます。

もしSSHの意味が分からない人は下記に説明の動画があるので見てみてください。

要約すると、ホスト側(ユーザー側)のPCのコマンドライン(シェル、コマンドプロンプト、ターミナル)からサーバー側のマシンにアクセスするためのツールになります。

これは必須の知識なので是非、練習してみましょう。

ですので、タブとエンターキーを使ってInstall Open SSHServerにチェックを入れてDoneを選択します。

次に他にインストールしたいアプリケーションがあれば選択してください。

個人的にnextcloudのファイル管理アプリが楽しそうだと思いました。

とりあえず今回はスキップするのでそのままDoneを選択します。

インストールが始まります。

インストールが完了したら下のオプションからReboot Nowを選択してマシンを再起動します。

バーチャルボックス側ではインストール用のISOファイルは外れると思いますが、一応それを確認して、サーバーが起動できることを確認します。

サーバーを再起動

サーバーを再起動すると先ほど設定したパスワードを聞かれます。

パスワードの部分は打っても何も動かないですが、入力されています。

ログイン情報を入力したらエンターを押します。

これでログインができました!

とりあえずUbuntu Serverがインストールできたので今日はこれでおしまいにします。

この後はサーバーの更新、初期設定をしたり、SSHで接続してWebサーバーを設定していきたいと思います。

良かったら他の記事も参考にしてください。

ではお疲れ様です。

DB BrowserでSQLiteのデータベースを作ろう

SQLiteの使い方

日本のプログラマーの皆さんこんにちは。今日はDB Browserを使ってSQLiteのデータベースを管理していく方法を紹介します。 エクセルのような感覚で始められるのでリレーショナルデータベースを使ったことがない人には得にお勧めです。 SQLiteってなに? SQLiteは下記のような長所があります。 オープンソースです。(ソースコードが一般に公開されています。) データベースの一種です。(MySQLとかPostgreSQLとかと同じ) ポータブルです。(OSに依存せず、DBファイルにそのままアクセスすることができます。) SQLiteの欠点はこのようなものがあります。 DBサーバー無しで使えるのでネットワークからアクセスできない。 大規模なアプリケーションには向いていない。 データサイズに制限がある。 本日の環境 Windows10(MacOSでも、Linuxでも問題ありません。) 本日の目的 今日も目的はSQLiteのデータベースがどのような仕組みで作れるのか見ていくことが目的になります。慣れてきたら、次回以降はSQL(クエリ)を書いてデータベースを操作できるようにしたいですね。 SQLite DB Browserをダウンロード では、SQLiteのデータベースの作業をするために下記の公式リンクからSQLite Browserをダウンロードしましょう。 https://sqlitebrowser.org/dl/ では、ダウンロードページに行ったらWindowsのポータブル版をダウンロードしましょう。 windowsにインストールしちゃいたい人は64bitのインストーラーをダウンロードしてもOKです。MacOCの人はMacの方からダウンロードしてください。 DBBrowserを展開 ではダウンロードした.exeファイルをダブルクリックしてファイルを展開しましょう。 Nextをクリックします。 ポータブル版のファイルをおきたいファイルパス(場所)を指定します。これだとダウンロードに展開されることになります。 では、Instalをクリック。 Finishをクリックで完了です。 SQLiteDatabaseBrowserを実行 では先ほど展開したファイルを開くと.exe実行ファイルがあるのでそれをクリックしてアプリを起動します。 データベースを作成 では、NewDatabaseのボタンを押してデータベースを作成します。 それからデータベース名を決めて、Saveします。名前は後から変更できるのでご心配なく。 Addをクリックしてカラム(Column)を追加します。 まずは、テーブル名をInventoryとかにしておきましょう。 今回は在庫管理業務で使えそうなデータベースを作ってみましょう。 では下記のようにカラムを追加していきましょう。 Nameはカラムの名前です。クエリで指定する際に使います。 Typeはデータのタイプになります。Textは文字のデータです。(数字を入れると文字データの数字として扱われます。プログラミングを学習する際に習いますね。) INTEGERは整数のことになります。 その横にあるチェックボックスを説明します。 NN NotNull(Null=データがないことを許さないという事です。) PK プライマリーキー(他のデータと被らない行を区別するためのキーです。) AI auto increment (自動で数字が足されていくことです。) U ユニーク(PKと同じですが、PKはテーブルに1つしか設定できないことに対しUは複数設定可能です。 では、今回設定した内容を説明します。 idはプライマリーキーでそれぞれのデータの行を区別するために設定しておきます。またAIにチェックが入っているので新しいデータが作成されるたびに数が1,2と増えていくようになります。 最後にadded_date(追加日)のDefault(デフォルト)の部分に下記のテキストを追加します。 CURRENT_TIMESTAMP デフォルトで初期値を設定することができます。もし何もインプットがない場合にデフォルトの値を記録することになります。 この場合は現在の日時を自動で入力するように指示したことになります。 では右下のOKボタンを押してDB(データベース)が作成されました。 … Read more