Linuxの基本操作
はじめに
4月からプログラミングを学んでおります。ポレインと申します。
私事ではございますが、7月からインフラエンジニアとして働くことになりました。
プログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
また、今後は研修で学んだことをまとめていきたいと思っております!
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
- はじめに
- Linuxとは
- Linuxの基本操作
- シェル (Windowsでいうエクスプローラ)
- ファイルの構造
- カレントディレクトリの移動(cdコマンド)ChangeDirectoryの略称
- ファイルとディレクトリの一覧表示(lsコマンド)listの略称
- 絶対パスと相対パス
- ファイルとディレクトリの操作コマンド(touch,cp,mv,mkdir,rm,ln)
- シンボリックリンク
- テキスト表示とファイルの閲覧(echo,cat)
- ファイルの検索(find)
- ページャ(less)
- コマンド入力の省略化
- 【↑】 … ヒストリ機能。以前入力したコマンドを参照し使用できる。 この情報はユーザごとに別。【Tab】 … 補完機能。コマンドとディレクトリ名やファイル名の補完をする 入力間違い防止につながる。
- PATH変数
Linuxとは
開発者:リーナス・トーバルズによってカーネル部分(核)が作られたサーバOS。
サーバOSの7,8割はLinuxが使用されている。他のサーバOSとしてはWindowsのWindows ServerやUNIXのSolarisがある。
Linuxはオープンソースとしてリリースされ無償で配布されているため、企業の導入コストを抑えることができ、多くの企業に愛用されている。
ディストリビューション
○○Linuxのこと。流派としてRedHat系、Slackware系、Debian系があるが、ほとんどの現場でRedHat系のEnterprise(RHEL)やCentOS、Amazon 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、CSS、Ruby、MySQL等について学びました。
また、今後は研修で学んだことをまとめていきたいと思っております!
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
コンピュータ基礎
CPUとメモリとハードディスク
CPU = 「頭脳」 → 仕事・作業してる人の能力が高いこと
メモリ = 「デスク」 → 作業がはかどる
ハードディスク =「引き出し」 → 作ったものがたくさん入る
パス(path)
パス(path)… パソコン上のフォルダやファイルはツリー構造となっている。
最上位のフォルダからそのファイルまでの道筋をパスと呼ぶ。
区切りには¥を使用する(Windows)
2進数
コンピュータは2進数 … 回路への電圧で数字を記憶するため。
(昔のドラクエのステータスの上限が255だったのは2進数8桁までだと256種類のため)
文字コード
元々は英数字の変換コードしかなかった。
半角英数字記号を8桁の2進数と対応付けるASUKIIコード
8桁の2進数では限界があるためひらがな・カタカナ・漢字は対応付けできない
=〉16桁の2進数と対応付けする。
と対応づけを行った会社が1社ではないため、利用者と提供者の文字コードがずれると、まったく意図しない文字が現れる。
これを「文字化け」という。
ファイルの種類
ファイルの種類にはテキストとバイナリがある。
テキストファイル…文字コードに従って書かれている主に人間にも理解しやすいように記述されたデータ形式のこと。
バイナリファイル…テキストファイル以外のファイル。(binary = 2進数の)
ex. mp3,jpg,pdf,excel,exe etc...
キーボード
・記号の読み方
! エクスクラメーション
” ダブルクォーテーション
# シャープ ハッシュマーク いげた
$ ダラー
& アンバサンド
’ シングルクォーテーション
~ チルダ
| パイプ
‘ バッククォーテーション
^ ハット
* アスタリスク
< 小なり(くの字)
> 大なり(逆くの字)
_ アンダーバー、アンダースコア(あんすこ)
Linux基礎コマンドまとめ
はじめに
4月からプログラミングを学んでおります。ポレインと申します。
私事ではございますが、7月からインフラエンジニアとして働くことになりました。
プログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
クラウドについては、AWSにてターミナルやリナックスを少し学びましたので明日の入社に向けて覚えた知識をまとめたいと思います。
また、今後は研修で学んだことをまとめていきたいと思っております!
ターミナルについて
ターミナルとはコマンドと呼ばれる命令文を用いてコンピュータの操作を行うツールです。コマンドは「Linux」コマンドや「UNIX」コマンドと呼ばれます。普段使っているパソコンのWindowsやMac OSのようなOSのことで、ターミナルを用いて制御を行います。
ターミナルのように、コマンドでコンピュータを操作する環境のことを、CUIと呼び、一方でマウスやタッチパネルを使ったグラフィカルなユーザインターフェースをGUIと呼びます。開発のためのツールの多くはGUIではなくCUIであるターミナルのコマンドとして提供される。
基本のコマンド
以下はターミナル上で使う基本的なコマンドです。
pwd
pwdコマンドは、ターミナル上での現在のディレクトリを表示。
ls
lsコマンドは、現在のディレクトリの中にあるファイルやディレクトリを一覧表示。
mkdir
mkdirコマンドは、ディレクトリ内に新規ディレクトリを作成。
cd
cdコマンドは、現在のディレクトリから他のディレクトリへ移動。
touch
touchコマンドはファイルを新規作成。
less
lessコマンドはファイル編集せずに閲覧。
*1:※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
開発の流れ
はじめに
4月からプログラミングを学んでおります。ポレインと申します。
本日は最近学んだruby on rails での開始の大まかな流れについて記入致します。(自分が後から見直したいため)
開発を始めるにあたっての大まかな流れについては
前回の記事にて記入しております。
<前回の記事>
<開発環境>
を使用しています。
開発の流れ
以降は以下の流れに沿って開発を行っていきます。
- Model
- Router
- ルーティングごとに
(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 でのプロジェクトの完成後の大まかな流れについて記入致します。(自分が後から見直したいため)
<前回の記事>
<開発環境>
バージョン管理
バージョン管理を最新にします
$ git status
$ git diff
$ git add .
$ git commit -m "コミット名"
GitHubへ反映する
GitHubへ反映する流れ
- Githubにリモートリポジトリを作成
- ローカルリポジトリにリモートリポジトリを登録
- ローカルリポジトリのブランチ名を変更
- 登録したリモートリポジトリへプッシュ
- 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に反映する流れ
- プロジェクトフォルダへ移動
- Herokuアプリを作成
- Heroku用の設定
- デプロイ
- マイグレーション
- 動作確認
プロジェクトフォルダへ移動
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 でのプロジェクト開始方法の大まかな流れについて記入致します。(自分が後から見直したいため)
を使用しています。
プロジェクト開始
まずはプロジェクトの開始方法からです。
現在フォルダを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
正常にサーバが起動されている場合は下の画面が表示されているはずです。
ここまでの変更をコミットしておきましょう。
$ 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
これで、CSS、JavaScript、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"
開発の流れ
以降は以下の流れに沿って開発を行っていきます。
- Model
- Router
- ルーティングごとに
(1)Controller
(2)View