ブログサイトの構築
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
↑↑まだ見ていない方はこちらから↑↑
本日のやりたいこと
今回はAmazonEC2のインスタンス上にブログサイトを構築します。
ブログサイトには「wordpress」というブログ用のソフトウェアを使用します。
使用する環境
- サーバー
- Amazon EC2
- インスタンスタイプ: t2.micro (1台)
- オペレーティングシステム: Amazon Linux 2
- Amazon EC2
- ソフトウェア
- 参考
構築の流れ
以下の手順で構築を行います。
----------------------------------------------------------
①Apache をインストールする
②PHPをインストールする
③MariaDBをインストールする
④phpMyAdominをインストールする
⑤WordPressをインストールする
⑥データベースのセットアップ
⑦WordPressの設定
-----------------------------------------------------------
いざ構築!!
①Apache をインストールする
rootユーザになる
sudo su -
httpdをインストール
yum install httpd
(yを押下)
systemctl enable httpd
systemctl start httpd
②PHPをインストールする
PHPをインストール
amazon-linux-extras enable php7.3
yum install php php-gd php-mysqlnd php-xmlrpc -y
→Conplete! でインストール完了!
※バージョンは最新のものに適宜置き換えてください。
③MariaDBをインストールする
MariaDBをインストール
yum install mariadb mariadb-server -y
systemctl enable mariadb
systemctl start mariadb
mysql_sequre_installationを実行
mysql_secure_installation
⑴ Enter current password for root (enter for none):
データベースのrootユーザのパスワードはまだ設定されてないので
何も入力せずにenterを押す。
⑵ enter current password for root (enter for none):
データベースの root ユーザーのパスワードをこれから設定したいので
'Y' と入力して Enter を押す。
⑶ Set root password? [Y/n]
安全なパスワードを 2回入力
New password:
Re-enter new password:
Password updated successfully!
⑷ 以下全部 Y を入力
④phpMyAdominをインストールする
※このphpMyAdminをダウンロードする工程は飛ばしても構築は可能です。
急ぎの方は⑤にお進みください。。。
phpMyAdminの関連パッケージをインストール
yum install php-mbstring php-fpm -y
Apacheを再起動
systemctl restart httpd
カレントディレクトリを/var/www/htmlに移動
cd /var/www/html
phpMyAdminをダウンロード
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
phpMyAdminディレクトリを作成してphpMyAdmin パッケージを展開(解凍)し元のファイルを削除
mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
rm phpMyAdmin-latest-all-languages.tar.gz
:yを入力
ブラウザよりアクセス
<URL>
http://[パブリックDNS]/phpMyAdmin
ユーザ名 : root
パスワード: mysql_secure_installation
で設定したパスワード
を入力して "実行" ボタンをクリック
これで、普通SQL文を書いて行うデータの登録や更新といった管理をGUIで感覚的に行うことができるようになります。今回はCUIでSQL文を書いてデータ登録等を行いますので使いません。
⑤WordPressをインストールする
ホームディレクトリに戻る
cd
pwd
WordPress関連パッケージをダウンロードして展開(解凍)
wget https://wordpress.org/latest.tar.gz
tar -xzvf latest.tar.gz
⑥データベースのセットアップ
mysqlにログイン
mysql -u root -p
※mysql_sequre_installationにて設定したパスワードを入力
データベースのユーザーとパスワードを作成
CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY 'your_strong_password';
※your_strong_passwordはご自身で考えたパスワードをご使用ください。
データベースを作成
CREATE DATABASE `wordpress-db`;
データベースに対して、さきほど作成した wordpress-user
ユーザーの権限を追加
GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"localhost";
すべての変更を有効にするため、データベース権限をフラッシュ
FLUSH PRIVILEGES;
mysql クライアントを終了
Ctrl+DでExit
⑦WordPressの設定
ホームディレクトリに戻る
cd
pwd
WordPressの設定ファイルを変更する前にバックアップを作成
cp wordpress/wp-config-sample.php wordpress/wp-config.php
設定ファイルを編集
vi wordpress/wp-config.php
以下を変更
-----------------------------------------
define( 'DB_NAME', 'database_name_here' );
を
define( 'DB_NAME', 'wordpress-db' );
に変更
define( 'DB_USER', 'username_here' );
を
define( 'DB_USER', 'wordpress-user');
に変更
define( 'DB_PASSWORD', 'password_here' );
を
define( 'DB_PASSWORD', 'your_strong_password');
に変更
--------------------------------------------
※your_strong_passwordはご自身で設定したパスワード。
⑦Wordpressファイルの配置
Wordpressディレクトリを/var/ww/html/blog/ディレクトリにコピー
mkdir /var/www/html/blog
cp -r wordpress/* /var/www/html/blog/
httpd.confのバックアップを作成し、#を排除
cd /etc/httpd/conf
mv httpd.conf httpd.conf.org
grep -v -e '^#' -e ' #' httpd.conf.org > httpd.conf
ホームディレクトリに戻る
cd
pwd
httpd.confを修正
vi /etc/httpd/conf/httpd.conf
以下を変更
-----------------------------------------
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None → AllowOverride All
Require all granted
</Directory>
-----------------------------------------
Apacheによるファイル書き込みの許可
sudo chown -R apache /var/www
sudo chgrp -R apache /var/www
sudo chmod 2775 /var/www
find /var/www -type d -exec sudo chmod 2775 {} \;
Apacheの再起動
sudo systemctl restart httpd
ブラウザよりWordPressをインストール
<URL>
http://[パブリックDNS]/blog/wp-admin/install.php
<補足>
#エラーが発生する場合
<URL>
http://[パブリックDNS]/blog/wp-admin/install.php
を表示しようとしてもエラーが出る場合は、⑦の設定ファイルに誤りがある可能性があるので確認してみてください。
もし、誤りがみつかった場合は変更を保存した後に以下コマンドより、⑦で行ったコピー元にも反映させてください。
cp wordpress/wp-config.php /var/www/html/blog/wp-config.php
yを押下でコピーを承諾
以上
EC2でknowledgeアプリを構築する ②
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
前回の記事:
javaアプリの配備
配備場所のディレクトリ作成
cd /usr/local/tomcat/webapps
mkdir knowledge
cd knowledge/
アプリケーションのダウンロード
wget https://github.com/support-project/knowledge/releases/download/v1.13.1/knowledge.war
ダウンロードしたファイルの解凍
jar xf knowledge.war
不要ファイルの削除
rm knowledge.war
アプリケーションの権限変更
cd ../
chown -R tomcat:tomcat knowledge
Tomcatの再起動
systemctl restart tomcat
http://グローバルIP/knowledge/open.knowledge/list
PostgreSQLの構築
yumでインストール
yum install postgresql-server postgresql-devel postgresql-contrib
postgresql-setup initdb
接続許可設定
vi /var/lib/pgsql/data/pg_hba.conf
下記のident部分をtrustに書き換える
--------------------------------------
local all all ident
host all all 127.0.0.1/32 ident
↓↓
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
--------------------------------------
自動有効化と起動
systemctl enable postgresql.service
systemctl start postgresql.service
ユーザー、DB、作成
su - postgres
psql
ユーザ作成
CREATE ROLE knowledge_user LOGIN PASSWORD 'knowledge_user';
権限付与
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO knowledge_user;
データベース作成
CREATE DATABASE knowledge_db OWNER knowledge_user;
psqlから抜ける
\q
\は¥に置き換えてください。
動作確認
アクセス
http://グローバルIP:8080/knowledge
EC2でknowledgeアプリを構築する ①
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
↑↑まだ見ていない方はこちらから↑↑
本日のゴール
本日する作業のイメージ図です。
サーバにログイン/rootにスイッチ
rootユーザになる。
sudo su -
/optに移動。
cd /opt
JDKインストール
JDKをダウンロードする
wget https://corretto.aws/downloads/latest/amazon-corretto-8-x64-linux-jdk.tar.gz
※バージョンは最新のものに置き換えてください。
解凍する
tar zxf amazon-corretto-8-x64-linux-jdk.tar.gz
javaへのパスが通るようにする
vi /root/.bash_profile
以下のように変更
--------------------ここから------------------------------
・変更前
PATH=$PATH:$HOME/bin
・変更後
PATH=$PATH:$HOME/bin:/opt/amazon-corretto-8.302.08.1-linux-x64/bin
--------------------ここまで------------------------------
※バージョンは最新のものに置き換えてください。(ls で確認)
修正したbash_profileをソースコマンドで再読み込みする
. /root/.bash_profile
Tomcatインストール
javaバージョン
java -version
-bash: java: command not foundと表示される場合、Javaが入っていないのでダウンロードする
yum install -y java-1.8.0-openjdk-devel.x86_64
※バージョンは最新のものに置き換えてください。
tomcatユーザを追加する
useradd -s /sbin/nologin tomcat
Tomcatをダウンロードする
wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.50/bin/apache-tomcat-9.0.50.tar.gz
解凍する
tar zxf apache-tomcat-9.0.50.tar.gz
cd /usr/local
mv /opt/apache-tomcat-9.0.50 ./
所有者とグループをtomcatにする
chown -R tomcat:tomcat apache-tomcat-9.0.50
シンボリックリンクを張る
ln -s apache-tomcat-9.0.50 tomcat
この時点でllコマンドで以下のようになっていればOK!
total 0
drwxr-xr-x 9 tomcat tomcat 220 Jul 29 09:42 apache-tomcat-9.0.50
drwxr-xr-x 2 root root 6 Apr 9 2019 bin
drwxr-xr-x 2 root root 6 Apr 9 2019 etc
drwxr-xr-x 2 root root 6 Apr 9 2019 games
drwxr-xr-x 2 root root 6 Apr 9 2019 include
drwxr-xr-x 2 root root 6 Apr 9 2019 lib
drwxr-xr-x 2 root root 6 Apr 9 2019 lib64
drwxr-xr-x 2 root root 6 Apr 9 2019 libexec
drwxr-xr-x 2 root root 6 Apr 9 2019 sbin
drwxr-xr-x 5 root root 49 Jul 6 17:24 share
drwxr-xr-x 2 root root 6 Apr 9 2019 src
lrwxrwxrwx 1 root root 20 Jul 29 09:42 tomcat -> apache-tomcat-9.0.50
setenvを新規作成する
vi /usr/local/tomcat/bin/setenv.sh
---ここから--------------------------------------
#!/bin/sh
CATALINA_HOME=/usr/local/tomcat
JAVA_HOME=/opt/amazon-corretto-8.302.08.1-linux-x64
JAVA_OPTS="-Xms128m -Xmx512m"
---ここまで--------------------------------------
※バージョンは最新のものに置き換えてください。
server.xmlを設定する
vi /usr/local/tomcat/conf/server.xml
以下のように変更。(コマンドモードで/unpackで検索できます。)
--------------------------------------------
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
↓↓
<Host name="localhost" appBase="webapps"
unpackWARs="false" autoDeploy="false">
--------------------------------------------
tomcat.serviceのパーミッションを変更する
vi /etc/systemd/system/tomcat.service
-----ここから-----------------------------
[Unit]
Description=Apache Tomcat 9
After=network.target
[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/usr/local/tomcat/tomcat.pid
RemainAfterExit=yes
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReStart=/usr/local/tomcat/bin/shutdown.sh;/usr/local/tomcat/bin/startup.sh
[Install]
WantedBy=multi-user.target
------ここまで----------------------------
パーミッションを変更
chmod 755 /etc/systemd/system/tomcat.service
自動起動を有効化して、tomcatを起動する。
systemctl enable tomcat
systemctl start tomcat
Apacheのインストール
yumでhttpdをインストール
yum install -y httpd
デフォルト設定をorgで保存し、コメントアウト行を削除する
cd /etc/httpd/conf
mv httpd.conf httpd.conf.org
grep -v -e '^#' -e ' #' httpd.conf.org > httpd.conf
※「' #'」の間にあるのは、半角スペース4つ
proxy設定を追記
vi httpd.conf
一番下に下記を追記
---ここから--------------------------------------
ProxyRequests Off
ProxyPass /knowledge http://127.0.0.1:8080/knowledge
---ここまで--------------------------------------
自動起動を有効化して、httpdを起動する。
systemctl enable httpd
systemctl start httpd
アクセス
http://グローバルIP
以上で、アプリケーションサーバの起動が完了致しました。
長くなりましたので次回の記事で
以下、次回記事のリンク
Apache
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
↓↓前回の記事↓↓
Apache
Apacheとは
Apache HTTP Serverは、Apache Software Foundationで開発された強力な商用オープンソースWebサーバです。
現在のネットワーク環境の確認
Apacheのセットアップ
パッケージの入手とインストール
LinuxにhttpdのRPMパッケージがインストールされているかどうかを確認し、インストールされていない場合、”httpd”をインストールします。
yum list installed httpd
yum install httpd
Apacheの起動
Apacheの起動
systemctl start httpd
動作確認
Apacheのサーバプロセスが動作しているか確認します。
ps -efH | grep httpd
以下のコマンドでTCPポート80番でApacheが受付しているかどうか確認します。
netstat -anp | grep httpd
Apacheテストページの表示確認
Windowsのブラウザ(chrome,safari等)を起動して、以下URLを入力します。
http://グローバルIPアドレス//
ログの確認
tailコマンドを実行しログの内容を確認します。
tail /var/log/httpd/access_log
tail /var/log/httpd/error_log
自動起動設定
linux起動時に自動的にApacheが起動するようになっているか以下コマンドで確認します。
chkconfig --list httpd
以下コマンドで自動起動をオンにします。
systemctl enable httpd
Apacheの基本設定
メイン設定ファイルの書式
Apacheのメイン設定ファイルは、/etc/httod/conf/httpd.confとなります。このファイルを編集することで、Apacheの動作を様々に変更することができます。
Apacheの基本ディレクティブ
wwwサーバ管理者のメールアドレス設定(ServerAdmin)
Apacheの設定ファイル/etc/httpd/conf/httod.confをviで開き、以下のServerAdminディレクティブの設定行に移動します。
vi /etc/httpd/conf/httpd.conf
ServerAdminディレクティブの書式
ServerAdmin 管理者のメールアドレス
DocumentRootディレクティブの書式
DocumentRoot ディレクトリパス
デフォルトの設定では、ドキュメントルートは、”var/www/html”ディレクトリになっています。ブラウザから以下のような」要求を送信した場合、wwwサーバは ”/var/www/html/index.html"ファイルをブラウザが要求してきたものとして処理します。
テストファイルによる確認
ドキュメントルート直下にtest.htmlファイルを作成して、ブラウザから以下URLで作成したページの内容が表示されるかどうか確認します。
まず、"vi"コマンドを用いて、test.htmlファイルの新規作成を行います。
vi /var/www/html/test.html
-----------------------------------------------------------------
This is test page.
-----------------------------------------------------------------
テスト用のURLが完了したら、ブラウザのアドレス欄に以下のURLを入力し、テストページが表示されるかどうか確認します。
http://グローバルIPアドレス/test.html
AWS ~仮想サーバー/インスタンス編~
はじめに
4月からプログラミングを学んでおります。ポレインと申します。
私事ではございますが、7月からインフラエンジニアとして働くことになりました。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
7月からインフラエンジニアとしての人生をスタートさせた私ですが、自己学習環境が欲しい!!となりましたので、Amazon EC2を使用することにしました。
インフラの学習環境を整えるには、サーバ本体を買って......ネットワークを構築して.......その他もろもろ設定してうわあああ大変だあ.......ってイメージだったんですが、インターネットで手順を覚えれば簡単にしかも無料でできる(AWSアカウント登録から1年間)と知って驚きました。
そんなAWSを利用したインフラの学習環境の整え方について紹介していきたいと思います。
<前回の記事>
<参考>
AmazonのAWS EC2とは?はじめての人向けに解説|TECH PLAY Magazine [テックプレイマガジン]
Amazon EC2とは何か?「インスタンス」など関連用語もまとめて解説【保存版】 連載:やさしく学ぶAWS入門|ビジネス+IT
Amazon EC2とは
Amazon EC2(Amazon Elastic Cloud)はLinuxやWindows等の仮想サーバを作成できるサービスです。利用者は数分でサーバを作成でき、作成後のマシンスペック変更や削除も簡単に実行できます。サービスの利用方法は課金制であり、サーバ上で稼働しているアプリケーションが高負荷となりCPUやメモリが不足した場合は、インスタンスタイプを変更することでスペックの増強が可能です。またデータ量が多くなってディスク容量が不足になった場合もすぐに拡張が可能です。
個人的には手軽にすぐ使えることが一番のメリットかなと思います。(使い始めて3日目で何言うてるねん)orz
使用方法
前提条件:AWSのユーザ登録をしている
AWSのホームページにログインする
※上のリンクからログインできます。
仮想マシンの起動
左上のサービスを選択
すべてのサービス→コンピューティング→EC2をクリック
(☆をクリックするとお気に入りにすることができて便利です。)
インスタンス起動 → インスタンス起動
ステップ1:Amazonマシンイメージ(AMI)
無料利用枠はWindowsやRedHat,SUSE Linux,Ubuntuなど様々ありますが今回はAmazon Linux 2 AMI (HVM), SSD Volume Type を選択します。
ステップ2:インスタンスタイプを選択
ここでは使用するアプリケーションに合わせて適切なリソースの組み合わせを選ぶことができます。インスタンスタイプによってさまざまなCPU、メモリ、ストレージ、ネットワークパフォーマンスの組み合わせがあります。
今回は無料で利用できるインスタンスタイプ:t2.microを選択します。
ステップ3:インスタンスの詳細設定
要件に合わせてインスタンスを設定します。
今回は学習環境を整えるのみなので何も変更せずに次のステップへ進みます。
ステップ4:ストレージの追加
インスタンスに追加の EBS ボリュームやインスタンスストアボリュームをアタッチするか、ルートボリュームの設定を編集することができます。
こちらも何も変更せずに次のステップへ進みます。
ステップ5:タグの追加
タグを定義することでルールを追加することができます。
今回はキー:Name と 値:test というタグを追加します。
タグについてはこちらのサイトで詳しく書かれていたので是非ご覧ください。
(丸投げ)
ステップ6:セキュリティグループの設定
AWSにおけるファイアウォール環境の設定です。学習環境のため、SSH、HTTP、HTTPSの通信のみ許可します。
以下のように設定
セキュリティグループについてはこちらのサイトで詳しく書かれていたので是非ご覧ください。(丸投げ)
※ちなみに説明に日本語が入っている場合、以下のエラーが発生。
Invalid rule description. Valid descriptions are strings less than 256 characters from the following set: a-zA-Z0-9. _-:/()#,@[]+=&;{}!$*
ステップ7:インスタンス作成の確認
内容に間違いがないことを確認し、起動をクリック。
すると以下の画面が出てきます。
これはSSH接続をするためのキー(鍵)です。こちらを使ってTera Termにて接続を行うため、ダウンロードした場所が分からないってことがないように気を付けてください。
キーペア名の下に好きな名前を入力し、キーペアのダウンロードをクリック。
そして、インスタンスの作成をクリック。
以上
システム管理2
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
LVM
論理ボリュームマネージャ(logical volume manager, LVM)は、「物理ボリューム」を提供するハードディスクなどのデバイスに直接ファイルシステムを作成するのではなく、一旦「論理ボリューム」と呼ばれる仮想化されたボリュームに束ねて利用するためのシステムです。これにより、動的かつ自在にディスクのパーミッションを変更できるようになります。
LVMを利用する流れ
- ハードディスクに物理ボリューム(PV)を作成する
- PVを束ねてボリュームグループ(VG)を作成する
- VGから論理ボリューム(LV)を好きな容量だけ切り出す
- LVにファイルシステムを作成して、マウントして使う
logrotate
logrotateとは
ログファイルの扱いはシステム管理の中でも重要な1つです。「ログファイル」とは、システムログ、Apacheのアクセスログ、Cronのログ、ログイン情報(secure)などがあります。日ごろからそれぞれのログファイル容量が肥大化しすぎないように管理が必要です。Linuxディストリビューションのほとんどには「logrotate」と呼ばれるログを自動化に回すツールがインストールされています。logrotateのメリットとしては容量の肥大化を回避させることにあります。
logrotateの仕組み
logrotate自体の実行スケジュールはCronで設定されています。どのようにログのローテーションが行われるのかは、cronデーモン設定を確認すれば分かります。
cat /etc/cron.daily/logrotate
ファイル内容より「usr/sbin/logrotate」バイナリが「etc/logrotate.conf」設定ファイルに沿って実行されることを意味しています。
cat /etc/logrotate.conf
-----------------------------------------------------------------
# see "man logrotate" for details
# rotate log files weeklf
weekly
# keep 4 weeks worth of backlogs
rotate 50
mail root
# send errors to root
erroors root
# create new(empty)log filef after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own lastlog or wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
-----------------------------------------------------------------
「etc/logrotate.conf」ファイル内にそれぞれのログファイルの設定を記述することもできますが、サービスごとに設定ファイルを分けた方が分かりやすいとの判断から、標準設定ではetc/logrotate.dディレクトリ下を参照するようになっています。
例えば、Apacheをyumでインストールすると、自動的にこのディレクトリの配下にログローテーションの設定が記載されたファイルが作成されます。では、システムログ(syslog)の設定内容をみてみましょう。
cat /etc/logrotate.d/syslog
/var/log/messages {
rotate 50
weekly
postrotate
/usr/bin/killall -HUP syslogd
endscript
}
各サービスで個別にセットした設定の方が、logrotate.conf内の全体設定よりも優先されます。
時刻合わせ
時計合わせとは
linuxシステムの時刻がズレている場合、アクセスログやシステムログの時刻もずれてしまう事になりトラブルシューティングなどの際に困ることになります。そこでlinuxにはntpdやchronydというNTPを利用した時刻合わせ専用のデーモンがインストールされます。
NTP
NTPとは「Network Time Protocol」の略で、簡単に言えば、ネットワーク上で時間を同期するプロトコルのことです。NTPにはNTPサーバから取得した時刻値、そのNTPサーバからLinuxに時刻値が到達するまでの通信時間の補正も含まれており、最も妥当だと思われる時刻同期ができるようになっています。
- クライアントがクエリを発信した時刻
- サーバがクエリを受信した時刻
- サーバが応答を発信した時刻
- クライアントが応答を受信した時刻
NTPの仕組み
NTPサーバは階層構造で管理され、NTP自体の階層はストラタムと呼ばれ、ストラタムは1から16まで存在する。数字が小さいほど、正確な時刻を刻んでおり、また存在するサーバ数も少なくなります。
Linuxではntpdateコマンドを使って、NTPサーバから正確な時刻を取得できます
ntpdate NTP サーバ名
現在時刻を確認するにはdateコマンドを利用します。
date
時刻修正について
サーバを運用する段階で、そのサーバの時刻が大きく狂ってしまったとして、その場合にいきなり、NTPサーバとの正確な時間に同期させていけません。時刻を即座に正しい時刻に合わせるモードを「stepモード」、徐々に時刻を合わせるモードを「slewモード」と言います。
NTPサーバ負荷
NTPクライアントから時刻同期をおこなう場合は、なるべくストラタムの番号の大きなサーバを指定して同期しましょう。もし、NTPクライアント全てがストラタム1サーバと同期した場合、その時刻サーバはトラフィック負荷に耐え切れず、時刻が狂ってしまう可能性すらあります。NTPクライアントが多いようであれば、組織内に自前でNTPサーバを用意してもいいです!
syslog
syslogとは
syslogとはlinuxシステムやプロセスから出てくるアラートなどの情報を、ネットワークで転送したり、ログとしてファイルに保存していくクライアント/サーバ型の仕組みのことです。syslogメッセージはUDPまたはTCPポート番号の514を使用してsyslogサーバに送信されます。ApacheやMySQLなど、独自のログディレクトリを持つアプリケーションの多くは、独自の方法でログを記録しています。一方、syslogは独自のログ出力方法を持たない、非常に多くのアプリケーションが利用しています。syslogを利用して出力されたログメッセージが記録されるログファイルは、”/var/log/boot.log”,"/var/log/cron","/var/log/messages","/var/log/secure","var/log/spool"などですが、特定のアプリケーションを除き、多くのアプリケーションのログメッセージはデフォルトで"/var/log/messages"に記録されます。
ファシリティ
ファシリティは「ログ種別」のことです。ファシリティのは様々な種類がありますが、Linuxでは「*」を使用することで全ファシリティを選択できます。
プライオリティ
プライオリティはメッセージの優先度を表します。
アクション
アクションではメッセージの出力先を指定します。ログファイルに保存したい場合、ファイル名をフルパスで指定します。ユーザ名を指定した場合はそのユーザの端末にメッセージが出力されることになります。
syslogの設定
syslogは、/etc/syslog.confファイルで設定をします。
・crit,alert,emergレベルのメール関連ログを、/var/log/mailファイルに記録
mail.crit /var/log/mail
・メールのログを出力しない
mail.none
・カーネルに関する全てのメッセージを、/var/log/kernelに出力
kern.* /var/log/kernel
・緊急メッセージは全てのユーザが受け取る
*.emerg *
loggerコマンドを使って、任意のファシリティ、プライオリティに対して任意のメッセージを出力することができますので、設定の確認に便利です。
logger -t test -p local0.info "syslog messages"
tオプション: タグを付与する
pオプション: ファシリティとプライオリティを定義する
以上
システム管理
はじめに
インフラエンジニア初学者のぽれいんと申します。
転職する前はプログラミングスクールにて主にHTML、CSS、Ruby、MySQL等について学びました。
※このブログでは自分が後々、見返すことができるようにまとめることを目的としていますが、もし需要があるようでしたら是非ともご覧ください。
<前回の記事>
<参考>
systemdによるCentOS 7の管理 | Think IT(シンクイット)
ブートシーケンス
サーバの電源投入から起動までの流れをブートシーケンスと呼び、CentOS6とCentOS7ではブートシーケンスに若干の違いがあります。
BIOS(UEFI)
PCの電源ボタンが押されると、CPUはマザーボード上に実装された「BIOS」もしくはUEFIというソフトウェアを実行して周辺機器の初期化を行います。その後、起動ドライブを探し、その条件に従い起動ドライブのブートローダを起動します。
※現在の主流はUEFI
ブートローダ
ブートローダにはいくつか種類がありますがlinuxではGRUBが主流となっています。役割はLinuxカーネルをメモリ上にコピーすることです。
Linuxカーネル
Linuxカーネルが立ち上がると、sysvinit/Upstart/systemd システムが起動されます。
systemd
systemdは従来のinit/Upstartの代替であり、非常に高速なシステム起動・終了や様々なシステム管理機能の提供してくれます。
sysvinitとsystemdの対応表
ディスク管理
パーティション
パーティションとは、1つのハードディスクを複数の領域に分割して使用することを言います。分割して利用することでハードディスクの一部が物理的に壊れても影響を受けるのは1つのパーティーションになるのでリスクの分散を図ることができます。
マウント
ルートディレクトリから始まる階層構造のディレクトリに対して、枝を追加する工程のことをマウントと呼びます。言い換えるとパーティションとディレクトリを結びつけるものですね!マウントするにはmountコマンドを使います、システムに関わるコマンドなので基本的にroot権限で実行します。「/etc/fstab」ファイルに記述すればOS起動時に自動的にマウントさせることも可能です。(マウントした枝を取り外すときは「unmount」コマンドを使用します。
ファイルシステムの種類
ファイルシステム
ファイルシステムは記憶装置(ディスク)に記録されているデータを管理する方法を提供する機能です。
FAT/exFAT
FATは歴史が古く、Windowsの前身であるMS-DOSでも使用されていたファイルシステムです。exFATでは実質的に容量の制限がないため、FAT32よりも大きなデータを扱えるようになりました。(FAT32は2TBまでの領域しか扱えず1ファイルあたりの容量も4GB)
NTFS
NTFSはWindowsで用いられるファイルシステムです。FATにはないアクセス制限や暗号化などの機能が追加されています。容量の制限が少なく、データ領域も破損しづらいと言われています。FATと異なり基本的にWindows専用のファイルシステムとなっておりほかのOSとデータのやり取りができません。
HFS/HFS+
HFSはMacOSで用いられるファイルシステムです。MacOS X 以降では機能が拡張されて、HFS+になりました。基本的にMacOS専用のファイルシステムのため、Windowsとの互換性がなくHFS+でフォーマットしたハードディスクをWindowsで読むことはできません。
ISO 9660
ISO 9660はCDやDVDなどの光学メディアで使用されるファイルシステムです。
ext/XFS
Linuxでは様々なファイルシステムが使用されていますが、その中でもextとXFSが有名です。extはext1/ext2/ext3/ext4などのバージョンがあり様々な機能追加が行われています。現在はext4が主流です。XFSも同様にLinuxで使用されてます。XFSはextより大規模データの扱いに適していると言われます。WindowsやMacOSでは使用できません。そのため、LinuxベースのNASのハードディスクをパソコンに接続しても中身を読むことはできません。