読者です 読者をやめる 読者になる 読者になる

orz.conf

技術メモ✍

久しぶりにCentOSをインストール

CentOSが起動しなくなったのでCentOS7を久しぶりにインストールしました。

f:id:toshtone:20161204181530p:plain

NHMを使ってスナップショットをとっていて、VMWarePlayerから使わなくなった
仮想マシン(スナップショット)を削除したら上記の通り起動しなくなってしまい
ました。

たいしたモノが入ってないので諦めてさっさと再セットアップ。


f:id:toshtone:20161204182215p:plain

男は黙って最小限でセットアップです。


f:id:toshtone:20161204182349p:plain

ネットワーク設定しとかないと接続出来ません。
オンにしましょう。


f:id:toshtone:20161204182519p:plain

起動出来ました。

sshでも接続出来ます。

f:id:toshtone:20161204183518p:plain


vmware-toolsをインストールします。

f:id:toshtone:20161204183750p:plain

[root@localhost vmware-tools-distrib]# ./vmware-install.pl
-bash: ./vmware-install.pl: /usr/bin/perl: 誤ったインタプリタです: そのようなファイルやディレクトリはありません

と出力されます。
最小限だとperlが無さそうです。

perlをインストール

yum update
yum install -y install perl

再度インストールすると

Setup is unable to find the "ifconfig" program on your machine.  Please make
sure it is installed.  Do you want to specify the location of this program by
hand? [yes]

What is the location of the "ifconfig" program on your
machine?

と出力されます。
ifconfigが無くてip addrを使ってたけどvmware-toolsインストール時に
こんなの出てたかな。

vmwareのknowledge baseを見ると
RHEL7やCentOS7はnet-toolsをインストールしないといけないらしい。

ということでインストール

yum install -y net-tools

ここまでやるとvmware-toolsのインストールが完了しました。

広告を非表示にする為にプロキシサーバ(squid)をたてる

広告を非表示にする為にプロキシサーバをたてました。

インストール

環境

CentOS release 6.8 (Final)

まずは既にインストールされていないかどうか確認します。

rpm -qa | grep squid

何も出なければOK。

続いてsquidをインストールします。

yum -y install squid

下記のものがインストールされました。

squid-3.1.23-16.el6_8.6.x86_64

iptablesの設定

今回はCentOS6なのでiptablesの設定を記載します。
25128というポートを使用したいと思います。

iptables -A INPUT -p TCP --dport 25128 -j ACCEPT

確認します

iptables -L
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:25128

コンフィグ設定

squid.confを編集します。
まずはバックアップ。

cp /etc/squid/squid.conf /etc/squid/squid.conf.org
ホスト名の設定

ホスト名を設定してやらないとwarningが出ます。

Stopping squid: 2016/XX/XX XX:XX:XX| WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'.
2016/XX/XX XX:XX:XX| WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'.

ホスト名を設定します。
visible_hostnameの行が無い場合、追加して下さい。

visible_hostname ホスト名
ポートの変更

デフォルトだと不安なのでポートを変更します。

# Squid normally listens to port 3128
http_port 25128
ダイジェスト認証

パスワードファイルを作成します。

htpasswd -bcp /etc/squid/passwd ユーザ名 パスワード

squid.confにダイジェスト認証をする為の設定をします。

###ダイジェスト認証用パスワードファイル
auth_param digest program /usr/lib64/squid/digest_pw_auth /etc/squid/passwd
###認証用のプロセス数を制限する
auth_param digest children 3
###プロキシサーバの名前
auth_param digest realm Proxy Web Server
###クライアントエージェントの有効性をチェックする時間
auth_param digest nonce_garbage_interval 5 minutes
###nonce(臨時・その場限り)の有効性のチェックする時間
auth_param digest nonce_max_duration 30 minutes
###nonceの使用できる回数
auth_param digest nonce_max_count 50
###ダイジェスト認証
acl password proxy_auth REQUIRED

### password
#以下2行をコメントアウト
#http_access allow localnet
#http_access allow localhost
#以下を追加
http_access allow password
blacklistの設定

下記のようなファイルを作成します。
blacklist.conf

XXXX.net
XXXX.info

squid.confにblacklistを使用する為の設定をします。

acl blacklist dstdomain "/etc/squid3/blacklist.conf"
http_access deny blacklist

dstdomainはデスティネーションドメインです。

blacklistの設定(正規表現を使用)

正規表現を使用する場合です。

下記のようなファイルを作成します。
blacklist_reg.conf

.*/ad/.*

squid.confにblacklist_regを使用する為の設定をします。

acl blacklist_reg url_regex "/etc/squid3/blacklist_reg.conf"
http_access deny blacklist_reg

dstdomainの代わりにurl_regexを使用します。

