PG WORKS

PHPやLinux(サーバー)などのノウハウや、便利なツールを紹介していきます。

よく使うLinuxのコマンド一覧

使う頻度が高いものと、頻度は低いけど覚えておいて損はないコマンド一覧を書きます。

覚えておきたいコマンド一覧

>>ユーザ切り替え
su -[ユーザ名]

>>ディレクトリの移動
cd [移動先]

>>ファイルを編集する
vi [ファイル]

>>所有者の変更
chown [ユーザ名] [ファイル]

>>グループ名の変更
chgrp [ユーザ名] [ファイル]

>>パーミッション変更
chmod [パーミッション] [ファイル]

>>ディレクトリを作成
mkdir [ファイル]

>>ユーザの追加
useradd [追加するユーザ名]

>>パスワードの設定
passwd [ユーザ名]

>>日付の確認
date

>>実行中のプロセスを表示
ps -awfx

>>ディスク・ドライブの空容量確認
df -h

>>クローンの確認
crontab -l

>>クローンの書き換え
crontab -e
※間違って「-r」にするとcronの内容が全て消えるため注意!

>>プロセス番号を指定して強制終了させる
kill 「プロセス番号」
※プログラムが終わらなかったり、プロセスがずっと残っていた場合使用する

>>現在のサーバ状況を1秒単位で表示する
top -d1

>>ファイル検索その1
locate 「ファイル名」

>>ファイル検索その2
find ~/ -name "「調べたいファイル名など」" -ls

あのコマンドなんだったかな?と思ったときに

コマンドが思い浮かばないとき、コマンドの最初の文字を入力して「Tabキー」を押すと候補のコマンド一覧が表示されます。

覚えておいて損はないコマンド一覧

>>ファイルをコピー
cp [コピー元] [コピー先]

>>ファイルを移動させる
mv [移動するファイルパス] [移動先のパス]

>>ファイルの所有者とグループ名を一緒に変更
chown [ユーザ名]:[ユーザ名] [ファイル]

>>指定したディレクトリ内にあるファイルの所有者とグループ名を一括変更
chown -R [ユーザ名]:[ユーザ名] [ファイル]
※オプションの「-R」は、cp/chgrp/chmodでも利用可能です。

>>phpのバージョンを表示
php -v

>>プログラム名を指定してプロセスを強制終了させる
kill `ps aux | [ファイル]|cut -c10-14`

>>クライアントの通信が終了してからapacheの再起動をさせる
service httpd graceful

>>「httpd.conf」にエラーがないか確認
service httpd configtest

>>apacheを自動起動させる
chkconfig httpd on

>>apacheを自動起動を解除
chkconfig httpd on

>>apacheの自動起動の確認
chkconfig --list httpd

>>ファイルのダウンロード
wget [ダウンロードするファイルのURL]

>>サーバをシャットダウンする
shutdown -h now

>>サーバを再起動する
shutdown -r now

>>rsync
rsync -auz -e ssh [コピー元] [ユーザ名]@[IP]:[コピー先]

>>ユーザのログインディレクトリの指定
useradd -d [ディレクトリ名] [追加するユーザ名]

自動起動関係は、CentOS7から変更されています。
CentOS 7 サービス自動起動設定 | server-memo.net

よく使うのに忘れてしまうHTMLタグ

