ぽれいんのブログ

エンジニアになるために覚えたことを日記に付けます。

Linuxの基本操作

 

はじめに

4月からプログラミングを学んでおります。ポレインと申します。

私事ではございますが、7月からインフラエンジニアとして働くことになりました。

プログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

また、今後は研修で学んだことをまとめていきたいと思っております!

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

<前回の記事>

porain.hatenablog.com

 

 

 

 

Linuxとは

開発者:リーナス・トーバルズによってカーネル部分(核)が作られたサーバOS。

サーバOSの7,8割はLinuxが使用されている。他のサーバOSとしてはWindowsWindows ServerやUNIXSolarisがある。

Linuxオープンソースとしてリリースされ無償で配布されているため、企業の導入コストを抑えることができ、多くの企業に愛用されている。

ディストリビューション

○○Linuxのこと。流派としてRedHat系、Slackware系、Debian系があるが、ほとんどの現場でRedHat系のEnterprise(RHEL)やCentOSAmazon Linuxの3点のうちどれかが使われている。(同じ流派のためどれか1つを学んでいれば応用が効く)

SSH接続

Linuxでは複数での使用を前提としており、誰がシステムを使用したか分かるようにユーザの概念があります。そのため、システムを利用するにはユーザ登録を行い、ログインすることで「認証」される必要があります。

SSH接続は各種サーバ機器が遠隔にある状態でも安全にインターネット経由で接続することができます。

ルートユーザー

ルートユーザは絶対的権限を持つユーザ。神。GOD。

ルートユーザでのログイン方法。

ユーザログインしている際は、

①exit を実行してログアウト

②sudo su - を実行することでルートユーザとしてログインできます。

 

Linuxの基本操作

コマンドの基本的な入力方法は以下のようになります。

 

[porain@xxxXXXX ~]$ コマンド (-オプション) 引数1 引数2 ・・・

※間にはスペースの挿入が必要。(スペースがないとどこまでがコマンドか分からないため)

シェル (Windowsでいうエクスプローラ

ユーザとのやり取り(仲介)を行う。

人間ではハードウェアを直接制御できない。ハードウェアを制御、コントロールするのはカーネルカーネルへの指示だしのための命令もちょっと人間業では難しい…。)

ファイルの構造

Linuxディレクトリはルートディレクトリを頂点とするツリー構造になっている。

頂上をルートディレクトリ(/)と言い、枝分かれするように様々なディレクトリが広がっている。

また、自身が作業を行っている基点ディレクトリのことをカレントディレクトリという。確認する際は、pwdコマンドを使用する。

カレントディレクトリの移動(cdコマンド)ChangeDirectoryの略称
cd /home … /homeディレクトリに移動
cd .. … 一つ上のディレクトリに移動
cd - … 直前のディレクトリに戻る
cd … ユーザのホームディレクトリに戻る
cd . … カレントディレクトリに移動(移動しない)

当たり前ですが他のユーザのディレクトリには移動できません。

ファイルとディレクトリの一覧表示(lsコマンド)listの略称
ls              … 引数なしのためカレントディレクトリにあるディレクトリを表示
ls -a … -aオプションで隠しファイル、隠しディレクトリ含め表示
ls /user/local … 引数に取ったディレクトリにあるファイルを表示
ls -l … -lオプションはファイル、ディレクトリの詳細を表示
絶対パス相対パス

絶対パス…ルートディレクトリ(頂上)からの道筋を示したもの

相対パス…カレントディレクトリからの道筋を示したもの