ログフォーマットの変更

デフォルトだとシリアル値が出力されてしまうので、日付けフォーマットに変更します。

logformat squid %tl %6tr %>a %Ss/%03>Hs %<st %rm %ru %un %Sh/%<A %mt
起動

最後に起動してやります。

service squid start
chkconfig squid on

blacklistはインターネットを検索してみると2016年でもいくつか見つかりました。
助かります。


まだblacklist_reg.conf周りがうまくいってないかも。
後日調査。

SSHポートフォワーディング

SSHのポートを通じてftpmysqlなどの通信を行うことが出来るSSHポートフォワーディングの設定です。

7VlRk5s2EP41frwbMIbDj8F3SR+SmetcZ9o+dWSQscYYMUKO7fz6rKQVCLCv7hW7SRo/eNAiraTvW+2ulkmw2B4+CFKtP/GMFpOplx0mweNkOo39GP6V4GgEvjeHppLkgmUoawUv7Au1HVG6YxmtOx0l54VkVVeY8rKkqezIiBB83+224kV31orkdsZW8JKSYij9nWVyjfuaRq38F8ryNc4cxjPzYknSTS74rsTpJtNgpX/m9ZZYVbjPg2ea0dy0j9i+m0bNVGVnSV8433YEgtYtfLhd1kWkJJ87sxas3HQBWnKRUeF0Cp6AXsE5KFJP28OCFopiy57R9P7M2wY+QUtcyt8MiGchndFsRmZp6i2jOzSXz6TY4d6MoJZHy9GKl3LBC26WHXheFC0WkyD5TIVkQOW7guUKO8krR/qRLGnxzGsmGVdvl1xKhWhS9F6ksHQFSUJQTyNYy20BbR8ec0EyBvJHJsAMzcCSC8VyUkvBN435AKRJvSaVWvz2AOOq9X1J5Z6LTX1fkMqsEnpkfA9dwA6SqiCsvIOuRwQDtkDxiJ1AWIsQ3g+Ub6kUMNDDAQ/IPZ7IO5AYwb61b9/DTmvXtkM8VmgxeaO65RMekNIL6Q3+V/SCK9vAMv+q0qtSHHjWi1iOA+TO4Xh2gmJrG6NSjB7xNYppmb1TzlqjWoLQxb6DkwG7Yw7qB29Ax3umVqX7mSloNvDul2LoD88JbsTBMDx1TF7BEGd75gwWccFUVkfNdyKlOMz1nj1NU3tuG01WYDVJInIqB5o0qQ0Ib+MZTey747l3VvwY1z0+z3GPnYb474pnzEccnleyGlAN3guAcvnV+QlZ6g6KOrKT4IV1xqJeW/db0JUaeNq71xVJWZn/phqP4FnAcaot6k2HySR8bEziXzlQP8ID2OA7GzrQ4IRR2MRqVAeK8dkBvK7XPxjgYT9i+cOs5GaA46XFAfzT8eXXjz845H40tPHoVpDjWi4MHmlB6pqpJOot8QPW+ofqdh9OQyv4Uwse4sgKnqlgsC19F9LDDkyaUfOHANtmkB4Crf6IM6HJ+PgzMPhIgXHfr+fMl1M9jXFIQ/UcTXz0GNdYTDNV/9pwaYwLbAmgjXE9TVeMcXbu29ojBJmOOfoPSs9JczxjXGPbDaptE1PUMb7dDKbqZzQX50bWtttQgoJb2A3uopccPQUTyCqTUD8Ek2SBD3Pc4zcRU8wV9Ag7BKsd4RIa9EO69QT/RXzxh3UklUT9JEYfNRQ4xNibyfWJGVaATLL1kxp9QxxeRi0A16fmgsrNt1CcW0E5wFnDQv9Oxdwojv1EJW+2nGffYTFipCrfCobvicI50V8AqAJYJwFuRpCrnAF3MILpQATtneoT6fypmp9vb1rj2s4F1aDx66vLHezhLez2zBg/1cD5dtIu9UlnCaqcVCyxMvxwBcfwmnXd5qtYm9qgwPXciPz13cOwEPSPc2Qn+Q1g4Z3sd3b+MvYqxFdOiofVWg/nuUFh+K1JMTjmaxUModl+HjTd20/BwdNX

TeratermSSHポートフォワーディング

クライアントはOSはWindowssshポートフォワーディングの為にTeratermを使用します。
サーバはLinuxです。

Teratermを開いて、設定メニューからSSH転送を選択します。
f:id:toshtone:20160214215801j:plain

追加をクリックします。
f:id:toshtone:20160214215824j:plain

このように設定します。
f:id:toshtone:20160214220449j:plain

