orz.conf

技術メモ✍

mysqlでエラー

You can't specify target table 'x' for update in FROM clause
こんなエラーが出て困りました。
意味はテーブル'x'をFROM句に入れてアップデートのために明示することは出来ません。
つまりfrom句にテーブル'x'を記載しないで下さいという感じでしょうか。
clauseが句なんですね。

TABLE1にはNOというカラムが存在し、
その最大値のレコードを削除しようとしました。

DELETE FROM
  TABLE1
WHERE
  NO = (
    SELECT
      MAX(NO)
    WHERE
      TABLE1
    );

mysqlだと削除するテーブルとサブクエリのテーブルが同じだと
怒られてしまうようです。

DELETE FROM
  TABLE1
ORDER BY
  NO DESC
LIMIT
  1;

とか回避策を使うしか無いようです。

頻繁に使う条件ならfunction化するのも良いのかな。

CentOS7 IPの固定

毎度毎度調べて設定するIPアドレス
VMWare Player上に構築する際の設定です。

BOOTPROTOをdhcpからstaticに変更
DNS1はVMware Virtual Ethernet Adapter for VMnet8の
アダプタ設定が192.168.31.1となっているのであれば
192.168.31.2を設定。GateWayについても同様に192.168.31.2。

BOOTPROTO=static
DNS1="192.168.31.2"
DOMAIN=test.com
IPADDR=192.168.31.131
NETMASK=255.255.255.0
GATEWAY=192.168.31.2

この書き方でバックアップを作成することが可能です。

cp -p test{,.org}

グループウェアのインストール

久しぶりにCentOSをインストールしたのはグループウェアを試したかったからでした。

toshtone.hatenablog.jp

グループウェアのAipoっていうのが良さそうだなと思って、
インストールしてみました。

インストールはとても簡単。
このサイトの手順で進めるだけ。
インストール手順 - オープンソース|Aipo(アイポ)

すぐに終わります。
さあ外部から接続しようと試すも、つながらない。

firewalldは動いてないからSELinuxか!

SELinuxは最小限のセットアップでも入るんですね。
なんとも邪魔くさい。

# getenforce
Enforcing

やっぱりか!
では/etc/selinux/configを編集するか
disabledを追加して再起動。

あれ起動しない。
何か失敗している。
GRUBのとこでeを押してごにょごよするか。

f:id:toshtone:20161207232338p:plain

selinux=0を追加する。
=が出せないのですが、隣の~(チルダ)^(ハット)へのキーで出すことが
出来ます。

f:id:toshtone:20161207232824p:plain

linux16の行末ですね。
そしてctrl+xで起動。

無事起動出来たら、/etc/selinux/configを見てみる。

f:id:toshtone:20161207234658p:plain

やっぱり間違えていました。

SELINUX=disabled

にして再起動。

その後Aipoの起動も確認できました。

久しぶりに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に接続することが出来ます。
[まだ後日書き足す予定]