郵便局で表すと、名古屋市の郵便局からはがきを出す場合、富山市宛は富山県から記入が必要(絶対パス)ですが名古屋市宛は名古屋市から書き始めても続きます。(相対パス

みたいな認識でいます。

 ファイルとディレクトリの操作コマンド(touch,cp,mv,mkdir,rm,ln)
touch touchfile         … touchfileを新規作成する
cp touchfile copyfile … touchfileをコピーしcopyfileを新規作成する
mv touchfile renamefile … touchfileをrenamefileに改名する
mkdir dir1 … ディレクトリdir1を新規作成する
cp copyfile dir1 … copyfileのコピーをディレクトリdir1内に同名で作成する
cp -r dir1 dir2 … dir1をコピーしたdir2を作成する
mv renamefile dir2 … renamefileをディレクトリdir2内に移動する
rm dir2/copyfile … dir2下のcopyfileを削除する

cpコマンドやrmコマンドは基本的にファイルを扱うものでオプションを指定しなければディレクトリを扱うことができません。 -rオプションで格納しているファイルやディレクトリをあつかうことができます。

シンボリックリンク

パスを短く省略化する方法としてシンボリックリンクがあります。

シンボリックリンクファイルには参照したいファイルのパス情報が登録され、長いパス名を省略できます。シンボリックリンクは、”㏑”コマンドで作成できます。 

シンボリックリンク ≒ (Windowsの)ショートカット という認識でいます。

テキスト表示とファイルの閲覧(echo,cat)
echo hello              … 引数に指定した文字列を表示
echo hello > test1 … 引数の”hello"をtest1というファイルに書き込む
cat test1 … テキストファイルの内容を確認
ファイルの検索(find)
find /etc -name resolv.conf … resolv.confという名前のファイルを検索

 エラー

No such file or directory … そのようなファイルはありません
command not found … そのようなコマンドはありません
Permission denied … パーミッションの設定ミス
ページャ(less)
less /var/log/dmesg  … ページをめくるようにファイルを閲覧

catと区別することができる。

ex. cat → 短い文章 less → 長い文章

コマンド入力の省略化
【↑】  … ヒストリ機能。以前入力したコマンドを参照し使用できる。
     この情報はユーザごとに別。
【Tab】 … 補完機能。コマンドとディレクトリ名やファイル名の補完をする
    入力間違い防止につながる。

 PATH変数

変数…Linuxの動作を決める設定値を入れておく「箱」

変数にはいろいろありますが、Tab補完に関するものとして、PATH変数があります。

この変数の中にはいくつかディレクトリが登録されています。

以下コマンドで確認できます。

echo $PATH

これらのディレクトリの中に含まれているコマンドは「パスが通っている」という状態でこれ以外は「パスが通っていない」という状態になります。

(パスが通っていないとTab補完できない)

 

                                     以上

コンピュータ基礎

はじめに

4月からプログラミングを学んでおります。ポレインと申します。

私事ではございますが、7月からインフラエンジニアとして働くことになりました。

プログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

また、今後は研修で学んだことをまとめていきたいと思っております!

※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

 

 

 

コンピュータ基礎

CPUとメモリとハードディスク

CPU = 「頭脳」 → 仕事・作業してる人の能力が高いこと

メモリ = 「デスク」 → 作業がはかどる

ハードディスク =「引き出し」 → 作ったものがたくさん入る

 

パス(path)

パス(path)… パソコン上のフォルダやファイルはツリー構造となっている。

最上位のフォルダからそのファイルまでの道筋をパスと呼ぶ。

区切りには¥を使用する(Windows

2進数

コンピュータは2進数 … 回路への電圧で数字を記憶するため。

(昔のドラクエのステータスの上限が255だったのは2進数8桁までだと256種類のため)

文字コード

元々は英数字の変換コードしかなかった。

半角英数字記号を8桁の2進数と対応付けるASUKIIコード

8桁の2進数では限界があるためひらがな・カタカナ・漢字は対応付けできない

=〉16桁の2進数と対応付けする。

マイクロソフト =〉 シフトJIS

UNIX =〉EUCUNIcode

と対応づけを行った会社が1社ではないため、利用者と提供者の文字コードがずれると、まったく意図しない文字が現れる。

これを「文字化け」という。

ファイルの種類

ファイルの種類にはテキストとバイナリがある。

テキストファイル…文字コードに従って書かれている主に人間にも理解しやすいように記述されたデータ形式のこと。

バイナリファイル…テキストファイル以外のファイル。(binary = 2進数の)

ex. mp3,jpg,pdf,excel,exe etc...

 キーボード

日本語配列英語配列がある

エンターキーがテトリスの形、pの横が@なら日本語配列

・記号の読み方

! エクスクラメーション

”   ダブルクォーテーション

# シャープ ハッシュマーク いげた

$ ダラー

& アンバサンド

’    シングルクォーテーション

~ チルダ

| パイプ

‘  バッククォーテーション

^ ハット

* アスタリスク

< 小なり(くの字)

> 大なり(逆くの字)

_ アンダーバー、アンダースコア(あんすこ)

Linux基礎コマンドまとめ

はじめに

4月からプログラミングを学んでおります。ポレインと申します。

私事ではございますが、7月からインフラエンジニアとして働くことになりました。

プログラミングスクールにて主にHTML、CSSRubyMySQL等について学びました。

クラウドについては、AWSにてターミナルやリナックスを少し学びましたので明日の入社に向けて覚えた知識をまとめたいと思います。

また、今後は研修で学んだことをまとめていきたいと思っております!

*1

 

 

ターミナルについて

ターミナルとはコマンドと呼ばれる命令文を用いてコンピュータの操作を行うツールです。コマンドは「Linux」コマンドや「UNIX」コマンドと呼ばれます。普段使っているパソコンのWindowsMac OSのようなOSのことで、ターミナルを用いて制御を行います。

ターミナルのように、コマンドでコンピュータを操作する環境のことを、CUIと呼び、一方でマウスやタッチパネルを使ったグラフィカルなユーザインターフェースをGUIと呼びます。開発のためのツールの多くはGUIではなくCUIであるターミナルのコマンドとして提供される。

基本のコマンド

以下はターミナル上で使う基本的なコマンドです。

pwd

pwdコマンドは、ターミナル上での現在のディレクトリを表示。

ls

lsコマンドは、現在のディレクトリの中にあるファイルやディレクトリを一覧表示。

mkdir

mkdirコマンドは、ディレクトリ内に新規ディレクトリを作成。

cd

cdコマンドは、現在のディレクトリから他のディレクトリへ移動。

touch

touchコマンドはファイルを新規作成。

less

lessコマンドはファイル編集せずに閲覧。

*1:※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。

開発の流れ

はじめに

 

4月からプログラミングを学んでおります。ポレインと申します。
本日は最近学んだruby on rails での開始の大まかな流れについて記入致します。(自分が後から見直したいため)

開発を始めるにあたっての大まかな流れについては
前回の記事にて記入しております。

<前回の記事>

porain.hatenablog.com

<開発環境>

  • データベース:MySQL
  • 開発環境:AWS
  • バージョン管理:Git

を使用しています。

 

 

 

 

開発の流れ

以降は以下の流れに沿って開発を行っていきます。

  1. Model
  2. Router
  3. ルーティングごとに
    (1)Controller
    (2)View

最初に最も重要であるModelから始めます。Modelは作成するWebアプリケーションの扱うデータを決めます。次にRouterです。RouterによってModelを置くURLを決定します。Routerが決まるとControllerが決まり、Controllerが決まるとViewが決まります。

Model

Modelはデータベースとの接続を行います。Modelはリソースであり、操作対象です。(データベースのレコード1つがModelのインスタンス1つに対応します。

Modelを作成する

下記コマンドを実行します。

$ rails g model モデル名 content:string

上記のコマンドにて、

が作成されます。

マイグレーションファイル

Railsではマイグレーションファイルというテーブル管理ファイルによって管理・実行されます。マイグレーションファイル内にはテーブルを作成・削除したり、カラムを追加・削除したりすることが記述されています。

マイグレーションファイルの実行

マイグレーションを実行して、データベースにテーブルを作成します。

$ rails db:migrate

マイグレーションファイルの実行後はこのファイルを修正してもテーブルの変更はできません。実行済みのものはそのまま削除しないように注意してください。一度実行したマイグレーションファイルを削除編集する場合は下記コマンドを実行

$ rails db:rollback

このコマンドで最後のマイグレーションファイルの適用を戻せます。これの後に、編集・削除をしましょう。

$ rails db:migrate:reset

また、マイグレーションファイルが既にテーブルに反映されているかどうかは下記コマンドで確認できます。

$ rails db:migrate:status

モデルファイル

モデルはデータベースやテーブル設計を前提とするため、マイグレーションが完了していないと使用することができません。

モデルファイルは基本的に app/models/直下に生成、配置されます。

またモデルファイルはApplicationRecordクラスを継承しています。

 app/models/クラス名.rb

class クラス名 < ApplicationRecord
end

Modelで使用するCRUD用メソッド一覧

メソッド名 用途
all 全てのレコードを取得
new 新規レコードのためのモデルインスタンスを作成
find idを指定して検索
find_by id以外でも指定して検索
where 検索条件を文字列、配列、ハッシュのいずれかの方法で与える
first 最初のレコードを1件だけ取得
save レコードの作成
update, save データの更新
destroy データの削除

モデルのCRUD操作

モデルはデータベースを参照するため、MySQLサーバの起動を確認して起動します。

$ rails c

変更をコミット

$ git status

$ git diff

$ git add .

$ git commit -m "model"

Router

 config/routes.rb

Rails.application.routes.draw do
  resources :モデル名(複数形)
end

上記は7つの基本ルーティングの省略形です。

基本ルーティング
  • CRUD
  • 一覧ページへのアクセス
  • 新規作成用のフォームページ
  • 更新用のフォームページ

 また、上記の resources の行において、 

resources :モデル名(複数形), except: [:index]

 とすることで、resources による7つのルーティングの自動生成から、特定のアクション(上記の場合は index )をルーディングから除外できます。

 

Router完成

config/routes.rb 

Rails.application.routes.draw do
  root to: 'モデル名(複数形)#index'

  resources :モデル名(複数形)
end

 上記の追加された行はトップページにアクセスされたときのルーティングの設定です。

今回は index アクションに設定しています。

Routerの確認

$ rails routes

resources :モデル名(複数形)

で生成される7つのルーティングのことをRESTfulなルーディングと呼びます。

 

* また、 rails/info/routes をURLに追加することでパスを調べることができます。

 

Controller

 Cotrollerとはユーザから送信されてきたHTTPリクエストの処理を担当するものです。 HTTP リクエストは Router から Controller の1つのメソッドに割り当てられます。Router と対応している Controller のメソッドのことをアクションと呼びます。 Controller は HTTP リクエストに対応した Model の取得や作成、保存などを行います。

 

Controllerの生成

下記コマンドを実行します。

$ rails g controller コントローラー名

コントローラー名はモデルの複数形を使います。

生成されたコントローラーファイルはモデルファイル同様、ApplicationRecordクラスを継承しています。

コントローラーファイル内でルーティングと同じ名前のメソッド名として定義すれば、対応させることができます。

resources :モデル名(複数形)で指定した RESTful なルーティングに対応するように モデル名(複数形)_controller.rb に追記していきます。

 

6.View

 View とは、 Controller が HTTP リクエストを処理し終えて、最終的に HTTP レスポンスとして返す Web ページです。全ては Web 上でのアプリケーションなので、最後には、Web ページの表示という形でユーザに見えないとどうなったのか結果がわかりません。

 View はユーザに向けて結果をお知らせするためのものです。 View には Controller によって選択された適切な Model が埋め込まれます。

先ほどの

$ rails g controller コントローラ名

によって、 app/views/コントローラー名/ フォルダが作成されているので、フォルダ内に、Controllerに対応するファイルを .html.erb の表示形式にて作成します。

 この後は、viewを編集します。

この工程を繰り返してどんどんアプリケーションを完成させていきます。

 

 

 

アプリケーション完成後

はじめに

4月からプログラミングを学んでおります。ポレインと申します。
本日は最近学んだruby on rails でのプロジェクトの完成後の大まかな流れについて記入致します。(自分が後から見直したいため)

 

<前回の記事>

porain.hatenablog.com

<開発環境>

  • データベース:MySQL
  • 開発環境:AWS
  • バージョン管理:Git

 

 

 

 

バージョン管理

バージョン管理を最新にします

$ git status

$ git diff

$ git add .

$ git commit -m "コミット名"

GitHubへ反映する

GitHubへ反映する流れ

  1. Githubにリモートリポジトリを作成
  2. ローカルリポジトリにリモートリポジトリを登録
  3. ローカルリポジトリのブランチ名を変更
  4. 登録したリモートリポジトリへプッシュ
  5. Githubのリモートリポジトリにプッシュされたか確認

Githubにリモートリポジトリを作成

Githubへアクセスし、右上のプラスボタンより「New repository」をクリックします。「Repository name」にリポジトリ名を記入し、「Public」が選択されていることを確認し、「Create repository」をクリックします。

ローカルリポジトリにリモートリポジトリを登録

git remote add origin https://github.com/ユーザ名/first-git.git

リモートリポジトリの登録内容を確認したい場合は下記コマンドで確認

git remote -v

ローカルリポジトリのブランチ名を変更

git branch -M main

登録したリモートリポジトリへプッシュ

git push origin main

Githubのユーザ名、パスワードが要求されるため入力します。(パスワードは表示されない)

 

GitHubのリモートリポジトリにプッシュされたか確認

https://github.com/ユーザ名/first-git

Herokuに反映する

Herokuに反映する流れ

  1. プロジェクトフォルダへ移動
  2. Herokuアプリを作成
  3. Heroku用の設定
  4. デプロイ
  5. マイグレーション
  6. 動作確認

プロジェクトフォルダへ移動

cd ~/environment/message-board/

Herokuアプリを作成

heroku create アプリケーション名

Herokuアプリが作成されたか確認

heroku apps

リモートリポジトリの確認

git remote -v

Heroku用の設定

Herokuの標準データベースはMySQLではなくPostgreSQLです。そのため、PostgreSQLを使用するための、設定を行います。

設定を行うファイルは

  • config/database.yml
  • config/environment/production.rb
  • Gemfile

の3つです。

config/database.yml

production以下を編集

production:
  adapter: postgresql
  encoding: unicode
  pool: 5
  database: message-board_production
  username: message-board
  password: <%= ENV['MESSAGE-BOARD_DATABASE_PASSWORD'] %>

config/environment/production.rb

以下をコメントアウト(26行目付近)

$ bundle install --without production

Gemfile

以下をGemfileの最後に追加します。

group :production do
  gem 'pg', '>= 0.18', '< 2.0'
end

以下をコメントアウト(15行目付近)

gem 'uglifier', '>= 1.3.0'

変更を更新します。

$ bundle install --without production

gitのコミットを最新に

$git status

$git add . $git commit -m 'for heroku'

デプロイ

git push heroku main

エラーが発生した場合

heroku stack:set heroku-18

マイグレーション

$ heroku run rails db:migrate

動作確認

$ heroku logs

とコマンドを打てばRailsアプリケーションのログが参照できます。

 

 

railsプロジェクトを開始する手順

はじめに

4月からプログラミングを学んでおります。ポレインと申します。
本日は最近学んだruby on rails でのプロジェクト開始方法の大まかな流れについて記入致します。(自分が後から見直したいため)

  • データベース:MySQL
  • 開発環境:AWS
  • バージョン管理:Git

を使用しています。

 

 

 

プロジェクト開始

まずはプロジェクトの開始方法からです。
現在フォルダをenvironment直下に移動し、railsプロジェクトを開始。

$ cd ~/environment/
$ rails _5.2.5_ new プロジェクト名 --database=mysql --skip-bundle --skip-test --skip-active-storage


プロジェクトを作成したら1度バージョン管理。

$ git status
$ git add . $ git commit -m "init Rails Project" $ git branch -M main

データベースとの接続

続いて、データベースとの接続を行います。(データベースとの接続を行わないとModelの保管場所がないため)
config/database.ymlの16.17行目あたりにあるusernameとpasswordの設定を以下の通りに変更。

  • username = dbuser
  • password = dbpass

データベースを作成。(エラーが発生した場合はMySQLサーバが起動しているか確認)

$ rails db:create


プロジェクトフォルダより下記コマンドを実行することでRailsサーバ起動。(RailsはPumaが標準サーバ)

$ rails s

正常にサーバが起動されている場合は下の画面が表示されているはずです。

Railsサーバが正常に起動している際の表示

Railsサーバが正常に起動している際の表示

ここまでの変更をコミットしておきましょう。

$ git status

$ git diff

$ git add .

$ git commit -m "create database"

初期設定

 ジェネレータの設定
これからrails g ... にてModelやControllerなどを作成しますが不要なものを自動で生成しないようにするために設定を行います。

$ cd ~/environment/プロジェクト名
$ touch config/initializers/generatars.rb

config/initializers/generators.rb

Rails.application.config.generators do |g|
  g.stylesheets false
  g.javascripts false
  g.helper false
  g.skip_routes true
end 

 これで、CSSJavaScript、Helper 関係のファイルは自動で生成されることはありません。また、Routerにルーティングを自動的に追加することもありません。

kaminariのインストール

kaminariというページネーション用のGemがあるので、インストールを行います。

Gemfileの最終行に以下を追加します。

Gemfile

gem "kaminari"

プロジェクトフォルダより、以下のコマンドを実行します。

$ bundle install

次にBootstrapのデザインをkaminariに追加するため以下のコマンドを実行します。

 

$ rails g kaminari:views bootstrap4

ここまでの変更をコミットしておきましょう。

$ git status

$ git diff

$ git add .

$ git commit -m "set preparation"

開発の流れ

以降は以下の流れに沿って開発を行っていきます。

  1. Model
  2. Router
  3. ルーティングごとに
    (1)Controller
    (2)View