ローカルのポートは何でも構いません。
リッスンは空で良いです。
リモート側ホストはリモートのホストアドレス(クライアントのhostsにのみ書かれたドメイン名は無効です)。
今回は192.168.10.5というサーバを想定しました。
ポートはMySQLを想定したので3306を指定しました。

これで192.168.10.5のサーバにSSH接続します。

DB接続ツールなどでローカルの13306に接続すると、192.168.10.5のDBに接続することが出来ます。
[まだ後日書き足す予定]

Youtube-dl

youtubeで見つけたお気に入りの動画をダウンロードする為に使うこのツール。
まずはubuntu15.04にインストールしてみました。

ubuntu15.04へのインストール方法

curl https://yt-dl.org/downloads/日付/youtube-dl -o /usr/local/bin/youtube-dl

日付の箇所は、最新のものを確認して記載します。

パーミッションは755

chmod 755 /usr/local/bin/youtube-dl

これでインストール完了です。

使い方

youtube-dl URL

URLはhttp(s)を含んでも含まなくてもどちらでも良いです。

mp3ファイルとしてダウンロードしたい時はこのように指定します。

youtube-dl -x --audio-format mp3 URL

ffmpegをインストールしていないと下記のエラーが出ます。

ERROR: ffprobe or avprobe not found. Please install one.

そうなったらインストールしましょう。

apt-get install ffmpeg

CentOS7ではNux Dextop repositoryからインストールするのが簡単そうでした。
依存関係の為先にepel-releaseをインストール

CentOS7へのインストール方法

yum -y install epel-release

続いてNux Desktopリポジトリをインストール

rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

ffmpegをインストール

yum -y install ffmpeg ffmpeg-devel

追加したリポジトリを必要の時にのみ使用したい場合は
/etc/yum.repos.d/配下のrepoファイルのenableを0にして下さい。
その際は下記のようなコマンドでインストールを行います。

yum --enablerepo=epel install ~~
yum --enablerepo=nux-dextop install ~~

文字コードと改行コードの変換

Linux環境ならすぐ変換することが出来ますね。
よく、sjis+crlfというWindowsのファイルをutf8+lfにすることがあります。

Linux環境があってしかもnkfが入っているようならlinuxに移して変換してやると
とても楽です。

入っていないようならインストール。

yum install -y nkf

続いて変換するファイルをscp等でLinux環境に移動。
そして変換をかけてやる。

nkf -wLu --overwrite *.txt

確認はnkf -g ファイル名

英字だけのファイルは何回変換してもasciiと表示されるだけです。
だって英字だけのファイルなんでね。

Ajax 初めの一歩

非常にいまさらなんですが、Ajaxの基礎の基礎について書きたいと思います。

使用言語はPHPにします。

値を入力して送信、サーバで計算してローカルに値を戻します。
必要なファイルはtest.htmlとtest.phpです。
test.htmlにアクセスして送信ボタンを押すとtest.phpにデータが送信され
結果をtest.htmlに戻して値を表示します。

f:id:toshtone:20150913234014p:plain

f:id:toshtone:20150913234439p:plain

htmlはこんな感じ

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
function func() {
    $.ajax({ type: "POST", url: "./test.php",
        data: {
            num1 : $(val1).val(),
            num2 : $(val2).val()
        },
        dataType: 'json',
        success: function(data) {
            target = document.getElementById("output");
            target.innerHTML = data.msg;
        }
    });
}
</script>
</head>

<body>
    <center>
    <label>値1<input type="text" name="val1" id="val1" size="3" maxlength="3"> X </label>
    <label>値2<input type="text" name="val2" id="val2" size="3" maxlength="3"></label>
    <input type="button" value="送信" onclick="func();" />
    <div style="text-align:center" id="output"></div>
    </center>
</body>

</html>

続いてphp

<?PHP
$num1 = (int)$_POST['num1'];
$num2 = (int)$_POST['num2'];
$rtnVal = $num1 * $num2;
header("Content-Type: application/json; charset=utf-8");
echo json_encode( array( 'msg' => $rtnVal ) );
?>

シンプルな例ということで。

エクセルで各値の個数の集計

エクセルでこういったデータの個数の集計をしたい時
どうやるんだったかよく忘れてしまうので、手順をまとめます。

こういったデータを・・・
f:id:toshtone:20150905204107p:plain

こんな感じに集計したい
f:id:toshtone:20150905204122p:plain

まずはソートします。
f:id:toshtone:20150905204110p:plain

そのままね
f:id:toshtone:20150905204112p:plain

ソートされました。
f:id:toshtone:20150905204115p:plain

次に集計
f:id:toshtone:20150905204117p:plain

ここで個数の集計
f:id:toshtone:20150905204120p:plain

そうすると完成
f:id:toshtone:20150905204122p:plain