よく使うタグは書けるものの、普段コピペで終わってしまうタグだったりすると、いざ使いたいときに、出てこないときがよくあります(汗

なので、ブログに書き留めて、改めて勉強w

metaタグ

<meta name="description" content="サイト紹介文">
<meta name="robots" content="noindex">

CSSファイルの読み込みタグ

<link rel="stylesheet" type="text/css" href="cssファイルのパス">

JSファイルの読み込みタグ

<script type="text/javascript" src="jsファイルのパス"></script>

HTMLファイルに直接CSSを書き込むときの宣言

<style type="text/css">
</style>

HTMLファイルに直接JSを書き込むときの宣言

<script type="text/javascript">
<!--
// -->
</script>

jQuery読み込み

>>1.x系 IE6~IE8を対応したい場合
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

>>2.x系
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

>>3.x系
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Hosted Librariesの最新バージョンはこちらから
developers.google.com

aタグでジャンプリンク

>>同じページ内での特定位置へジャンプする
<a href="#test">ジャンプリンク</a>
<h3 id="test">ジャンプ先</h3>

リンク先にリファラーを飛ばさないようにする

<a href="http://zen6a.hateblo.jp/" rel="noreferrer">PGWORKSへ</a>

はてなブログ専用タグ

help.hatenablog.com


次回は、CSSファイル内での書き方や便利なタグの記述方法を紹介していきたいと思います。
CSSに関する内容を書きました。
http://zen6a.hateblo.jp/entry/2016/01/13/233040zen6a.hateblo.jp

【Apache】htaccessを使いURLを書き換えてみよう

.htaccess」を使いURLの書き換え対応のサンプルを紹介したいと思います。

まずは、サンプルを見てみましょう。

URL書き換えサンプル

Options +MultiViews
RewriteEngine on
RewriteCond []%{QUERY_STRING}[] ^id=(.*)&name=(.*)$
RewriteRule []^search.php[] /item/%1-%2? [R=301,L]

「Options +MultiViews」で拡張子の省略が可能になります。

http://zen6a.net/search.php

通常はファイルの拡張子を入力する必要がありますが、下記のように変更が可能です。

http://zen6a.net/search

次に、クエリーストリング部分を静的URLぽくしている箇所が下記の部分になります。

RewriteCond []%{QUERY_STRING}[] ^id=(.*)&name=(.*)$
RewriteRule []^search.php[] /search/%1-%2? [R=301,L]

実際の例を書いていくと、

http://zen6a.net/search.php?id=111&name=aaa[]

上記のURLで飛んできたものに対して、下記のURLに変換するようにしています。

http://zen6a.net/search/111-aaa

URLを見た限り、動的なページではない形になりました。

なぜURLを変更するのか

かなり昔の話になりますが、動的なURLだと検索エンジンのクロールが正常に働かないということがありました。

今は気にする必要はありませんが、公開するサイトでしたら、どんなページなのかわかりやすくした方がいいですし、見栄えも良くなると思います。

また、ページ送りなどでコンテンツが同じになりそうであれば、クエリーストリングなどで判断して、noindex処理を追加しておきましょう。

【Apache】htaccessを使ったリダイレクト設定

PHPネタ以外で今回は「htaccess」を使ったリダイレクト設定の仕方を紹介したいと思います。

リダイレクトを使う理由としては。。。

  • サイトのドメイン変更で新しいドメインへリダイレクト
  • 特定のページを別のページへリダイレクト
  • www無しをwww有りにしてリダイレクト

他にも、URLの書き換えや、PHPの設定変更も「.htaccess」で対応が可能です。

では、リダイレクトのサンプルを記載していきたいと思います。

別のページへリダイレクト

Redirect permanent /old/ http://newsite.net/new/

リダイレクトしたいページ名とリダイレクト先のURLを記載します。日本語URLでは、リダイレクト先のURLをPunycode(ピュニコード)で記載します。

Punycodeに変換したい場合、下記のサイト様が大変便利です。
n7.com

別のページへリダイレクト(日本語の場合)

Redirect permanent /過去履歴/ http://newsite.net/xn--fht636a/

※過去履歴からhttp://newsite.net/履歴/にリダイレクト
また、特定のフォルダにあるページを全て同じURLにリダイレクトしたい場合は、下記の書き方になります。

対象のフォルダにあるページを全て同じURLへリダイレクト1

RedirectMatch permanent /website/* http://newsite.net/new/

下記の方法でも、一括リダイレクト可能です。

対象のフォルダにあるページを全て同じURLへリダイレクト2

RewriteCond %{SERVER_PORT} 80
RewriteRule ^website/(.*)$ http://newsite.net/new/ [R=301,L]


次回は、同じ「htaccess」を使ったURLの書き換え方法を紹介したいと思います~。

【PHP】Noticeを回避するためにisset関数を使おう

php本体側の設定で、E_NOTICEの設定がないとき、値が入っていない変数や配列を見に行くと、「Notice: Undefined index」が表示されます。

普段は、php.iniやphpファイルのini_setなどで、NOTICEを無視したりと、結構雑な感じに扱われますが、仕事の都合でNOTICEエラーも対応することが多々あります。

NOTICEが表示される書き方

<?php
  if( $sample == "zen6a" ) {
    echo 'zenです。';
  } else {
    echo 'zenではないです。';
  }
?>

上記の書き方だと、if文でNOTICEが表示されます。
また、「empty」や配列の件数を確認する「count」を使用しても表示されてしまいます。(めんどry

NOTICEの回避方法

<?php
  if( isset($sample) == "zen6a" ) {
    echo 'zenです。';
  } else {
    echo 'zenではないです。';
  }
?>

同じサンプルに、if文にisset関数を付け加えました。
これで、$sampleに値が入ってなくてもNOTICEが表示されることはありません。

また、次のサンプルは連想配列でissetを利用した書き方になります。

連想配列のNOTICEの回避方法

<?php
  if( isset($aryData[@key($aryData)]) ) {
    echo '配列の中に値あります。';
  }
?>

強引な書き方かもしれませんが、key関数を使い連想配列名を取得して値を確認しています。

もっといいやり方があると思いますので、こちらは随時更新していきたいと思います。