現場経験1 インフラエンジニアの簡単な作業手順を書いてみた (超初級編)
勤務暦・実績がぜんぜん浅いので今のメインで行っている作業としてはちょっとした設定変更、confファイルを少しいじるのがメインだったりします。本番作業を想定して研修中の作業でも使うことを意識しているコマンド等はあるかと思うし、実際に本番を意識し、一手間加えているかと思いますが、いざ本番での作業となるとサーバーをいじる上で慣れて血肉にしといたほうがいいなというコマンドや作業があったのでそれを記録していこうと。呼吸をするように行う作業ばかりなので、本当に現場作業をしている人にとっては当たり前のことですが。。。
※現場によって当たり前に行われている作業は異なるかと思います。
「え?これやらないの?」と感じた現場作業がございましたらぜひとも教えていただければ幸いです。
☆0-1、手順書をテキストエディタにコピペしておく(下準備)
これは現場によって異なるのかなと感じましたが基本的に手順書ベースに作業を行うかと思うので自分で入力はあまりせず、手順書をコピペしていくのがベターかなと。
現場には手順書があると思うんですが、それを自分のテキストエディタにコピペしておいて今回入力する際に手順書とは異なる箇所(例えば、実際のファイル内の内容やバックアップファイル名)を修正して上から下までコピペでコマンドすることで一連の作業が完了するというテンプレートを事前に作成しておく。
これをすることによって、コマンドライン上で自分でタイピングすることによるタイプミスなどを減らすことができる。
☆0-2、作業ログをとる
現場ではteraterm使ってるんですが画面開いてメニューバーの【ファイル】⇒【ログ】で指定のディレクトリに自分の行ったログを記録することができます。
※手順0-1のテキストエディタで流れを作成できているのであれば、ログが長くなるのは無駄が多いことになる(ディレクトリの移動は置いといて)
☆1、バックアップを取る
ここから実際サーバーでの作業になるのですが、まあ、これは当たり前ですよね。
頭か末尾に日付を記載したバックアップファイル(例:httpd.conf_20180328)を作成する。
僕の現場では最新のバックアップファイルのみconfファイルと同じディレクトリにあり、作業が終わる都度前回の作業分のバックアップファイルは同ディレクトリ内にあるバックアップディレクトリにmvコマンドで移動するという流れですね。
※confファイルが入っているディレクトリをファイルのバックアップを取る前にディレクトリごとバックアップを取っておくとなおよし。
☆2、dateコマンドでconfファイル編集のエビデンスを残す
viコマンドを行う前後には必ずdateコマンドを打つ。これによりログに作業時間が残りますね。何時に編集して何時に編集が完了したという記録をとる癖をつけましょう。
☆3、ファイル編集においての注意点
ファイル編集時にはエディタのショートカットは覚えていたほうが本当によいです。
カーソルキーでかたかたやるのとは作業効率がぜんぜん違います。
覚えましょう、絶対にだ。
実際に編集する設定箇所には入力する設定内容の一行上にエビデンスを残す。
日付と名前がわかれば何でもいいと思う。
例)httpd.conf
編集前
DocumentRoot "/var/www/html"
---------------------------------------------------
編集後
# 2018/03/28 change by tanaka
DocumentRoot "/var/www/htdocs"
---------------------------------------------------
上記のような感じで残すと何か設定のミスがおきたときに日にちで検索かけれたりするので。
4、ファイルの編集後はdiffコマンドで編集内容を確認する。
ここでバックアップファイルを使います。編集したファイルと照らし合わせて変化を確認する。
例)
diff httpd.conf httpd.conf_20180328
120,121c120
< # 2018/03/28 change by tanaka
< DocumentRoot "/var/www/html"
---
> DocumentRoot "/var/www/htdocs"
----------------------------------------------------
こんなかんじですね。今回はドキュメントルートを変えただけですがこういった形で
編集内容の確認が取れます。
以上ですかね。
気をつけていきたい。
※何かほかにこれはしといたほうが良いって現場でのコマンドや作業があればぜひ教えていただきたいです!
CentOS7上でLaravelの環境を構築してみた ~PHP7 ComposerをインストールからLaravelのプロジェクト作成まで~
Composerはlaravelに必要な構成管理ツール
Laravelでwebアプリ開発したいなって考えててただいま勉強中です。
☆Linux⇒CentOS7
[ーーー@localhost htdocs]$ cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
☆PHP⇒Version7(無駄なものも入ってるかもです)
[ーーー@localhost htdocs]$ rpm -qa | grep php
php-7.0.28-1.el7.remi.x86_64
php-json-7.0.28-1.el7.remi.x86_64
php-pdo-7.0.28-1.el7.remi.x86_64
php-cli-7.0.28-1.el7.remi.x86_64
php-gd-7.0.28-1.el7.remi.x86_64
php-mbstring-7.0.28-1.el7.remi.x86_64
php-devel-7.0.28-1.el7.remi.x86_64
php-common-7.0.28-1.el7.remi.x86_64
1、まずはダウンロードサイトからファイルのインストール
https://getcomposer.org/download/
上記のページに移動し下にスクロールするとManual Downloadって項目があるのでそこの最新版をコピーしてwgetコマンドをしましょー
https://getcomposer.org/download/1.6.3/composer.phar
[root@localhost ~]# wget https://getcomposer.org/download/1.6.3/composer.phar
カレントディレクトリにファイルがあるはず
[root@localhost ~]# ls -l
合計 1832
-rw-r--r-- 1 root root ---- 2月 1 00:28 composer.phar
2、これをcomposerにリネーム&binディレクトリに配置しましょう。
[root@localhost ~]# mv composer.phar /usr/local/bin/composer
[root@localhost ~]# ls -l /usr/local/bin/composer
-rw-r--r-- 1 root root 1861877 2月 1 00:28 /usr/local/bin/composer
3、これだと実行権限がないのでパーミッションの設定をしましょー
[root@localhost ~]# chmod 755 /usr/local/bin/composer
[root@localhost ~]# ls -l /usr/local/bin/composer
-rwxr-xr-x 1 root root 1861877 2月 1 00:28 /usr/local/bin/composer
4、composer -Vをコマンドして表示されれば完了ですー
[root@localhost ~]# composer -V
Composer version 1.6.3 2018-01-31 16:28:17
5、laravelのをインストール
☆☆まずはrootディレクトリだと怒られるのでユーザーへその後下記をコマンド
[ーーー@localhost ~]$ composer global require "laravel/installer=~1.1"
この後”Changed current directory to /home/----/.config/composer”
ってメッセージがでて「あれ?」ってなるかもしれませんが、まっとけばインストールが始まります。
Writing lock file
Generating autoload files
[ーーー@localhost ~]$
これで完了。
6、さてでは簡単なプロジェクトを作成してみますか。
とりあえずwebサーバーのドキュメントディレクトリに移動(/var/www/htdocs⇒httpd.confのDocumentRoot見てね)
[ーーー@localhost ~]$ cd /var/www/htdocs
☆composer create-project laravel/laravel プロジェクト名 --prefer-dist
上記をコマンドして作成できます
[ーーー@localhost htdocs]$ composer create-project laravel/laravel test --prefer-dist
Installing laravel/laravel (v5.5.28)
[ErrorException]
mkdir(): Permission denied
。。。上記の通り怒られます。
[ーーー@localhost htdocs]$ sudo chmod 777 /var/www/htdocs
※htdocsはApacheでドキュメントルート
再度入力
[ーーー@localhost htdocs]$ composer create-project laravel/laravel test --prefer-dist
完成したらドキュメントルート内にtestディレクトリがあるよ
[ーーー@localhost htdocs]$ ls -l
合計 92
drwxrwxr-x 11 ーーー ---4096 3月 16 20:46 test
7、さてこのディレクトリに入りartisanコマンドでサーバーを実行してみます
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ここからむちゃくちゃはまりました下記トラブル回避
[ーーー@localhost test]$ php artisan serve
PHP Warning: require(/var/www/htdocs/test/vendor/autoload.php): failed to open
PHP Fatal error: require(): Failed opening required '/var/www/htdocs/test/vendo on line 18
この時点でvenderのディレクトリがなくて調べたらcomposer updateしたったらいいねんって感じの記載があったのでしてみたら
[---@localhost test]$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- phpunit/phpunit 6.5.7 requires ext-dom * -> the requested PHP extension do
どうやらレポジトリにphp-xmlをインストールする必要があるみたいでした
それで下記を続いて実行
[root@localhost ~]# yum install --enablerepo=remi,remi-php71 php-xml
インストール:
php-xml.x86_64 0:7.1.15-1.el7.remi
依存性を更新しました:
php.x86_64 0:7.1.15-1.el7.remi php-cli.x86_64 0:7.1.15-1.el7.remi php-common.x86_64 0:7.1.15-1.el7.remi php-devel.x86_64 0:7.1.15-1.el7.remi
php-gd.x86_64 0:7.1.15-1.el7.remi php-json.x86_64 0:7.1.15-1.el7.remi php-mbstring.x86_64 0:7.1.15-1.el7.remi php-pdo.x86_64 0:7.1.15-1.el7.remi
無事に完了。。。長かった。。
8、再度手順7のコマンドを打ちます
[ーーー@localhost test]$ php artisan serve
Laravel development server started: <http://127.0.0.1:8000>
お。今度は成功・・・と思いきやブラウザでこのURLに飛ぶとエラー画面が表示されました。(一応このコマンドを打った後のターミナルの挙動はこちらであってます)
どうやらダメっぽかったのでここから再度laravelを入れなおすとうっぷグレードされました。笑(手順5を再度やる)
そのあと作成したprojectを削除して再度手順6から同じことをやると手順7終了後、今度はちゃんとブラウザに表示されました。
☆☆補足1
先日この手順で別のマシンで構築したところ手順8のところでコマンド後ブラウザに飛ぶとエラー画面が下記のようなエラーが出ました。
No application encryption key has been specified.
なんかなんかキーを作成する必要があるみたいで下記のサイトを参照させていただいたら無事に起動しました。インターネット万歳
めでたしめでたし。
※まだドが付くほどのエンジニア素人なのでここがおかしいとかあったら遠慮なくリプライなどくれたらめちゃくちゃうれしいです。。。
LAMP環境の構築 初歩中の初歩
LAMP環境の構築
L⇒LINUX
A⇒APACHE
M⇒MYSQL
P⇒PHP
【流れ】
●LINUXのスペック
●APACHEのインストール
●PHPのインストール
●MYSQL(Mariadb)のインストール
☆☆LINUX☆☆
まあこれはOSなに使ってるかって話です。
僕はCentOS7系を使ってます。
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
☆☆APACHE☆☆
*バージョン確認
# rpm -qa |grep httpd
httpd-2.4.6-67.el7.centos.6.x86_64
httpd-tools-2.4.6-67.el7.centos.6.x86_64
2 設定ファイル
基本的には/etc/httpd/conf/httpd.conf
細かい設定は上記のconfファイルのIncludeから別ディレクトリのファイルを見に行って
それを反映させるという構造なので、そっちにファイルを作成してDirectoryやLocationでのアクセス制限を記入するのもあり。
アクセス→http://(localhost or IP)/
# /etc/httpd/conf/httpd.conf
Include conf.modules.d/*.conf ←このディレクトリ
◆基本設定 httpd.conf
DocumentRoot
⇒webブラウザにアクセスしたときに表示させるファイルのディレクトリを指定。
要するにコンテンツを設置する場所。httpd.confに下記が記載されている場合は、特定のコンテンツファイル、htmlファイルをhtmlディレクト以下に置くことでwebブラウザ上で表示される。
# vi /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"
*とりあえず詳しい設定は割愛
3 起動と自動起動設定
# systemctl start httpd
# systemctl enable httpd
☆☆PHP☆☆
*バージョン確認
#rpm -qa |grep php
php-cli-5.4.16-43.el7_4.x86_64
php-common-5.4.16-43.el7_4.x86_64
php-5.4.16-43.el7_4.x86_64
2 動作確認
アクセス→http://(localhost or IP)/test.php
これは簡単、先ほどapacheで設定したDocumentRootのディレクトリ以下(/var/www/html)にtest.phpを作成してブラウザからアクセス。ファイルの内容は下記の通り。
# vi /var/www/html/test.php
--------------------------------------------
<?php
phpinfo();
?>
--------------------------------------------
※先頭末尾の<?php ?>はphpを扱う最初の宣言のようなもの
そのなかにphpのコードを書いていく。
アクセス後、PHPのバージョンスペック画像が表示されればOK
*PHPの初期設定ファイルはphp.ini
ディレクトリは/etc/php.ini
設定はまたそのうちやっていこうと思うので割愛
1 インストール
# yum install mariadb-server
※バージョンによってはmariadbをmysqlで
*バージョン確認
#rpm -qa | grep mariadb
mariadb-5.5.56-2.el7.x86_64
mariadb-server-5.5.56-2.el7.x86_64
mariadb-libs-5.5.56-2.el7.x86_64
mariadb-serverをインストールすると依存性の関係から必要なものとってくれるので
mariadbのみでインストールしないように。
2 起動と自動起動設定
#systemctl start mariadb
#systemctl enable mariadb
3 MYSQLへログイン
通常のシェルの動作とは異なり、MYSQLにログインしてその中でDatabaseを
構築していく。
とりあえず試験的にログイン
#mysql
下記の表示でログイン成功
------------------------------------------------------------------------------
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.56-MariaDB MariaDB Server
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
------------------------------------------------------------------------------
ユーザー表示、ディレクトリの部分が下記になる
MariaDB [(none)]>
ついでに終了は\qでできる
MariaDB [(none)]>\q
*基本的なログインコマンドは
# mysql -u <username> -p
を入力してパスワードを入力していくスタイル。
インフラ周りだとzabbixだったりとりあえずユーザー作って権限与えてみたいなやり取りがあるんだけどまあとりあえずここはおいおいうやっていくということで割愛。
上記でとりあえずインストールは完了、これをベースにいろいろ作っていきます。
PHPのHTML_QUICKFORMでしょっぱなから見事にはまった話 (エラー表示含む)
タイトル通りです。
PHP学び始めですがいろいろ知見を得たので記録として
1、エラーをブラウザに表示させる。
これ恥ずかしながらやってなくて、
phpのスクリプトファイルに下記のコードを書く(自分は<?PHPのすぐ下に入れた)
ini_set('display_errors', 1);
※1の部分が0だと表示なしみたい。
そうするとエラーの原因が判明。
何と設定ファイルのinclude_pathにrequire_once('HTML/QuickForm.php")を見に行く設定をしてなかった。
そりゃ無理だよね。
2、php.iniファイルを開いて下記を追記する
include_path = "/usr/share/pear/"
これでこの先のファイルHTML/QuickFormを拾いに行ってくれる。
無事に解決しました。
イヤーはまった。
無事にできてよかったです。
Apacheのアクセス制限について
職場でBasic認証の設定を扱うのでその備忘録に。
とりあえずはIP制限などから
*ファイルの位置についてはfindコマンドでディレクトリを確認
find / -name httpd.conf
◎◎◎特定のIPアドレスのみを許可する
1、httpd.confファイル[AllowOverride設定]
下記の設定で有効にする
$ AllowOverride All
→ApacheやPHPの設定をディレクトリ毎に変更するために必要な.htaccessを有効・無効に設定できる。
設定がAllの場合は有効、Noneにすると無効になる。
2、httpd.confファイル[DocumentRootの確認]
DocumentRoot→公開コンテンツを設置するディレクトリ名をさす。
ここにおいたhtmlファイルやphpファイルをブラウザに表示できる。
$ DocumentRoot "/var/www/html"
3、.htaccessを作成
ファイルはドキュメントルート直下に.htaccessファイルを作成、編集
$ vi .htaccess---------------------
Order Deny,Allow
Deny from All
Allow from [許可したいIPアドレス]
----------------------------------
※Orderディレクティブの後はDenyとAllowが評価される順番をさす。
上記の場合DenyディレクティブがAllowディレクティブより先に評価される。
→基本的にすべて拒否。その中でIPアドレスのみ許可する。
上記のOrderの後をAllow,Denyにすると、評価の順番が入れ替わり、最後に評価されるDeny from allに
よりすべてのアクセスが拒否される。
☆特定のIPアドレスだけを制限する
vi .htaccess--------------------
Order Allow,Deny
Allow from all
Deny from IP-1
Deny from IP-2
Deny from IP-3
--------------------------------
OederディレクティブでAllowを先に評価させ、Allow from allですべてを許可してから
Deny で特定のIPを拒否する。
なおfromの後にはIPアドレス以外にもドメイン名(example.comのような形式)も設定可能
◎◎◎Basic認証
ApacheのBasic認証機能を使うとIDとPassを知っているユーザーのみがページを閲覧できるようにできる。
特定ページにブラウザからアクセスしたときIDとPassを入力するまで待機状態になる。
1、.htaccessファイルの設定
.htaccessファイルをドキュメントルートに準備下記を入力。
$ vi .htaccess--------------------
AuthType Basic
AuthName "Member Only"
AuthUserFile 絶対パス/.htpasswd
Require valid-user
----------------------------------
AuthType→ユーザ承認をBasic認証に設定
AuthName→ログイン画面で表示される文字列を設定。(半角スペースがある場合引用符で囲む)
AuthUserFile→IDとPassの一覧が記録されているファイルのパスを設定。
Require valid-user→認証されたユーザすべてにディレクトリへのアクセスを許可する。
2、パスワードファイルの作成(htpasswdコマンド)
コマンド→/var/www/html/.htpasswd sample
$ htpasswd -c .htpasswd [ユーザID]
$ New password:********
$ Re-type new password:********
$ Adding password for user [ユーザID]
パスワードファイルの新規作成
$ htpasswd -c [パスワードファイル名] [ユーザID]
ユーザ追加
$ htpasswd [パスワードファイル名] [ユーザID]
ユーザ削除
$ htpasswd -D [パスワードファイル名] [ユーザID]
3、ブラウザに表示確認
ドキュメントルートにサンプルファイルを置いてみる(sample.php)
同じディレクトリに.htaccessと.htpasswdがあるのを確認
http://localhost/sample.phpを閲覧するとログイン画面が表示されるので、
IDとPassを入力して送信。