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化するのも良いのかな。
sedについていくつか
sedでurl置換したい時に、エスケープが面倒なので調べてみると
sed -e "s|http://local.com/|https://honban.com/|g" in.html out.html
のようにすればエスケープする必要がなくなる。
sed -i -e "s|http://local.com/|https://honban.com/|g" xxx.html
のように-iで上書き保存。
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をインストールしたのはグループウェアを試したかったからでした。
グループウェアのAipoっていうのが良さそうだなと思って、
インストールしてみました。
インストールはとても簡単。
このサイトの手順で進めるだけ。
インストール手順 - オープンソース|Aipo(アイポ)
すぐに終わります。
さあ外部から接続しようと試すも、つながらない。
firewalldは動いてないからSELinuxか!
SELinuxは最小限のセットアップでも入るんですね。
なんとも邪魔くさい。
# getenforce Enforcing
やっぱりか!
では/etc/selinux/configを編集するか
disabledを追加して再起動。
あれ起動しない。
何か失敗している。
GRUBのとこでeを押してごにょごよするか。
selinux=0を追加する。
=が出せないのですが、隣の~(チルダ)^(ハット)へのキーで出すことが
出来ます。
linux16の行末ですね。
そしてctrl+xで起動。
無事起動出来たら、/etc/selinux/configを見てみる。
やっぱり間違えていました。
SELINUX=disabled
にして再起動。
その後Aipoの起動も確認できました。
久しぶりにCentOSをインストール
CentOSが起動しなくなったのでCentOS7を久しぶりにインストールしました。
NHMを使ってスナップショットをとっていて、VMWarePlayerから使わなくなった
仮想マシン(スナップショット)を削除したら上記の通り起動しなくなってしまい
ました。
たいしたモノが入ってないので諦めてさっさと再セットアップ。
男は黙って最小限でセットアップです。
ネットワーク設定しとかないと接続出来ません。
オンにしましょう。
起動出来ました。
sshでも接続出来ます。
vmware-toolsをインストールします。
[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)をたてる
広告を非表示にする為にプロキシサーバをたてました。
インストール
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のポートを通じてftpやmysqlなどの通信を行うことが出来るSSHポートフォワーディングの設定です。
TeratermでSSHポートフォワーディング
クライアントはOSはWindows、sshポートフォワーディングの為にTeratermを使用します。
サーバはLinuxです。
Teratermを開いて、設定メニューからSSH転送を選択します。
追加をクリックします。
このように設定します。
ローカルのポートは何でも構いません。
リッスンは空で良いです。
リモート側ホストはリモートのホストアドレス(クライアントのhostsにのみ書かれたドメイン名は無効です)。
今回は192.168.10.5というサーバを想定しました。
ポートはMySQLを想定したので3306を指定しました。
これで192.168.10.5のサーバにSSH接続します。
DB接続ツールなどでローカルの13306に接続すると、192.168.10.5のDBに接続することが出来ます。
[まだ後日書き足す予定]