Notice: Undefined index: tag_id in /home/users/0/moo.jp-logic/web/www.pgmemo.tokyo/memo.php on line 242
サーバ構築・管理|%E3%82%B9%E3%83%91%E3%83%A0%E5%AF%BE%E7%AD%96|プログラムメモ
タグ「%E3%82%B9%E3%83%91%E3%83%A0%E5%AF%BE%E7%AD%96」での検索

nginx の 3つのロードバランス方法

● 1. ラウンドロビン(デフォルト)

リクエストを順番に各サーバーに分配します。

upstream myapp {
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

● 2. 最少接続数 (Least Connections)

最少接続数は現在処理中の接続が最も少ないサーバーにリクエストを割り当てる方法です。

upstream myapp {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

● 3. IPハッシュ (IP Hash)

IPハッシュ方式は、クライアントのIPアドレスのハッシュ値を使用してリクエストを特定のサーバーに割り当てます。
これにより、同じクライアントからのリクエストが同じサーバーに継続して送られるため、
セッションの持続性が必要なアプリケーションに適しています。

upstream myapp {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}
No.2505
04/16 20:56

edit

conoha vps で kusanagi

● SELinuxの無効化

・1. SELinuxステータスの確認

sestatus

・2. SELinux設定の変更

vi /etc/selinux/config
SELINUX=permissive
  ↓
SELINUX=disabled

・3. マシンを再起動してSELinux設定を反映させる

reboot

● ホスト名の変更

・1. 現在のホスト名を確認する

hostnamectl | grep hostname

・2. ホスト名を変更する

hostnamectl set-hostname 書き換えたいホスト名
No.2397
09/21 14:33

edit

Alma Linux 9 で Apache , MySQL , PHP

● dnfのアップデート

dnf update -y

● apache のインストール

dnf install -y httpd

systemctl start httpd
systemctl enable httpd
systemctl status httpd

なお 設定ファイルは /etc/httpd/conf/httpd.conf にあります。

● 443 , 80 番ポートを開く

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https

firewall-cmd --reload
firewall-cmd --list-all

● インストール可能なPHPのバージョンを確認する

dnf module list php

● epelリポジトリを追加する

dnf -y install epel-release

dnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

dnf clean all && dnf -y makecache

● php 8.2 をインストールする

dnf -y module reset php && dnf -y module enable php:remi-8.2

dnf -y install php php-cli php-fpm php-devel php-pear php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml php-dom php-redis php-memcached php-memcache php-process

引用 : https://bit.ly/3GwK6s6

● phpinfoで確認する

vi /var/www/html/p.php
<?php
phpinfo();
?>

http://192.168.1.28/p.php などにアクセスして正しく表示されることを確認します。

● MySQLをインストールする

dnf -y install mysql-server mysql

● MySQLのサービスを開始する

systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld

● ssh 接続する

ifconfig をインストールする

dnf install net-tools
ifconfig

SSH接続する

ssh root@<IPアドレス>
No.2314
04/10 15:01

edit

mod_rewrite で webp 画像のURL を png画像のURLへリダイレクトする

● mod_rewrite で webp 画像のURL を png画像のURLへリダイレクトする

以下のようなリダイレクトをする場合の設定です

/webp/hoge.webp
  ↓
/img/hoge.png

.htaccess

<ifModule mod_rewrite.c>
RewriteEngine On

# webp未対応ブラウザのみ
RewriteCond %{HTTP_ACCEPT} !webp

# webp を png に変換
RewriteRule webp\/(.+).webp$ /img/$1.png  [R,L]
</ifModule>
No.2129
01/06 12:51

edit

ssh-agent を使用してサーバ上からgitへアクセスする秘密鍵をサーバ上に保存しないようにする

● ssh-agent を使用してサーバ上からgitへアクセスする秘密鍵をサーバ上に保存しないようにする

鍵はローカルマシン(Mac)のみに保持するようにして、サーバ上に秘密鍵を保存しないようにします

・1. ssh-agent の開始(起動)

exec ssh-agent $SHELL

ssh-agent プロセスの確認

ps aux | grep ssh-agent

・2. 秘密鍵ファイルの登録・確認・削除

秘密鍵ファイルの登録

ssh-add 秘密鍵のパス

登録されている鍵ファイルの一覧を表示して確認

ssh-add -l

秘密鍵ファイルの削除

ssh-add -d 削除したい秘密鍵のパス

・3. 鍵転送 エージェント転送 (ForwardAgent) を使用する

ssh -A コマンドで接続

または

~/.ssh/configの接続するサーバ設定に以下を追加

ForwardAgent yes

これでローカルのマシンで ssh-add した秘密鍵が接続したサーバーでも使用することができます。

No.2106
12/02 10:27

edit

SSHやSFTPをパスワードなしで接続する(秘密鍵 / 公開鍵 作成方法)

ssh やSFTPをパスワードなしで接続するには次のようにします。

● 1. 【鍵の作成】接続元マシンで以下のように入力する(RSA 4096bit)

鍵ファイル名を指定して「公開鍵」「非公開鍵」2つの鍵ファイルを作成します。

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa__mysite

(何か入力を促されますが、そのままenterを2回押します) これで 
公開鍵「id_rsa__mysite.pub」 と 
非公開鍵「id_rsa__mysite」 
が生成されます。

RSAより高速で強度の高い(Ed25519)で鍵生成する場合は

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519__mysite

で生成します。生成ファイル名(「id_rsa__mysite」→「id_ed25519__mysite」)に変えているので、以下の文章のファイル名のところは読み替えてください。

● 2. 【RSA鍵の強度を調べる】

接続元マシンで以下のように入力します

ssh-keygen -l -f ~/.ssh/id_rsa__mysite
# または次のコマンドでもok
ssh-keygen -l -f ~/.ssh/id_rsa__mysite.pub

表示される先頭の数字がバイト数です。2048以上になっていることを確認します。

● 3. ( 接続元マシンで)【作成したRSA公開鍵をコピーする】

cat ~/.ssh/id_rsa__mysite.pub
(画面上にキーを表示してクリップボードにコピーする)

● 4. 接続先マシンにて公開鍵を設定する(転送コマンドを使用する場合)

ssh-copy-id -i ~/.ssh/id_rsa__mysite.pub [リモートユーザー]@[リモートサーバーのホスト名]

● 4. 接続先マシンにて公開鍵を設定する(手動でする場合。あらかじめsshで接続しておく)

cd
mkdir .ssh
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys
vi authorized_keys
(ここでviから先ほどクリップボードにコピーした鍵をペーストする。)

viの保存コマンド esc:wqEnter で保存する。

なお、サーバによってはファイル名「authorized_keys2」というファイルが存在することがあります。(古いサーバです。)
気にせず「authorized_keys」に追記 します。
どちらのファイルもない場合は「authorized_keys」でOKです。

● 5. 設定完了。(接続元マシンから)秘密鍵を指定した接続を確認する

ssh  -i  ~/.ssh/id_rsa__mysite  user@xxx.yyy.zzz

なお、SSH接続の不具合を調査するときはこのように -v をつけて実行します

ssh  -v -i  ~/.ssh/id_rsa__mysite  user@xxx.yyy.zzz
No.250
09/21 13:49

edit

ssh

mod rewriteで特定のディレクトリを除外して転送する

● mod rewriteで特定のディレクトリを除外して転送する

/wp-admin を除外する

#除外設定
RewriteCond %{REQUEST_URI} !(^/wp-admin/)
No.2097
11/05 08:26

edit

No.2033
09/01 14:12

edit

Barracudaに登録されたメールのスパム判定を解除する

● Barracudaに登録されたメールのスパム判定を解除する

このようなメールが返されてきた場合はスパムサーバと判定されてしまっています。

<aaa@bbb.com>: host smtp1.epressd.jp[123.123.123.123] said: 554 5.7.1
Service unavailable; Client host [123.123.123.123] blocked using
b.barracudacentral.org;
http://www.barracudanetworks.com/reputation/?pr=1&ip=123.123.123.123 (inreply to RCPT TO command)

1. 現在スパム判定されているかどうかをチェックする

https://www.barracudacentral.org/lookups

こちらにお使いのサーバーの IP アドレスを入力します。

スパム判定されている場合は解除のリクエストを出すことができますのでそのままリクエスト解除フォームから送信します。

No.1922
12/04 15:59

edit

nginxでファイルアップロードの容量制限「Request Entity Too Large」が出る場合の対処法

● nginxでファイルアップロードの容量制限「Request Entity Too Large」が出る場合の対処法

設定ファイルを

client_max_body_size 999M;

のように、クライアントの送信可能サイズを引き上げます。

No.1850
08/31 15:52

edit

php へ pdflibをインストールする

● 1. php へ pdflibをインストールする

(root ユーザで以下の手順を行います)

1. ここからダウンロード

http://www.pdflib.jp/product/download/pdflib/

2. bind/php/php-730-nts/php_pdflib.so を サーバーの /opt/remi/php73/root/usr/lib64/php/modules/ へアップロード

3. php.iniの場所を確認し編集する

php -r "echo phpinfo();" | grep "php.ini"
vi /etc/php7.d/php.ini
extension=/opt/remi/php73/root/usr/lib64/php/modules/php_pdflib.so

を追加する。

4. サーバーを再起動する

reboot

5. PDFlibがインストールされたことを確認します

php -m

以上です。


● 2. php へ pdflib(Lite) をインストールする

● yumリポジトリのインストールと yumアップデート

yum install epel-release
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
yum -y update

● php pdflibの検索

yum --enablerepo=remi search pdflib

結果

php54-php-pecl-pdflib.x86_64 : Package for generating PDF files
php55-php-pecl-pdflib.x86_64 : Package for generating PDF files
php56-php-pecl-pdflib.x86_64 : Package for generating PDF files
php70-php-pecl-pdflib.x86_64 : Package for generating PDF files
php71-php-pecl-pdflib.x86_64 : Package for generating PDF files
php72-php-pecl-pdflib.x86_64 : Package for generating PDF files
php73-php-pecl-pdflib.x86_64 : Package for generating PDF files
php74-php-pecl-pdflib.x86_64 : Package for generating PDF files

● php pdflibのインストール

PHP バージョン7.3用の PDFlib をインストールします

yum --enablerepo=remi -y install php73-php-pecl-pdflib

● php.iniの場所を確認し編集する

php -r "echo phpinfo();" | grep "php.ini"
vi /etc/php7.d/php.ini
extension=/opt/remi/php73/root/usr/lib64/php/modules/pdf.so

を追加する。

KUSANAGIをリスタートさせる

kusanagi restart

PHP のモジュールを確認する

php -m
No.1837
08/16 11:58

edit

IPアドレスが「xxx.xxx.xxx.xxx」のマシン名を調べる(Windows , Mac)

● IPアドレスが「192.168.100.193」のマシン名を調べる(Windowsマシン)

nbtstat -A 192.168.100.193

● IPアドレスが「192.168.100.193」のマシン名を調べる(Macマシン)

smbutil -v status -ae 192.168.100.193

● NetBIOS名が「km-arics-sv」のIPアドレスを調べる(Macマシン)

smbutil lookup km-arics-sv
No.1751
05/13 09:20

edit

linuxマシンでssh(コマンドライン)から wifi 設定を変更する

linuxマシンでssh(コマンドライン)から wifi 設定を変更する

● linuxマシンのネットワークインターフェース名を表示

iwconfig

結果例

wlan0     IEEE 802.11  ESSID:"HOGEHOGE-LAN-1"
          Mode:Managed  Frequency:2.412 GHz  Access Point: 34:76:C5:50:69:96
          Bit Rate=54 Mb/s   Tx-Power=31 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=69/70  Signal level=-41 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:5  Invalid misc:0   Missed beacon:0

eth0      no wireless extensions.

lo        no wireless extensions.

ネットワーク名 wlan0 が有効である事がわかります。

● linuxマシンのwifi設定接続を変更する

sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
        ssid="1つ目のSSID"
        scan_ssid=1
        psk="1つ目のSSIDのパスワード"
        key_mgmt=WPA-PSK
}

network={
        ssid="2つ目のSSID"
        psk="2つ目のSSIDのパスワード"
        key_mgmt=WPA-PSK
        disabled=1
}

network={
        ssid="3つ目のSSID"
        key_mgmt=NONE
        wep_key0="3つ目のSSIDのパスワード"
        disabled=1
}

引用元: https://bit.ly/2VNu3Or

● linuxマシンのwifi設定接続を確認する

1. あらかじめ現在の route を確認する

route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
default         192.168.100.1   0.0.0.0         UG    303    0        0 wlan0
192.168.100.0   0.0.0.0         255.255.255.0   U     303    0        0 wlan0

2. wpa_supplicant.conf を使って wifi手動接続する

sudo wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
No.1740
04/21 13:13

edit

MacのDNSのキャッシュをクリアする

● MacのDNSのキャッシュをクリアする

sudo killall -HUP mDNSResponder
No.1739
04/17 23:47

edit

現在のネットワークのDNSを調べる

● 現在のネットワークのDNSを調べる(Macの場合)

1. Macの現在のネットワークサービスを調べる

Macに接続しているイーサネットケーブルのポートまたは wi-fi ポートなど調査の対象となるネットワークデバイスの一覧を表示します

 networksetup -listallnetworkservices

結果例

An asterisk (*) denotes that a network service is disabled.
USB 10/100/1000 LAN
Wi-Fi
Bluetooth PAN
Thunderbolt Bridge

2. ネットワークサービスの情報を調べる

例えば Wi-Fi の情報を調べてみます

networksetup -getinfo "Wi-Fi"

結果例

DHCP Configuration
IP address: 192.168.2.114
Subnet mask: 255.255.255.0
Router: 192.168.2.1
Client ID: 
IPv6: Automatic
IPv6 IP address: none
IPv6 Router: none
Wi-Fi ID: 8c:85:90:90:27:14

3. DNSサーバの情報を調べる

調べ方その1

scutil --dns

帰ってくる結果リストの一番下にこのように記述されているはずです

DNS configuration (for scoped queries)

resolver #1
  nameserver[0] : 192.168.3.1
  if_index : 6 (en0)
  flags    : Scoped, Request A records
  reach    : 0x00020002 (Reachable,Directly Reachable Address)

調べ方その2

networksetup -getdnsservers "Wi-Fi"

4. Macの(mDNSResponder)のDNSキャッシュをクリアする

sudo killall -HUP mDNSResponder
No.1738
04/17 23:53

edit

mod_rewrite( .htaccess ) で URLの「www」ありなしを統一する。「http」を「https」に統一する。

● 【http://www.hogehoge.com】→【https://hogehoge.com】とする場合の例

www 無しのURIを www.付きのURIに変換する。「http」を「https」に統一する。

.htaccess に保存してサイトのトップに置きます。

<ifModule mod_rewrite.c>
	RewriteEngine On

	# http でのアクセス
	RewriteCond %{HTTPS} off
	RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

	# https でのアクセス
	RewriteCond %{HTTPS} on
	RewriteCond %{HTTP_HOST} ^www\.hogehoge\.com$
	RewriteRule ^(.*)$ https://hogehoge.com/$1 [R=301,L]
</ifModule>

上の書き方でリダイレクト連続する場合は次のようにも書きます。

	# http でのアクセス
   RewriteCond %{ENV:HTTPS} !^on$
	RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

● http でアクセスされた場合に https へリダイレクトさせる

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
No.233
03/27 15:14

edit

perlモジュール

Centos 7 にフォントを手動でインストールする

● Noto Sans CJK JP

wget https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip
unzip NotoSansCJKjp-hinted.zip
rm -f NotoSansCJKjp-hinted.zip
sudo mkdir /usr/share/fonts/NotoSansCJKjp
sudo mv NotoSans* /usr/share/fonts/NotoSansCJKjp/

● Noto Serif CJK JP

wget https://noto-website-2.storage.googleapis.com/pkgs/NotoSerifCJKjp-hinted.zip
unzip NotoSerifCJKjp-hinted.zip
rm -f NotoSerifCJKjp-hinted.zip
sudo mkdir /usr/share/fonts/NotoSerifCJKjp
sudo mv NotoSerif* /usr/share/fonts/NotoSerifCJKjp/

● 源柔ゴシック (げんじゅうゴシック)

wget https://osdn.jp/downloads/users/8/8642/genjyuugothic-20150607.zip
unzip genjyuugothic-20150607.zip
rm -f genjyuugothic-20150607.zip
sudo mkdir /usr/share/fonts/GenJyuuGothic
sudo mv GenJyuuGothic* /usr/share/fonts/GenJyuuGothic/

● Centos 7 に手動でインストールしたフォントを使用する

fc-list -v

で一覧を表示して、 "Noto Serif CJK JP" の項目を見てみます。

Pattern has 24 elts (size 32)
        family: "Noto Serif CJK JP"(s)
        familylang: "en"(s)
        style: "Regular"(s)
        stylelang: "en"(s)
        fullname: "Noto Serif CJK JP"(s)
        fullnamelang: "en"(s)
        slant: 0(i)(s)
        weight: 80(f)(s)
        width: 100(f)(s)
        foundry: "GOOG"(s)
        file: "/usr/share/fonts/NotoSerifCJKjp/NotoSerifCJKjp-Regular.otf"(s)
        index: 0(i)(s)
        outline: True(s)
        scalable: True(s)
        charset: 
        .... 続く .....

とあるので family に指定されている "Noto Serif CJK JP" を CSS で指定すれば使用できます。

body {
    font-family: "Noto Serif CJK JP";
    font-weight: bold;
}
body {
    font-family: "Gen Jyuu Gothic P";
No.1689
02/04 14:46

edit

Google Chrome を Centos7 にインストールする

● Google Chrome を Centos7 にインストールする

sudo vi /etc/yum.repos.d/google-chrome.repo
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

* Google Chromeのインストール

sudo yum install -y google-chrome-stable

* IPAゴシックフォントのインストール

sudo yum install -y ipa-gothic-fonts 

* その他フォントのインストール

sudo yum install -y ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts

* Google Chromeの起動チェック

google-chrome --version
Google Chrome 79.0.3945.130 

OKです!

No.1666
01/21 16:18

edit

png のサイズを劇的に小さくする pngout を Centos7 / FreeBSD にインストールする

● pngout を Centos7 にインストールする

mkdir test_pngout
cd test_pngout
wget http://static.jonof.id.au/dl/kenutils/pngout-20150319-linux.tar.gz
tar zxvf pngout-20150319-linux.tar.gz
cp ./pngout-20150319-linux/x86_64/pngout /usr/local/bin/

● pngout を FreeBSD にインストールする

mkdir test_pngout
cd test_pngout
wget http://static.jonof.id.au/dl/kenutils/pngout-20150319-bsd.tar.gz
tar zxvf pngout-20150319-bsd.tar.gz
cp ./pngout-20150319-linux/x86_64/pngout /usr/local/bin/

● pngoutコマンドの確認

pngout -v

● pngoutコマンドの使い方

pngout  before.png  after.png

● pngout実行時間の計測

time pngout before.png after.png

結果例 967KB の png ファイルを小さくしてみます。

 In:  967067 bytes               before.png /c6 /f5
Out:  352325 bytes               after.png /c3 /f0 /d8, 255 colors
Chg: -614742 bytes ( 36% of original)

real    3m21.419s
user    3m21.218s
sys     0m0.189s

3分21秒と結構かかります。 ただ圧縮率は 36% ととても小さくなりました。

No.1656
01/15 10:58

edit

sshの接続が自動で切れるのを防ぐ

● sshの接続が自動で切れるのを防ぐ(クライアント側に記述)

.ssh/config

ホスト設定のところに ServerAliveInterval を記述します

Host remotehost:
    HostName remotehost.com
    ServerAliveInterval 240
No.1624
11/18 09:26

edit

SSH で ログインユーザーのホームディレクトリを 0777 にした場合にエラーになるのを変更する

● SSH で ログインユーザーのホームディレクトリが 0777 にした場合にエラーになるのを変更する

これはデフォルトで StrictModes が有効なため起こります。

StrictModes

sshd がファイルモードとユーザーのファイルとホームディレクトリの所有権をチェックするかどうかを指定します

● 「StrictModesが yes」の時にログインを拒否される条件

・ファイル「authorized_keys」が、オーナー以外に書き込み権限がある場合、公開鍵認証は拒否される。
・ホームディレクトリが、オーナー以外に書き込み権限がある場合、公開鍵認証は拒否される。(例 777 はエラーになる。)(755は ok ! )

● sshd の StrictModes を no にする

vi /etc/ssh/sshd_config
strictmodes no
No.1604
10/16 15:03

edit

nginx で シンボリックリンクを貼ったところが 403 Forbidden となる場合の対処

シンボリックリンクを

https://my-site.tld/css/ で 表示させる css ディレクトリをシンボリックリンクを貼って表示させる場合に Forbidden エラーとなる場合があります。

nginx の conf ファイルに以下のように記述します。

例:

# ===== symbolic link setting =====

location /css/ {
	root  /var/www/vhosts/my-site.tld/httpdocs/;
}
# ===== symbolic link setting =====
No.1602
10/15 10:49

edit

Centos7 で ssh の接続を IP で制限する

なお、Amazon AWS の EC2 を使っている場合は セキュリティグループ を使用しましょう

● Centos7 で ssh の接続を IP で制限する

Centos7 からは firewalld を使用します。
( /etc/hosts.deny , /etc/hosts.allow は使用しません )

● 現在の firewalld 設定を確認する

firewall-cmd --list-all

(例)

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: http https imap imaps pop3 pop3s smtp smtps
  ports: 22000/tcp 587/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

● 1. まず既存の 「全てのIPを許可している sshポート」 を閉じます

・標準の sshポート(22番) を使用している場合

例: sshポート(22番)を削除します。

firewall-cmd --permanent --remove-service=ssh

・22番 以外の特定のポートを使用している場合

例: 22000番を削除します。

firewall-cmd --remove-port=22000/tcp --permanent 

● 2. IP許可する設定を追加します

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="接続を許可するIPアドレス" port protocol="tcp" port="22" accept"

設定例

IP : 123.123.123.123
ポート : 22000
を許可します。

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="123.123.123.123" port protocol="tcp" port="22000" accept"

● 2. 全ての接続元に対してポートを開放する場合

ポート22000を開放します

firewall-cmd --add-port=22000/tcp --zone=public --permanent

● 3. 再度 firewalld を再起動して設定を確認する

firewall-cmd --reload
firewall-cmd --list-all
No.1594
09/21 13:55

edit

Centos7 の git1.8 を git2 にインストールし直す

● 現在の git のバージョンを確認する

git --version
git version 1.8.3.1

● 古いバージョンの git をアンインストールしてから新しい git をインストールする

yum install -y https://repo.ius.io/ius-release-el7.rpm https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y remove git git-\*
yum -y install git224

● インストールし直した git のバージョンを確認する

git --version
git version 2.24.3

引用 : http://bit.ly/30xQc3J

No.1589
10/26 10:46

edit

nginx で全ての http 接続を https にリダイレクトする

● nginx で全ての http 接続を https にリダイレクトする

/etc/nginx/conf/xxxxxxx.conf

server {
    listen 80;

    # http を https にリダイレクト( ↓ この行を追加する )
    return 301 https://$host$request_uri;

    ..........
}

● nginx のリスタート

nginx -s reload
No.1571
08/10 10:37

edit

nginx で client intended to send too large body: xxxxxx bytes エラーへの対処法

● nginx で client intended to send too large body: xxxxxx bytes エラーへの対処法

nginx の設定ファイルに以下のように記述しましょう。

http, server, location のディレクティブに記述することができますので
設定したい範囲を決めて記述しましょう

http {
    client_max_body_size 1048576; # default 1m

    server {
        client_max_body_size 100m;

        location ~ ^/upload/ {
            client_max_body_size 2g;
        }
    }
}

引用: http://bit.ly/2JGqkxe

● Plesk で client intended to send too large body: xxxxxx bytes エラーへの対処する

rootアカウントが必要 ですが、とても簡単にできます。

/usr/local/psa/admin/conf/panel.ini (もし無ければ新規作成)に 設定を追加して、Pleskの 設定を 再設定するだけです

cd /usr/local/psa/admin/conf/
vi panel.ini

以下の内容で保存します

[webserver] 
nginxClientMaxBodySize = 999m

Pleskの コントロールパネルを再設定する

plesk sbin httpdmng --reconfigure-all

以上で plesk の画面には表示されませんが 設定が完了しています。

引用 : http://bit.ly/2JGVswB

添付ファイル1
No.1556
07/19 12:08

edit

添付ファイル

nginx (104: Connection reset by peer) の対処法

● nginx (104: Connection reset by peer) の対処法

1. エラーログを見る

20xx/xx/xx 16:17:39 [error] 3288#0: *100 readv() failed (104: Connection reset by peer) while reading upstream, client: 192.168.1.1, server: aaa.bbb.ccc, request: "POST /cms/admin/convert/xls_sakuhin_convert_exec_convert HTTP/2.0", upstream: "fastcgi://127.0.0.1:9000", host: "aaa.bbb.ccc", referrer: "https://xxxxx"

fastcgi://127.0.0.1:9000 でこけているもよう。

● php7-fpm の設定を調べる

request_terminate_timeout について記述があるファイルを検索します。

cd /etc/php7-fpm.d
grep 'request_terminate_timeout' -rl .

結果

./www.conf.default
./www.conf
./www.conf.kusanagi

これらのファイルから実際に記述されているところを変更する。

● php7-fpm の設定値 request_terminate_timeout を変更する

vi /etc/php7-fpm.d/www.conf
request_terminate_timeout = 90

変更する ↓

request_terminate_timeout = 1200

php7-fpm と nginx のリスタート

service php-fpm restart
nginx -s reload
No.1550
02/17 14:55

edit

nginx の failed to open stream: Too many open files in /xxxx/xxx/xxx に対処する

● nginx の 開けるファイル数を確認する

ps ax | grep nginx | grep worker
11151 ?        S      0:01 nginx: worker process

 ↓ 11151 から次のコマンドを実行

cat /proc/11151/limits
Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        0                    unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             1866                 1866                 processes 
Max open files            20000                20000                files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       1866                 1866                 signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us  

Max open files 20000 となっています。

● nginxの設定を確認する

cat /etc/nginx/nginx.conf | grep worker_rlimit_nofile
20000

● OS全体の設定を確認する(これより小さい値にする)

cat /proc/sys/fs/file-max

● nginxの worker_rlimit_nofile 設定を変更する

vi /etc/nginx/nginx.conf

例: worker_rlimit_nofile を 40000 に設定する

worker_rlimit_nofile  40000;

nginx のリスタート

nginx -s reload
No.1549
07/12 17:47

edit

nginx の client request body is buffered to a temporary file 警告の対処方法

● nginx の client request body is buffered to a temporary file 警告の対処方法

[warn] 15554#0: *3274 a client request body is buffered to a temporary file /var/cache/nginx/client_temp/0000000007

この警告についてですが client_body_buffer_size のサイズを大きくする ことで出なくなる可能性があります。 ( ただし大きくしすぎは注意 !! )

cat nginx.conf | grep client_body_buffer_size
    client_body_buffer_size 768k;

この値を大きくします。

    client_body_buffer_size 768k;
No.1548
07/12 10:25

edit

nginxに簡易ID,パスワード入力(Basic認証)をつける

● nginxに簡易ID,パスワード入力(Basic認証)をつける

nginxのコンフィグファイルに次のように記述します。

    location / {
       auth_basic "please enter id,pass";                   # 認証時に表示されるメッセージ
       auth_basic_user_file /home/YOUR-PATH/.htpasswd; # .htpasswdファイルのパス
    }

● KUSANAGI 9 の nginx設定ファイルはこちらにあります

cd /etc/opt/kusanagi/nginx/conf.d/

● nginxをリスタートします

nginx -s reload

● location / { の記述が複数ある場合

location / { の記述が複数ある場合 はそれぞれに設定するか、それより上の server { に設定します。

それぞれに設定する

    location / {
       auth_basic "please enter id,pass";                   # 認証時に表示されるメッセージ
       auth_basic_user_file /home/YOUR-PATH/.htpasswd; # .htpasswdファイルのパス
    }

    location /my_app/ {
       auth_basic "please enter id,pass";                   # 認証時に表示されるメッセージ
       auth_basic_user_file /home/YOUR-PATH/.htpasswd; # .htpasswdファイルのパス
    }

server 全体に設定する

    server {
       auth_basic "please enter id,pass";                   # 認証時に表示されるメッセージ
       auth_basic_user_file /home/YOUR-PATH/.htpasswd; # .htpasswdファイルのパス
    }

● KUSANAGI9 の nginx設定ファイル場所

/etc/opt/kusanagi/nginx/conf.d
No.1536
01/31 20:47

edit

Centos7 の firewalld で 外部からの特定のIPのアクセスを遮断する

● Centos7 の firewalld で 外部からの特定のIPのアクセスを遮断する

123.123.123.0/24 は適宜読み替えてください

firewall-cmd --zone=drop --permanent --add-source=123.123.123.0/24
firewall-cmd --reload

● 現在 active な zone を調べる

firewall-cmd --get-active-zones
drop
  sources: 123.123.123.0/24
public
  interfaces: eth0

drop のリストに入っています。これでOKです。

● メールの不正なログインを調べる

cat /var/log/maillog | grep failed
No.1492
04/19 11:31

edit

● CentOS で postfix に DKIM をインストールする

● CentOS で postfix に DKIM をインストールする

● 1. opendekimがインストール済みか確認し、なければインストールする

 yum list installed | grep dkim

インストールされていない場合は

yum install -y epel-release
yum install -y opendkim

● 2. 鍵の作成

opendkim-genkey -D /etc/opendkim/keys  -d example.com  -s 20190318

オプションの説明は次の通り

opendkim-genkey -D /etc/opendkim/keys  -d <サイト名>  -s <セレクタ名(ファイル名。指定しないときはdefault)>

作成後に鍵ができているか確認します

ls -la /etc/opendkim/keys
-rw------- 1 root     root     1679  1月 1 12:59 default.private
-rw------- 1 root     root      498  1月 1 12:59 default.txt

できています。 default.privateが秘密鍵 、default.txt が公開鍵です。

・所有者の変更

chown -R opendkim:opendkim /etc/opendkim/keys/*

↑ これを行わないとメール送信時に
「can't load key from /etc/opendkim/keys/default.private: Permission denied」
エラーとなります。

● 3. 公開鍵の中身を調べてDNSサーバに登録

DNSサーバに登録するのは次の2レコードです。

・DKIM公開鍵
・ADSPレコード

・1. DKIM公開鍵をDNSサーバに登録

公開鍵の中身を表示

cat /etc/opendkim/keys/default.txt

DKIM公開鍵の登録

Title Type
サブドメイン default._domainkey
対象 TXT
p=MIIBIjANBgkqh....................................

でお使いのDNSサーバに登録します。

・2. ADSPレコードをDNSサーバに登録

ADSPレコードには all , unknown , discardable のどれかを指定します。

設定値の説明は次の通り

unknown DKIM署名していないメールも送信している
all 送信するメールはすべてDKIM署名している
discardable DKIM署名されていないメール・不正な内容のDKIM署名がされているメールが届いたら、すべて破棄してよい

引用 : https://bit.ly/2VV4Yjd

ADSPレコードの登録

Title Type
サブドメイン _adsp._domainkey.
対象 TXT
dkim=unknown

でお使いのDNSサーバに登録します。

● 登録した鍵の確認

dig default._domainkey.<YOUR-SERVER.NAME> TXT

● 3. opendkim の設定を行う

・3-1 opendkim.conf の編集

設定ファイルのバックアップ

cp /etc/opendkim.conf /etc/opendkim.conf.original

opendkim.conf を編集します

vi /etc/opendkim.conf

Mode    v

   ↓

Mode    sv

KeyFile    /etc/opendkim/keys/default.private

   ↓

#KeyFile    /etc/opendkim/keys/default.private

 # KeyTable  /etc/opendkim/KeyTable

   ↓

KeyTable        refile:/etc/opendkim/KeyTable

# SigningTable  refile:/etc/opendkim/SigningTable

   ↓

SigningTable   refile:/etc/opendkim/SigningTable

# ExternalIgnoreList    refile:/etc/opendkim/TrustedHosts

   ↓

ExternalIgnoreList    refile:/etc/opendkim/TrustedHosts

# InternalHosts refile:/etc/opendkim/TrustedHosts

   ↓

InternalHosts refile:/etc/opendkim/TrustedHosts

・3-2 KeyTable の編集

vi /etc/opendkim/KeyTable

次のようなフォーマットでファイルの最後に追記します

<DKIMレコード(サーバ)名>  <ドメイン名>:<セレクタ名>:<秘密鍵ファイル>

YOURSERVER.COM はお使いのドメイン名に読み替えてください

セレクタが default の場合

default._domainkey.YOURSERVER.COM YOURSERVER.COM:default:/etc/opendkim/keys/default.private

・3-3 SigningTable の編集

vi /etc/opendkim/SigningTable

ファイルの最後の追記します

YOURSERVER.COM はお使いのドメイン名に読み替えてください

*@YOURSERVER.COM  default._domainkey.YOURSERVER.COM

● opendkimの起動

サーバをリスタートした時の自動起動の設定

chkconfig opendkim on

opendkimの起動

systemctl enable opendkim
service opendkim start

起動の確認

netstat -lntp | grep opendkim
systemctl status opendkim

● postfixの設定にdkimを追加

vi /etc/postfix/main.cf

最終行に以下を追記

# dkim
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

postfixの再起動

service postfix check
service postfix reload
postconf | grep smtpd_milters
No.1491
04/19 14:57

edit

自分のメールサーバからGmailアカウントへ送信できないときの対処法

● G SUITE SMTP エラー リファレンス

https://support.google.com/a/answer/3726730?hl=ja

● GlockAppsで迷惑メール度を判定する

https://sendgrid.kke.co.jp/blog/?p=8210

● postfixの設定を見直す

vi /etc/postfix/main.cf
inet_protocols = all
 ↓
inet_protocols = ipv4

http://pentan.info/server/linux/gmail_postfix_ipv6.html

● スパムの踏み台になっていないか確認する

cat /var/log/maillog | grep "status=sent"

● メールサーバがブラックリストに入っていないかチェックする

http://www.blacklistalert.org/
http://www.senderbase.org
http://www.spamhaus.org/
https://www.invaluement.com/removal/

● The IP you're using to send mail is not authorized 550-5.7.1 to send email directly to our servers. Please use the SMTP relay エラーの場合

https://support.google.com/mail/troubleshooter/2920052#ts=2920085,2923810,2923812,2923995,2924030,2924035

https://www.linode.com/community/questions/11438/solved-low-server-ip-reputation-when-forwarding-email-to-gmail

No.1489
05/17 16:07

edit

メールサーバが SPAMHAUS の(ブラック)リストに載った時の解除方法

● メールサーバが SPAMHAUS のブラックリストに載っているかどうかを調べる

https://www.spamhaus.org/lookup/

こちらに IPアドレスを入れて調べます。

リストに載っていると

xxx.xxx.xxx.xxx is listed in the PBL, in the following records:

と表示されるので、IPアドレスの所をクリックして詳細表示画面へ移動します。

xxx.xxx.0.0/17 is listed on the Policy Block List (PBL)

と表示されていました。 サブネットマスク( /17 )なので32768個のIPアドレスが一括でリストに入れられています。

● SPAMHAUS のブラックリストから解除する

「Remove an IP from PBL」から解除申請をします。
メールアドレスを入力すると確認コードが送られてくるのでそれをフォームに入れて申請します。
以上です。

● 解除しても1年後には載ってしまう場合

こちらのやり方でチェックするという方法があるようです。

https://ameblo.jp/u-kun-win/entry-11989391713.html

No.1488
04/17 14:34

edit

apache mod_rewrite で 「?」 を含むページをリダイレクトさせる

● apache mod_rewrite で 「?」 を含むページをリダイレクトさせる

例 (index.php?page_id=22) (index.php?page_id=23)を new.html へリダイレクトさせる

	RewriteCond %{QUERY_STRING} ^page_id=(22|23)$
	RewriteRule ^.+$ new.html? [R,L]
No.1470
03/27 14:19

edit

Unixマシン起動時にシェルスクリプトを実行する

● Unixマシン起動時にシェルスクリプトを実行する

Unixマシン起動時にシェルスクリプトを実行するには /etc/rc.local へ記述します

● rc.local の確認

cat /etc/rc.local

● rc.local の確認

rootユーザーで行います

vi /etc/rc.local
No.1461
03/13 10:20

edit

Mac で MAMP を利用する

● MAMPのダウンロードとインストール

https://www.mamp.info/en/
ここからダウンロードしてインストールする

● MAMPの起動

/Applications/MAMP/MAMP.app

こちらを起動して「Start Servers」を押してサーバを起動してください。

● MAMPのMySQLを使用する

.bach_profile に 以下を追加

# MAMP MySQL
export PATH="/Applications/MAMP/Library/bin/:$PATH"

ターミナルを再起動して

mysql -V

でバージョンが帰ることを確認する

mysql  Ver 14.14 Distrib 5.7.25, for osx10.9 (x86_64) using  EditLine wrapper

● MAMPの MySQL で rootユーザをパスワードなしでログインできるようにする

Access denied for user 'root'@'localhost' (using password: NO) というエラーが出てパスワードなしでログインできない時は 次のように設定します

vi /Applications/MAMP/conf/my.cnf

ファイルが存在しない場合は新しいファイルに記述します。

my.cnf の mysqld の項目に次の1行加えます

[mysqld]
skip-grant-tables

MAMPを再起動してパスワードなしでログインできることを確認します。

● MySQL にアクセスする

mysql -u root -p

初期パスワードは「root」です。

mysql -uroot -proot

でもok

● MAMPのPHPを使用する

.bach_profile に 以下を追加

7.3.1 のところはバージョンによって変わります

# MAMP PHP
export PATH="/Applications/MAMP/bin/php/php7.3.1/bin/:$PATH"
php -v

正しいバージョンが帰って来ればOKです

PHP 7.3.1 (cli) (built: Feb  1 2019 12:26:46) ( NTS )

● MAMPのPHPを古いバージョン(5.6)に設定する

Finder から 「/Applications/MAMP/bin/php」へ移動し、MAMPで使用したい2つのバージョン以外のフォルダの先頭に「アンダーバー」をつけます。
その後MAMPアプリを再起動すると、「Preferences」→「PHP」からアンダーバーをつけなかった2つのバージョンが選択できます。
(有効なのは2つのバージョンまでです。)

コマンドラインの php も古いバージョンにする

.bach_profile に 以下を追加

# MAMP PHP
export PATH="/Applications/MAMP/bin/php/php5.6.40/bin:$PATH"


● MAMPの php.ini を編集する

Finder から 「移動」 →「フォルダへ移動」から

/Applications/MAMP/bin/php/php7.3.1/conf

へ移動して、php.ini を好きなエディタで編集します。

以下の項目をチェックしておくといいでしょう

display_errors = On
error_log = "/Users/ユーザー名/mamp/log/php_error.log"
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8

memory_limit = 512M      ; Maximum amount of memory a script may consume (8MB)
post_max_size = 512M


● MAMPの php で xdebug を使用して vscode でデバッグする

使用しているPHPのバージョンを調べて設定ファイルを開きます

vi /Applications/MAMP/bin/php/php7.4.2/conf/php.ini

php.ini の1番最後を次のようにします

zend_extension="/Applications/MAMP/bin/php/php7.4.2/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_connect_back=1
xdebug.remote_port = 9003

MAMPを再起動します。

phpinfo でxdebugのバージョンを確認しておきます。(バージョン2系とバージョン3系があります)

VS Codeで「PHP Debug」をインストールします。

ブレークポイントを追加したりソースコードを開いて「F5」を押します。 launch.json がない場合は作成するよう促されるので作成します。 以下のようにポート番号合わせておきましょう。

 {
     "version": "0.2.0",
     "configurations": [
         {
             "name": "Listen for XDebug",
             "type": "php",
             "request": "launch",
             "port": 9003
         },
         {
             "name": "Launch currently open script",
             "type": "php",
             "request": "launch",
             "program": "${file}",
             "cwd": "${fileDirname}",
             "port": 9003
         }
     ]
 }

設定したブレークポイントのところでプログラムが止まることを確認すればokです


● Apache の設定ファイル httpd.conf を編集する

httpd.conf はこちらになります

/Applications/MAMP/conf/apache/httpd.conf

WEBアプリが動くようにする

AllowOverride Allに設定しておきましょう

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride None
</Directory>

<Directory />
    Options Indexes FollowSymLinks
    AllowOverride All
</Directory>

ドキュメントルートは MAMP の 「Preferences」→「Document Root」から設定します。

/Applications/MAMP/conf/apache:196 は変更しません。

# MAMP DOCUMENT_ROOT !! Don't remove this line !!
DocumentRoot "/Users/xxxxxxx/mamp/eveforma_app"

● composer をインストールする

コマンドラインでphp のバージョンを確認した後composerをインストールします

php -v
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
No.1456
06/30 08:35

edit

Centos7に node.js をインストールする

● ndenvのインストール

git clone https://github.com/riywo/ndenv ~/.ndenv
echo 'export PATH="$HOME/.ndenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(ndenv init -)"' >> ~/.bash_profile
exec $SHELL -l
git clone https://github.com/riywo/node-build.git ~/.ndenv/plugins/node-build
ndenv -h
ndenv install -l

● node.js のインストール(10.15.1 をインストール)

ndenv install v10.15.1
ndenv rehash
ndenv global v10.15.1
node -v
No.1446
02/18 18:27

edit

Bitbucket(Git)で リモートへの git コマンドが SSL connect error となる場合の対処法

1. curl の詳細エラーを表示させる(GIT_CURL_VERBOSE=1)

export GIT_CURL_VERBOSE=1
git ls-remote

このようなエラーが出ます

* Couldn't find host bitbucket.org in the .netrc file; using defaults
* About to connect() to bitbucket.org port 443 (#0)
*   Trying 18.205.93.1... * Connected to bitbucket.org (18.205.93.1) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* NSS error -12286
* Expire cleared
* Closing connection #0

2. 現在の nss のバージョンとインストール可能なバージョンを表示させる

・現在の nss のバージョンを表示

yum list installed | grep nss
nss.x86_64                     3.16.1-7.el6_5                  @updates         

・インストール可能な nss のバージョンを表示

yum list | grep nss
nss.x86_64                                3.36.0-9.el6_10              updates  

3. nss のバージョンを上げる

yum update nss

これでエラーが出なくなります。

4. GIT_CURL_VERBOSE=1 を戻す

戻しておきましょう

unset GIT_CURL_VERBOSE

引用元 : https://goo.gl/2X6w3L

No.1443
02/13 09:37

edit

mac osx でipアドレスをターミナルから取得・表示する

● mac osx でipアドレスをターミナルから取得・表示する

ipconfig getifaddr en0
No.1413
01/15 09:08

edit

Centos7 の 自動起動(systemctl)設定を確認し設定または解除する

Centos7 の 自動起動設定は2つあります。 (新しいもの : systemctl 、古いもの : chkconfig)

● Centos7 の systemctlで自動起動設定を確認する

systemctl list-unit-files  -t service

● Centos7 の systemctlでサービス の 自動起動設定を off にする

例: httpd.service を自動起動するように設定します

systemctl enable httpd.service

● Centos7 の systemctlでサービス の 自動起動設定を off にする

例: vsftpd.service を自動起動しないように設定します

systemctl disable vsftpd.service

● Centos7 の chkconfigで自動起動設定を確認する

chkconfig --list

● Centos7 の chkconfig でサービス の 自動起動設定を off にする

例: webmin を自動起動するように設定します

chkconfig webmin on

● Centos7 の systemctlでサービス の 自動起動設定を off にする

例: webmin を自動起動しないように設定します

chkconfig webmin off
No.1411
01/09 17:10

edit

Centos7でファイアーウォール firewalld でICMP 関連ポートを閉じる

● 許可されているICMPタイプの表示

firewall-cmd --get-icmptypes

● 禁止されているICMPタイプを表示

firewall-cmd --list-icmp-blocks  --zone=public

● 「timestamp-request」をパーマネントに禁止されているICMPタイプに追加する

firewall-cmd --add-icmp-block=timestamp-request --zone=public --permanent
firewall-cmd --reload

● 「timestamp-request」をパーマネントに禁止されているICMPタイプから削除する

firewall-cmd --remove-icmp-block=timestamp-request  --zone=public --permanent
firewall-cmd --reload
No.1406
12/27 14:29

edit

Mac OSX に hping コマンドをインストールしICMPプロトコルのリクエストを投げる

● hping とは?

自由にパケットを変更して送信できるツール
TCP, UDP, ICMP, RAWIP をサポート

引用: https://goo.gl/twEYBE

● Mac OSX に hping コマンドをインストールする

brew install hping

.bash_profile にパスを追加

export PATH="/usr/local/sbin:$PATH"

● hping の使い方

hping3 host [mode] [options]

モード

モード 説明
default TCPパケットを送信
-rawip TCPやUDPがない状態で送信(RAW IP)
--icmp ICMPパケットを送信
--udp UDPパケットを送信
--scan ポートスキャン

● hping を使ってポートスキャンする

ポート1 - 30 をスキャンします

sudo hping 127.0.0.1 --scan 1-30

● ICMP タイムスタンプリクエストを投げる

sudo hping 127.0.0.1 --icmp --icmptype 13

こちらも同じ動作をします

sudo hping 127.0.0.1 --icmp-ts

● TCP タイムスタンプリクエストを投げる

sudo hping --tcp-timestamp -S 127.0.0.1 -p 80 -c 1

参考: https://goo.gl/Y0gGNq

No.1405
12/27 11:43

edit

Centos7 に コマンドラインの便利ツール peco をインストールする

● コマンドの結果を検索できるようにするpecoをCentos7にインストールする

● pecoのインストール

wget https://github.com/peco/peco/releases/download/v0.5.3/peco_linux_amd64.tar.gz
tar xvzf peco_linux_amd64.tar.gz 
cd peco_linux_amd64

最新バージョンのURLはこちらから確認します。
https://github.com/peco/peco/releases

● pecoの動作確認

ls | ./peco

問題なく動作するなら、 /usr/local/bin/ へコピーする

cp peco /usr/local/bin/

● pecoの使い方

パイプを使って流し込みます。

ls -la | peco
No.1404
12/27 10:20

edit

Centos7でファイアーウォール firewalld から特定のポートを閉じる

● Centos7でファイアーウォール firewalld から特定のポートを閉じる

例:FTPポートを閉じる

firewall-cmd --permanent --remove-service=ftp

ファイアーウォールをリロードする

firewall-cmd --reload

● ファイアーウォール firewalld の設定を確認する

firewall-cmd --list-all-zones

public (active) のように active がついているのが現在のゾーンです。
このような感じで表示されます。 ↓

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client http ssh
  ports: 22222/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 
No.1403
12/27 09:48

edit

Apacheの設定を変更し TRACE メソッドをオフにする

● Apacheが HTTPのTRACEメソッドを通すかどうかチェックする

curl  -X TRACE 127.0.0.1 | grep TRACE
TRACE / HTTP/1.1

が返ってくると、TRACEメソッドが有効です。(OFFにしましょう!)

● Apacheの設定を変更し TRACE メソッドをオフにする

vi /etc/httpd/conf/httpd.conf

次の設定をファイルのどこかに記述します

# HTTP TRACE method off
TraceEnable off

コンフィグの確認

apachectl configtest

apacheのリスタート

apachectl restart

● 再度Apacheが HTTPのTRACEメソッドを通すかどうかチェックする

curl  -X TRACE 127.0.0.1 | grep TRACE
<p>The requested method TRACE is not allowed for the URL /.</p>

が返って来ればOKです。

No.1402
12/27 09:32

edit

Apache

Outlook や msn など マイクロソフトのWEBメールにメールが送信できない時の対応

● 1. DNSのSPFレコードが正しく設定されていることを確認する

https://mxtoolbox.com/spf.aspx

SPFレコードの設定方法 https://www.naritai.jp/guidance_spf_example.html

● 2. スパムのBlackListに載っていないことを確認する

● 3. マイクロソフトのブロックリストから解除してもらうようメールを送信する

宛先は

delist@messaging.microsoft.com

です。ただし、送信できないメールアカウントからは送らないこと。

● 4. WEBからの解除申し込みはこちら

https://support.microsoft.com/en-us/supportrequestform/8ad563e3-288e-2a61-8122-3ba03d6b8d75

書き方: https://goo.gl/7Uwy5y

引用: https://goo.gl/DwDqKE

● GMOクラウドを利用している場合はリレーサーバが用意されました

https://helpcenter.gmocloud.com/common/s/article/ch-3712

No.1351
12/11 00:41

edit

apacheのバージョンを調べる

httpd -v
apachectl -v
No.1301
10/10 22:05

edit

WEBサーバ脆弱性チェックソフト

● Nikto2

https://cirt.net/Nikto2

実行方法(Perlスクリプトを wget でダウンロードしてきて実行します)

wget wget http://www.cirt.net/nikto/nikto-current.tar.gz 
tar -xzvf nikto-current.tar.gz 
cd nikto-2.1.5
perl nikto.pl -update
perl nikto.pl -host https://YOUR-SERVER.TLD

実行結果

---------------------------------------------------------------------------
+ Target IP:          xxx.xxx.xxx.xxx
+ Target Hostname:    dummy.server.name.com
+ Target Port:        80
+ Start Time:         2018-10-10 17:32:48 (GMT9)
---------------------------------------------------------------------------
+ Server: Apache/2.4.6 (CentOS) PHP/7.1.2
+ Server leaks inodes via ETags, header found with file /, fields: 0x813 0x5747dfb6fe842
+ The anti-clickjacking X-Frame-Options header is not present.
+ Allowed HTTP Methods: OPTIONS, GET, HEAD, POST, TRACE
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ / - Requires Authentication for realm 'Secret Area'
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ 6545 items checked: 0 error(s) and 6 item(s) reported on remote host
+ End Time:           2018-10-10 17:36:18 (GMT9) (210 seconds)
---------------------------------------------------------------------------

上記のサーバでは次のような脆弱性が報告されています。

+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST

TRACE メソッドが有効なので無効にしましょう(XST脆弱性があります)

+ OSVDB-3268: /icons/: Directory indexing found.

ディレクトリインデックスが見えてますよ

+ OSVDB-3233: /icons/README: Apache default file found.

Apacheのデフォルトファイルが見えてますよ

No.1300
10/10 17:44

edit

thunderbird の SMTP,POP,IMAPサーバとのやりとりのログを記録する

● thunderbird の サーバとのやりとりのログを記録する

ターミナルから以下のように入力してコマンドラインからThunderbirdを起動すると、デスクトップにログ(smtp.log)を保存できます。

「SMTP」のログを詳細度「4」で取得します。

export NSPR_LOG_MODULES=SMTP:4
export NSPR_LOG_FILE=~/Desktop/smtp.log
/Applications/Thunderbird.app/Contents/MacOS/thunderbird-bin

全てのログを細かく取得したい時は

export NSPR_LOG_MODULES=ALL:5
export NSPR_LOG_FILE=~/Desktop/smtp.log
/Applications/Thunderbird.app/Contents/MacOS/thunderbird-bin

で起動します。

No.1295
09/29 18:46

edit

Centos7 に データベース MySQLをインストールする

● MariaDBの削除

yum remove mariadb-libs
rm -rf /var/lib/mysql/

● MySQL 5.7 のインストール

yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum -y install mysql-community-server

● MySQLのバージョンを表示する

mysqld --version

● システム起動時に MySQL を自動起動するようにセットする

systemctl enable mysqld.service

● MySQLの起動と停止

systemctl start mysqld.service
systemctl stop mysqld.service

● MySQL 初期パスワードの表示

最初に MySQL を起動した時にテンポラリパスワードが作成されますのでそれを表示して控えておきます

cat /var/log/mysqld.log | grep  "temporary password"

例)

2018-01-01T01:01:01.308410Z 1 [Note] A temporary password is generated for root@localhost: %o8aD!&kz:*m

● MySQL へのログイン

mysql -uroot -p

(この後パスワード入力を促されるので入力します)

● root パスワードの設定

最初にrootパスワードを設定しておかないとMysqlを使うことはできませんので rootパスワードを設定します

・1.(とりあえず 仮に「Password@123」で設定します)

set password for root@localhost=password('Password@123');

・2.パスワードの制約(大文字 + 小文字 + 数字 + 記号 必須)をゆるくします

SET GLOBAL validate_password_policy=LOW;

・3. 設定したいパスワードに変更する

set password for root@localhost=password('YOUR_PASSWORD_HERE');
No.1268
07/05 11:55

edit

Centos7に composer をインストールする

● CentOSにPHP7.1 をインストール

yum -y install epel-release
yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

・PHP 7.1 関連パッケージを確認する

yum list | grep php71

・PHP7.1と関連パッケージをインストールする

yum install -y --enablerepo=remi,remi-php71 php php-devel php-mbstring php-mcrypt php-gd php-xml php-intl php-pecl-xdebug php-bcmath php-mysqlnd php-zip php-fpm
php -v
PHP 7.1.19 (cli) (built: Jun 21 2018 07:18:00) ( NTS )

● composerのインストール

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
rm -f composer-setup.php
mv composer.phar /usr/local/bin/composer
No.1267
07/04 16:42

edit

Centos 7 に webmin Virtualmin をインストールする

● webminで使用するポートのFirewallの設定をする

webminが使用するポート10000番を空けておきます。

firewall-cmd --add-port=10000/tcp --permanent

● webmin の最新バージョンを調べてインストールする

http://download.webmin.com/download/yum/
から最新バージョンを調べて下記コマンドでインストールする

yum -y install http://download.webmin.com/download/yum/webmin-1.881-1.noarch.rpm

● webmin 設定ファイルを変更

vi /etc/webmin/miniserv.conf

/etc/webmin/miniserv.conf の最後に以下を追加 IPアドレスは適宜変更してください。

# アクセスを許可するIPアドレス
allow=127.0.0.1/24

● webminの起動

/etc/rc.d/init.d/webmin restart 

● webminへのアクセス

ブラウザから https://192.168.33.10:10000/
などのアドレスでアクセスします。

● webmin のパスワードをセットする

/usr/libexec/webmin/changepass.pl /etc/webmin root <設定したいパスワード>

● webmin 日本語化する

・Webmin → Change Language and Theme をクリック
・「Webmin UI language」を「Personal choice」に変更し、”Japanese(JA_JP.UTF-8)にする
・「Make Changes」をクリックする

● virtualmin(バーシャルホスト管理)をインストールする

wget http://software.virtualmin.com/gpl/scripts/install.sh
chmod +x install.sh
./install.sh  

途中で

Please enter a fully qualified hostname (e.g.: host.example.com): host.example.com

と聞かれるので host.example.com と入力します。(または適当なホスト名を入力)

No.1265
07/05 13:26

edit

Centos7でファイアーウォール firewalld を設定する

linuxの RedHat , CentOS 7移行ではファイアウォールの設定が 「iptables」から「firewalld」へ変更されています。

● firewalld の 起動の状態を確認

systemctl status firewalld
systemctl start firewalld
systemctl stop firewalld

● firewalld をシステム起動時に自動で起動するようにする

systemctl enable firewalld

● firewalld の設定を表示する

firewall-cmd --list-all-zones

デフォルトでは

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

(active)が付いている public が有効なゾーンです。

● 5000番ポーと5001版ポートを開放する 設定ファイルを作成する

設定ファイルの格納場所は

/usr/lib/firewalld/services
/etc/firewalld/services

/etc/firewalld/services の方が優先されるようです。

「http.xml」を 元に 5000番ポーと5001版ポートを開放する 設定ファイル 「kestrel.xml」を作成する

cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/kestrel.xml

ポートを変更します

vi /etc/firewalld/services/kestrel.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Kestrel</short>
  <description>Kestrel port 5001</description>
  <port protocol="tcp" port="5001"/>
</service>

ゾーンに作成した Kestrel を追加する

firewall-cmd --add-service=kestrel --permanent

firewall再起動

systemctl reload firewalld

再確認

firewall-cmd --list-all-zones

参考: http://www.eastforest.jp/vps/4539#ICMP-2

● ICMPに関するコマンド

※ICMPタイプの一覧表示

firewall-cmd --get-icmptypes

address-unreachable
bad-header
communication-prohibited
destination-unreachable
echo-reply
echo-request
fragmentation-needed
host-precedence-violation
host-prohibited
host-redirect
host-unknown
host-unreachable
ip-header-bad
neighbour-advertisement
neighbour-solicitation
network-prohibited
network-redirect
network-unknown
network-unreachable
no-route
packet-too-big
parameter-problem
port-unreachable
precedence-cutoff
protocol-unreachable
redirect
required-option-missing
router-advertisement
router-solicitation
source-quench
source-route-failed
time-exceeded
timestamp-reply
timestamp-request
tos-host-redirect
tos-host-unreachable
tos-network-redirect
tos-network-unreachable
ttl-zero-during-reassembly
ttl-zero-during-transit
unknown-header-type
unknown-option

禁止されているICMPタイプに追加

firewall-cmd --add-icmp-block=echo-request --zone=public

恒久的に禁止されているICMPタイプに追加

firewall-cmd --add-icmp-block=echo-request --zone=public --permanent

禁止されるICMPタイプから削除

firewall-cmd --remove-icmp-block=echo-request

恒久的に禁止されるICMPタイプから削除

firewall-cmd --remove-icmp-block=echo-request --permanent

● IPアドレス、サービス、ポート番号を細かく指定して定義するrich rule の設定を表示する

firewall-cmd --list-rich-rule

引用: https://www.unix-power.net/networking/post-680

No.1261
10/11 10:37

edit

DropBox(的なサービス)を無料で使いたいので無料の Nextcloudをインストールする

● Nextcloudとは

・ownCloud創設者が 2016年にNextcloud社設立
・オープンソース
・WEB上にFTP接続できるサーバが必要

つまりレンタルサーバ契約があれば無料で使用できます。
容量は無制限(レンタルサーバの契約いっぱいまで)で使用できます。 注意点としてはまだまだバグがあって、ファイルがアップロードされない事がしばしばあります。
DropBox的というよりはFTP的に使用するのがいいでしょう。

● Nextcloudをインストールする

・1-1. サーバソフトのインストール

https://nextcloud.com/install/ から画面一番下の「</>Web Installer」タブをクリック
「Right-click here」の「here」を右クリックして別名で保存します。
(setup-nextcloud.php というファイルが保存されます。)
保存したファイル「setup-nextcloud.php」をFTPでサーバの公開ディレクトリの一番トップにアップロードします。
https://<あなたのサーバ>/setup-nextcloud.php を実行します。
・Nextcloudをインストールするディレクトリを聞いてくるので(デフォルトでは「nextcloud」)入力して「next」を押します。
・インストールが完了すると「Nextcloud is now installed」と表示されます。「next」を押します。
・管理者アカウントのメールアドレスとパスワードを入力して「完了します」ボタンを押します。
・Nextcloud/data/ の ディレクトリパーミッションを(0700)にしておきます

・1-2. php.ini の設定を変更

メモリとアップロードの最大サイズを適宜変更してください。

php.ini 変更例

memory_limit = 512M
upload_max_filesize = 2000M
post_max_size = 2000M

2.・クライアントアプリをインストール

Windows, Macなど端末ごとにアプリをダウンロードします。
(こちらからダウンロードできます。 https://nextcloud.com/install/#install-clients

(インストール時に聞かれる「サーバーアドレス」は (https://<あなたのサーバ>/nextcloud) です)

No.1226
01/17 11:22

edit

CentOS 5 , 6 で タイムゾーンの設定を変更する

● CentOS 5 , 6 で タイムゾーンの設定をデフォルトから JST-9 に変更する

● 1. /etc/localtime を上書き

cp /usr/share/zoneinfo/Japan /etc/localtime

●2. /etc/sysconfig/clockを編集

vim /etc/sysconfig/clock

次のように変更します

ZONE="UTF"
UTC=true
ARC=false

ZONE="Asia/Tokyo"
UTC=true
ARC=false
No.1199
03/31 10:47

edit

CentOSにメール送信サーバpostfixをインストールする

● 現在postfixがインストールされているかどうかを調べる

systemctl status postfix

・インストールされていない場合の表示

Unit postfix.service could not be found.

・インストールされている場合の表示

現在のステータスが帰ります

● postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
   Active: inactive (dead)

● centosにpostfixをインストールする

yum -y install postfix

● postfixの設定を行う

vi /etc/postfix/main.cf

● postfixの起動

systemctl restart postfix
No.1160
07/21 21:33

edit

古いバージョンのcentosでyumコマンドを実行する

● 古いバージョンのcentosでyumコマンドが実行できない

バージョンが古くサポートが切れたcentosではyumコマンドが利用できなくなります。 (次のエラーが表示されます)

YumRepo Error: All mirror URLs are not using ftp, http[s] or file.

これはyumの設定ファイルに書かれてあるミラーサーバー参照できなくなるからでそこを書き換えてあげれば 古いcentosでもyumコマンドを利用することができるようになります

vi /etc/yum.repos.d/CentOS-Base.repo

● yumのミラーサーバを書き換える方法

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

の「mirrorlist」コメントアウトして「baseurl=http://vault.centos.org/5.5/os/$basearch/」追加します。
「5.5」のところはcentosのバージョンを入れてください

書き換えた結果例

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://vault.centos.org/5.5/os/$basearch/

これを同様に [updates] [addons] [extras] [centosplus] [contrib] についても書き換えます。

書き換え後に

yum list

で確認します

No.1145
05/24 14:39

edit

mac os の便利な画像変換コマンドsips

● mac os の便利な画像変換コマンドsips

mac os にはコマンドラインから使える便利なシップスという画像変換コマンドがあります。 例えば以下のように使用します

sips -s format [変更するフォーマット] --out [変更後のファイル名] [変更元のファイル名]

その他のオプションはこちら

sips --help

Usages:

sips [-h, --help] 
sips [-H, --helpProperties] 

sips [image-query-functions] imagefile ... 

sips [profile-query-functions] profile ... 

sips [image modification functions] imagefile ... 
     [--out result-file-or-dir] 

sips [profile modification functions] profile ... 
     [--out result-file-or-dir] 

Profile query functions:

-g, --getProperty key 
-X, --extractTag tag tagFile 
-v, --verify 

Image query functions:

-g, --getProperty key 
-x, --extractProfile profile 

Profile modification functions:

-s, --setProperty key value 
-d, --deleteProperty key 
    --deleteTag tag 
    --copyTag srcTag dstTag 
    --loadTag tag tagFile 
    --repair 

Image modification functions:

-s, --setProperty key value 
-d, --deleteProperty key 
-e, --embedProfile profile 
-E, --embedProfileIfNone profile 
-m, --matchTo profile 
-M, --matchToWithIntent profile intent 
    --deleteColorManagementProperties 
-r, --rotate degreesCW 
-f, --flip horizontal|vertical 
-c, --cropToHeightWidth pixelsH pixelsW 
-p, --padToHeightWidth pixelsH pixelsW 
    --padColor hexcolor 
-z, --resampleHeightWidth pixelsH pixelsW 
    --resampleWidth pixelsW 
    --resampleHeight pixelsH 
-Z, --resampleHeightWidthMax pixelsWH 
-i, --addIcon 

No.1132
04/19 19:30

edit

運用中の linux マシンのログファイルを確認する

● 運用中の linux マシンのログファイルを確認する

※ ログインに関するログファイル

ログファイル名 概要
/var/log/wtmp ログインに関するログ who /var/log/wtmp コマンドや last コマンドで表示する
/var/log/btmp 不正ログインに関するログ lastbコマンドで表示する
/var/log/lastlog 最終ログインに関するログ laslogコマンドで表示する
/var/log/faillog ログイン失敗回数に関するログ
/var/log/tallylog ログイン失敗回数に関するログ

※ 不正なログインアタックのユーザー名と回数を集計して出す(ファイル /var/log/btmp を集計)

lastb -f /var/log/btmp | awk '{print $1}' | sort | uniq -c | sort -nr | head -30

    670 admin
    112 usuario
     99 user
     98 test
     97 administ
     83 oracle

※ /var/log/ ディレクトリのログファイル

ログファイル名 概要
/var/log/messages システムに関する一般的なログ
/var/log/croncron の処理結果に関するログ
/var/log/maillogメールサービスに関するログ
/var/log/secureセキュリティに関するログ
/var/log/boot.logシステムの起動に関するログ
/var/log/XFree86.0.logX Window System のログ
/var/log/cups/access_log
/var/log/cups/error_log
/var/log/cups/page_log
プリントサーバー cups のログ
/var/log/http/access_log
/var/log/http/error_log
Web サーバー apache のログ
/var/log/samba/log.nmbd
/var/log/samba/log.smbd
ファイル共有サーバー samba のログ
/var/log/squid/access.log
/var/log/squid/cache.log
/var/log/squid/store.log
プロキシサーバー squid のログ

● mysql のスローログを取得する

mysqldumpslow -s t /var/log/mysql_slow.log

毎日メールで送るという方法もあります。
https://github.com/manabusakai/slow-query

一定時間より長いQueryのみをフィルター抽出出来るperlスクリプト
https://github.com/denishpatel/mytreats/blob/master/mysql_slow_log_filter.pl

● syslog設定

syslogの設定ファイルは「/etc/syslog.conf」または「/etc/rsyslog.conf」

No.1111
04/24 15:04

edit

セキュリティ

Macに複数のPHPバージョンをインストールして切り替えられる phpenv をインストールする

● Xcode インストールする

Mac App StoreからXcodeをインストールします。
インストール後一度起動しておきます

● Command Line Tools for Xcodeのインストール

Xcodeを起動して

Xcode → Open Developer Tool → More Developer Tools ...

を選択。 一覧から「Command Line Tools(OS X 11.10) (お使いのMacOSバージョン)for Xcode」をダウンロードしてインストールする

● phpenvをインストールする

curl -L http://git.io/phpenv-installer | bash
echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
echo 'eval "$(phpenv init -)"' >> ~/.bash_profile
exec $SHELL -l

● homebrewをインストールする

ターミナルから

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

パスワードの入力が促されるので入力する必要があります

● コンパイルに必要なモジュールをhomebrewでインストールする

homebrewはあらかじめインストールしておく必要があります

brew install jpeg
brew install bison
echo 'export PATH="/usr/local/opt/bison/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
brew install re2c
brew install libpng
brew install libmcrypt
brew install libxml2

● opensslをHomebrewでインストール

brew install openssl
brew link openssl --force
echo 'export PATH=/usr/local/opt/openssl/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile
cd /usr/local/include 
ln -s ../opt/openssl/include/openssl .

● phpenv でインストール可能なPHPバージョンの一覧を表示

 phpenv install -l

表示例

  5.6.7
  5.6.8
  5.6.9
  5.6snapshot
  7.0.0
  7.0.10
  7.0.11
  7.0.12
  7.0.13

● phpenv で特定のバージョンのPHPをインストールする

phpenv install 7.0.13

● El Capitan で「configure: error: Cannot find OpenSSL's <evp.h>」が出る場合

次のコマンドでインストールすることができます   PHP 7.1.4をインストールする場合  

PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j4 phpenv install 7.1.4

● インストール済みのPHPのリストを表示させる

phpenv versions

● マシン全体で使用するPHPのバージョンを切り替える

PHP 7.1.4に切り替える場合

phpenv global 7.1.4
phpenv rehash
php -v
No.1109
07/14 19:30

edit

Vagrant / VirtualBox を使って5分でPHP7が使えるWEBサーバを立ち上げる

とにかく急ぎで検証用環境が欲しい方に。
今回作業するマシンはMac。インストールする仮想マシンのOSは ubuntu とします。

● Vagrantのインストール

https://www.vagrantup.com/downloads.html 

● 仮想マシンを実行する VirtualBoxのインストール

http://www.oracle.com/technetwork/jp/server-storage/virtualbox/downloads/index.html

● Vagrantのboxを検索する

ここにインストールしたいOSの種類を入力して検索します。
https://app.vagrantup.com/boxes/search

● 1. Vagrant を使って仮想マシンをダウンロードし起動する

今回はこのボックスを使用します

https://atlas.hashicorp.com/michaelward82/boxes/trusty64-php7

まず仮想マシンを格納したいフォルダ( Ubuntu_PHP7 とします )を作成しそこに移動します。
ターミナルから

mkdir Ubuntu_PHP7
cd Ubuntu_PHP7

次に vagrant コマンドを使ってインストールと起動を行います

vagrant init michaelward82/trusty64-php7;
vagrant up

# ● Vagrantfile の編集

インストールが完了すると Vagrantfile というファイルが作成されているのでそれを好きなエディタアプリで起動し編集します。
下記の行の先頭のコメントを取って実行できるようにします

  config.vm.network "private_network", ip: "192.168.33.10"

再びターミナルから次のコマンドを実行して ssh の接続情報を表示します

vagrant ssh-config

表示例

Host default
  HostName 127.0.0.1
  User vagrant
  Port 2200
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/hogehoge/.vagrant.d/boxes/michaelward82-VAGRANTSLASH-trusty64-php7/1.1.13/virtualbox/vagrant_private_key
  IdentitiesOnly yes
  LogLevel FATAL

この情報から ssh での接続コマンドが分かるので 実行して ssh 接続します。

ssh vagrant@127.0.0.1 -p 2200 -i /Users/hogehoge/.vagrant.d/boxes/michaelward82-VAGRANTSLASH-trusty64-php7/1.1.13/virtualbox/vagrant_private_key 

【ここから先は vagrant 内の仮想マシンでの作業となります】

・ PHP の足りないモジュールをインストールする。

su - (パスワードは vagrant)
apt-get update
apt-get install php7.0-mbstring

・Apache の設定内の実行ユーザを書き換える

 vi /etc/apache2/apache2.conf

ユーザーとグループを下記のように書き換えておきます

User  vagrant
Group vagrant

・apache をリスタートする

/etc/init.d/apache2 restart

・curl でアクセスして確認する

curl localhost

● ホストマシン mac からも接続を確認する

ウェブブラウザに以下のように入力してアクセスする

http://192.168.33.10/

以上です。

● MacからSFTPで仮想マシンに接続する

さきほど表示したSSH設定にでてきた鍵を使用します。
/Users/hogehoge/.vagrant.d/boxes/michaelward82-VAGRANTSLASH-trusty64-php7/1.1.13/virtualbox/vagrant_private_key
これをFTPソフトの鍵選択画面から選択してください。 (接続プロトコルは SFTP にします)
Mac だとTransmit がお勧めです。



No.1108
07/02 13:49

edit

Apache
PHP

nginxでPHPを使用できるように設定する

● nginxでPHPを使用できるように設定する

・php-fpmのインストール

yum -y install php-fpm

・php-fpmの設定を変更する

vi /etc/php-fpm.d/www.conf

user と group を「nginx」に書き換えます

user = nginx
group = nginx

・php-fpmを起動する

systemctl start php-fpm
systemctl enable php-fpm

● phpの実行ユーザーを変更する

php-fpmの設定を変更します

vi /etc/php-fpm.d/www.conf

PHPの実行ユーザーとグループを myuser に変更します

user = nginx
group = nginx

  ↓

user = myuser
group = myuser

nginxリロード

nginx -s reload

● nginxを再起動する

nginx -s reload

( または )

systemctl restart nginx

お好きな方をどうぞ。

これで nginx でPHPが使用できる様になります。

● nginxから実行したPHPにファイル操作権限があるかどうか調べる

WEBサイトのトップにファイル test.php を以下の内容で作成しアップロードします

<?php
ini_set( 'display_errors', 1 );
touch ('aaa.txt');

これを実行してディレクトリ・ファイル操作権限があるかどうかを調べます。 もしエラーになった場合は次の対処法にて対処してください。

● nginxから実行したPHPが「Permission denied」になる場合の対処法

1. ディレクトリの権限をチェックする

2. SELinuxの動作モードを確認し、実行されているときはオフにする

ターミナルから

getenforce

を実行します

Enforcing

と帰ってきた場合は SELinux が有効なので、設定ファイル /etc/sysconfig/selinux を書き換えてオフにします。

vi /etc/sysconfig/selinux

次の様に disabled に設定します

SELINUX=disabled

これでマシンを再起動します。

● Laravelなどのフレームワークで QUERY_STRING が取得できない場合の対処法

/etc/nginx/conf.d/laravel.conf の設定を書き換えます

vi /etc/nginx/conf.d/laravel.conf
try_files $uri $uri/ /index.php$query_string;

  ↓

try_files $uri $uri/ /index.php$is_args$args;
No.1107
07/18 20:18

edit

ローカルのnginxでバーチャルホストの設定を行う

● nginxでバーチャルホストの設定

・設定ファイル

/etc/nginx/nginx.conf

・バーチャルホストの作成

設定ファイル default.conf/etc/nginx/conf.d/ に作成します。

vi /etc/nginx/conf.d/default.conf 

default.conf の内容

server {
    listen       80;
    server_name  site1.local;
    access_log  /var/log/nginx/site1.access.log  main;
    location / {
        root   /usr/share/nginx/site1;
        index  index.html index.htm;
    }
}

server {
    listen       80;
    server_name  site2.local;
    access_log  /var/log/nginx/site2.access.log  main;
    location / {
        root   /usr/share/nginx/site2;
        index  index.html index.htm;
    } 
}

・設定ファイルの確認

nginx -t

・バーチャルホストを格納するディレクトリの作成

mkdir /usr/share/nginx/site1
mkdir /usr/share/nginx/site2

・nginxを再起動する

nginx -s reload

・マシンの ip アドレスを調べて hosts ファイルに記述する

・まずコマンド ip a でローカルマシンの ip アドレスを調べます。( Vagrant等で構築している場合 )
・次に調べた ip アドレスをローカルマシンのホストの hosts ファイルに書き込みます。

vi /etc/hosts
# local nginx virtual host
192.168.33.10   site1.local
192.168.33.10   site2.local

・ログファイルの所有者をnginxにする

ログファイルを開く権限がなくてエラーが出る場合は下記のようにログファイルの所有者を変更します (例:ログファイルの所有者をnginxに変更する)

chown nginx /var/log/nginx/error.log 
chown nginx /var/log/nginx/access.log 
chown nginx /var/log/nginx/site1.access.log
chown nginx /var/log/nginx/site2.access.log

・バーチャルホストにアクセスする

WEBブラウザのアドレス欄からアクセスします
http://site1.local/

No.1106
07/05 15:53

edit

Apacheのhttpd.confの場所を調べる

● Apacheのhttpd.confの場所を調べる

以下のコマンドから調べます。

httpd -V

表示例 :

 -D SERVER_CONFIG_FILE="/etc/httpd/httpd.conf"

場所は `/etc/httpd/httpd.conf` ということがわかります

● Apacheのバーチャルホストの設定について調べる

/usr/sbin/httpd -S

● httpdコマンドの場所を調べる

httpdにパスが通ってない場合は次のコマンドからパスを調べます

ps alxw | grep httpd

表示例 :

5     0  14337      1  20   0 233108 11224 poll_s Ss   ?          0:14 /usr/sbin/httpd -k start
5  1000  48431  14337  20   0 233108  3848 skb_re S    ?          0:00 /usr/sbin/httpd -k start
5  1000  48432  14337  20   0 1594492 13764 pipe_w Sl  ?          0:13 /usr/sbin/httpd -k start

httpdコマンドの場所は `/usr/sbin/httpd` ということがわかります

No.1104
03/16 17:40

edit

SFTP時のumaskを変更する

● SFTP時のumaskを変更する

SFTP(ssh接続によるFTP)時の umask設定は .bashrc や .bash_profile に記述しても反映されません。
/etc/ssh/sshd_config を書き換えます

vi /etc/ssh/sshd_config
Subsystem   sftp    /usr/libexec/openssh/sftp-server
      ↓
Subsystem   sftp    /usr/libexec/openssh/sftp-server  -u 0002

書き換えた後 ssh をリスタートします centos 7 の場合

systemctl restart sshd

centos 6 の場合

/etc/init.d/sshd restart

これでSFTPで接続し、ディレクトリを作成して確認します。
ファイル作成時の umask は SFTPソフトがどういう挙動をするかによって変わってきます。

● Transmitのマスクを変更する

【環境設定】→【ルール】

から設定できます

No.1101
06/17 13:38

edit

SSHのパスワードでのログインを禁止する

● SSHのパスワードでのログインを禁止する

接続先のマシンに接続後設定ファイル「sshd_config」を変更します

vi /etc/ssh/sshd_config
PasswordAuthentication yes
       ↓
PasswordAuthentication no

※ ファイルを編集後、sshdを再起動します

service sshd restart
No.1098
03/06 17:58

edit

Apache 2.4 での Allow from all の書き方

Apache 2.4 で Apache 2.2 以下の設定ファイルをコピーして起動すると「404 Not Found」になります。 エラーログを見てみると

client denied by server configuration:

というエラーになっているはずです。

これはApache 2.4 での Allow from all の書き方が変更になったからで、以下のように修正するとなおります。

● Apache 2.4 での Allow from all の書き方

<Directory "/home/www">
    Order allow,deny
    Allow from all
</Directory>

<Directory "/home/www">
    Require all granted
</Directory>
No.1097
03/06 11:42

edit

CentOS7以降のNTP(クライアント/サーバ)chronyのインストールと使い方

● ntp クライアント/サーバ chronyのインストール

yum -y install chrony

設定ファイル /etc/chrony.conf を以下のように編集する

#server ntp1.noah.idc.jp iburst # (コメントアウト)
#server ntp2.noah.idc.jp iburst # (コメントアウト)
server ntp.nict.jp iburst

マシン起動時の自動起動設定とchronyの起動

systemctl enable chronyd
systemctl start chronyd
・chronycコマンドによる手動の時刻同期
chronyc -a makestep
・マシン時刻のチェックコマンド
hwclock -r ; date
No.1090
01/21 08:59

edit

MacOSXに新しいバージョンのJavaをインストールする

まずはターミナルから現在のMacにインストールされているバージョンを確認します。

java -version

>java version "1.6.0_65"
>Java(TM) SE Runtime Environment (build 1.6.0_65-b14-468-11M4833)
>Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-468, mixed mode)

● javaインストーラーのダウンロード

http://www.oracle.com/technetwork/java/javase/downloads/index.html
から 「 JDK Downloadをクリック」→「 Java SE Development Kit の Mac OSX のインストーラーをクリック」でインストーラーをダウンロード
ダウンロードしたインストーラーを起動してインストールします。

java -version

>java version "1.8.0_101"
>Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
>Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

No.1052
08/19 16:08

edit

java

Googleのクラウドサーバ Google Compute Engine を利用する

Google Compute Engine は バーチャルなサーバーをクラウド上に作成できるGoogleのサービスです。 有料ですが無料で300ドルぶんお試しで利用できます(要クレジットカード)

#1. Google Compute Engine へ登録してサーバを起動する

  • https://cloud.google.com/compute/?hl=ja からユーザ登録します。
  • 左メニュー > Compute Engine > VMインスタンス から「インスタンスを作成」でバーチャルマシンを作成。
    ( マシンのスペックは選べます。とりあえずは一番小さいやつを選択すること ) ( OSはUbuntuを選択 ) ( zone は asia-east1-a を選択)

2. gcloudコマンドのインストール

1. MacOSXにインストール

(インストール中に簡単な英語で何か聞かれるが、もしよくわからない場合は, そのまま「return」でOK。)

curl https://sdk.cloud.google.com | bash

2. ターミナルの再起動

いったんターミナルを終了して再度起動させます

3. gcloud コマンドと自分のGoogleアカウントのひも付け

下記コマンドを入力してGoogleアカウントを設定します。

 gcloud auth login

4. 接続したいインスタンスにSSH接続する

インスタンス名はWEBサイト「Google Cloud Platform」から 左メニュー > Compute Engine > VMインスタンス の 画面に一覧表示されます。

そこの接続したいインスタンスの項目の「接続:SSH」の横のボタンから「gcloudコマンドを表示」でSSHの接続コマンドが表示されます。

それをターミナルから入力するとSSHログインできます。

5. gcloudコマンドでインスタンスリスト表示

gcloud compute instances list 

とします

7. よく使うコマンドをエイリアスにしておく

参考 : http://bit.ly/1Y406U2 に記述がありました。とても便利です。

.bash_profile に 以下を追加

alias gcp='gcloud compute copy-files'
alias glist='gcloud compute instances list'
alias gsh='gcloud compute ssh'
alias gup='gcloud compute instances start'
alias gdown='gcloud compute instances stop'

としておいて 以下のように操作します

gsh 【インスタンス名】

でssh接続します。

#3. WEBサーバApacheをインストールして起動する

sudo apt-get install apache2
sudo /etc/init.d/apache2 start

これでWEBサーバが起動します。

次にトップページを作成してみます。

cd /var/www/
sudo chmod 0777 html
cd /var/www/html
mv index.html ___old___index.html
vi index.html
(エディタで何か入力して保存する)

WEBサイト「Google Cloud Platform」からインスタンスのIPアドレスのところをクリックすると表示されているはずです。

添付ファイル1
gce.jpg ( 8.5 KBytes ) ダウンロード
No.1011
03/03 19:15

edit

添付ファイル

Mac

WEBページをサーバ側でPDFに変換する

◆ wkhtmltopdf

http://wkhtmltopdf.org
webkitによりレンダリングを行いPDFを作成します。

1. MacOSXへのインストール

http://wkhtmltopdf.org/downloads.html
よりパッケージをダウンロードしてインストール

1. ubuntuへのインストール

sudo apt-get install wkhtmltopdf

2. wkhtmltopdf の実行( http://yahoo.co.jpへアクセスして y.pdf ファイルを作成 )

wkhtmltopdf http://yahoo.co.jp y.pdf

3. エラーが出る場合は

QXcbConnection: Could not connect to display 

というエラーが出る場合は

sudo apt-get install xvfb

でインストール後

sudo xvfb-run wkhtmltopdf http://yahoo.co.jp y.pdf

4. 日本語フォントIPAゴシックのインストール

sudo apt-get install unzip
cd /usr/share/fonts
sudo wget http://dl.ipafont.ipa.go.jp/IPAexfont/IPAexfont00301.zip
sudo unzip IPAexfont00301.zip 
fc-cache -fv

No.1010
04/04 17:22

edit

pdf

Mac で UNIXのtree コマンドを使用する

1. Xcodeのインストール

Mac App Storeからインストール
https://itunes.apple.com/jp/app/xcode/id497799835

2. Homebrewのインストール

Homebrewのサイトに移動してインストールコマンドを取得する
http://brew.sh

例 : ターミナルから以下のコマンドを実行

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

3. Treeコマンドのインストール

brew install tree

4. Treeコマンドの実行

treeコマンドには様々なオプションがありますがとりあえずは -F オプションをつけて実行するとディレクトリ名の後ろにスラッシュがついて見やすくなります。

tree -F 【ディレクトリ名】

全てのオプションを見るには

tree --help
No.1002
02/01 11:49

edit

Mac
unixコマンド

PHPをコーディング規約にそって整形するphp-cs-fixerをインストールする

PHP CS Fixer は PSR-0 、 PSR-1 、 PSR-2 、Symfony コーディング規約 にそってソースコードを整形するシステムです。 インストールは簡単

1. ダウンロード

wget http://get.sensiolabs.org/php-cs-fixer.phar -O php-cs-fixer

wgetが無い場合はcurlで

curl http://get.sensiolabs.org/php-cs-fixer.phar -o php-cs-fixer

2. インストール

sudo chmod a+x php-cs-fixer
sudo mv php-cs-fixer /usr/local/bin/php-cs-fixer

3. 実行(対象となったファイルがそのまま書き換えられます)

● カレントディレクトリ内の全てのPHPに対して実行(ドライラン)

 php-cs-fixer fix . --dry-run

● PSR2に準拠して f.php を整形します

php-cs-fixer fix f.php --rules=@PSR2
No.999
03/07 23:16

edit

sshでログイン後にコマンドを実行する

sshでログイン後にシェルを変更したいときなど、SSHログイン後に何かコマンドを実行したい場合は

-t コマンド名

とします。 具体的には

SSHログイン後にbashを起動する

ssh user@hogehoge.com -t /usr/local/bin/bash
No.969
08/17 12:24

edit

ssh

PHPフレームワークLaravelをインストールする

PHPフレームワークLaravelをインストールする

● Composerをインストールする

https://pgmemo.tokyo/data/archives/1267.html

● Laravelコマンドのインストール

composer global require "laravel/installer"

laravelコマンドへのパスを通します。 .bash_profile に以下の行を追加して保存

#Laravel
export PATH=~/.config/composer/vendor/bin:$PATH

laravelコマンドが使えることを確認します。

laravel
source ~/.bash_profile

● Laravelプロジェクトの作成( 1. laravelコマンド使用)

(ターミナルから以下を入力)

laravel new my_app

● Laravelプロジェクトの作成( 2. composerコマンド使用)

mkdir my_app2
composer  create-project laravel/laravel my_app2

● Laravelプロジェクトの作成( 3. Laravelのバーションを指定してインストール )

Laravel 5.6 を指定してアプリをインストールします

composer create-project "laravel/laravel=5.6.*" rss_app
No.940
11/17 15:14

edit

PHP

WEBサーバApacheのTRACEを無効にする

telnetでサーバ(hoge.com)に接続してTRACEコマンドが使えるかどうか調べる

■ ApacheでTRACEを使える状態になっているかどうか調べる方法1

# telnet で接続
telnet hoge.com 80

# telnet接続後に次のコマンドを入力
TRACE / HTTP/1.0
TEST: HOGE
(エンターを2回押す)

これで TEST:HOGE がサーバーから帰ってきた場合TRACEが有効です。

■ ApacheでTRACEを使える状態になっているかどうか調べる方法2

# telnet で接続
telnet hoge.com 80

# telnet接続後に次のコマンドを入力
OPTIONS * HTTP/1.1
HOST: localhost

TRACEが表示されれば使用出来る状態になっています。

■ ApacheのTRACE無効にする方法。

httpd.confにて以下を記述し、再起動する。

TraceEnable off
No.887
04/21 17:00

edit

Apache

MacOSにphpのPEARをインストールする

MacOSXの【ターミナル】を起動して下記のように実行します。 なにか入力を促された場合は「Enter」をそのまま押せばOK!

● OSXへPEARをインストール

# pearインストールプログラムを保存して実行する
curl http://pear.php.net/go-pear.phar > go-pear.php 
php go-pear.php 
# インストールがうまく完了できたら。インストールプログラムを削除
rm go-pear.php

● パスを通す .bash_profile に下記の内容を追加する

# PEAR
PATH=$PATH:$HOME/pear/bin
export PATH
echo 'export PATH=$PATH:$HOME/pear/bin' >> ~/.bash_profile

● rootになって viコマンドで php.ini を編集する

su -
cp /etc/php.ini.default /etc/php.ini
chmod 0644 /etc/php.ini
vi /etc/php.ini

# php.iniのinclude_path に下記を付け加える
# /Users/【ユーザー名】/pear/share/pear
# 例
include_path = ".:/Users/【ユーザー名】/pear/share/pear"
No.785
04/11 16:22

edit

PEAR

SPAMによってたまったメールを取り除く qmHandle

■ qmHandle

http://sourceforge.net/projects/qmhandle

Perlスクリプトなのでサーバにアップロードして chmod 755 で実行可能。

実行オプションは以下の通り

Available parameters:
  -a       : try to send queued messages now (qmail must be running)
  -l       : list message queues
  -L       : list local message queue
  -R       : list remote message queue
  -s       : show some statistics
  -mN      : display message number N
  -dN      : delete message number N
  -fsender : delete message from sender
  -f're'   : delete message from senders matching regular expression re
  -Stext   : delete all messages that have/contain text as Subject
  -h're'   : delete all messages with headers matching regular expression re (case insensitive)
  -b're'   : delete all messages with body matching regular expression re (case insensitive)
  -H're'   : delete all messages with headers matching regular expression re (case sensitive)
  -B're'   : delete all messages with body matching regular expression re (case sensitive)
  -t're'   : flag messages with recipients in regular expression 're' for earlier retry (note: this lengthens the time message can stay in queue)
  -D       : delete all messages in the queue (local and remote)
  -V       : print program version

Additional (optional) parameters:
  -c       : display colored output
  -N       : list message numbers only
           (to be used either with -l, -L or -R)

http://www.atmarkit.co.jp/flinux/rensai/qmail03/qmail03c.html

No.699
06/22 11:07

edit

スパム対策

SSHへのブルートフォースアタック(ID, PASS 総当たり攻撃)への対応

SSHへのブルートフォースアタック(ID, PASS 総当たり攻撃)は必ず経験する攻撃の一つです。 ブルートフォースアタックへの対応策(ID,PASSでのSSHログインを不可にする)は必ずしておきましょう。

● SSHへのブルートフォースアタックの確認

ブルートフォースアタックを受けていることを確認するにはログファイルを確認します。 まずログファイルの場所を確認し、そのログファイルを参照します。

cat /etc/syslog.conf

Fedora や CentoOSの場合下記コマンドで確認できます。

cat /var/log/secure | grep "Invalid user"
cat /var/log/secure | grep "Failed password"
cat /var/log/messages | grep "failure"

webmin で見る場合

【システム】→【システム ログ】から該当のログを表示できる

● 対応策 1. /etc/ssh/sshd_config を変更する

vi /etc/ssh/sshd_config

以下の設定を追加する

PasswordAuthentication no
ChallengeResponseAuthentication no

PermitRootLogin no        (通常 no をおすすめします)
PermitRootLogin without-password ( root で直接ログインする必要がある場合はパスワードログイン以外を許可します)

Port 22222 (デフォルトポート 22 を変更する)

sshd の再起動

service sshd stop
service sshd start

● 対応策2. /etc/hosts.deny に手動でアクセスしてほしくないホストを追加する

/etc/hosts.deny

以下を追加 (IP:123.456.789.123 からの ssh 接続を拒否する場合) (IP:999.999.999.999 からの 全ての接続を拒否する場合)

sshd: 123.456.789.123
ALL : 999.999.999.999

● 対応策3. /etc/hosts.deny にアクセスしてほしくないホストを自動追加する「denyhosts」を導入する

http://denyhosts.sourceforge.net/ から DenyHosts-2.6.tar.gz をダウンロード

tar zxvf DenyHosts-2.6.tar.gz 
cd DenyHosts-2.6
python setup.py install

# インストールが完了したらコンフィグファイルをコピーし所有者と権限を変更する
cd /usr/share/denyhosts/
cp denyhosts.cfg-dist denyhosts.cfg
cp daemon-control-dist daemon-control
chown root daemon-control
chmod 700 daemon-control

denyhosts.cfg を編集する

vi  /usr/share/denyhosts/denyhosts.cfg

設定例

# 4週間経過すると拒否対象から解除してあげる
PURGE_DENY = 4w
# 拒否解除を2回行うとそれ以降は解除しない
PURGE_THRESHOLD = 2
# 「存在しないユーザでの認証失敗5回」で拒否ホストに認定
DENY_THRESHOLD_INVALID = 5
# 「存在するユーザでの認証失敗10回」で拒否ホストに認定
DENY_THRESHOLD_VALID = 10
# 「rootユーザでの認証失敗1回」で拒否ホストに認定
DENY_THRESHOLD_ROOT = 1
# メールにて通知
ADMIN_EMAIL = your@email.address
# メールタイトルを指定する
SMTP_SUBJECT = DenyHosts Report Server( yourhost.server )

自動起動の設定をする

cd /etc/init.d
ln -s /usr/share/denyhosts/daemon-control denyhosts
chkconfig denyhosts on

denyhosts の起動

service denyhosts start

間違って自分のホストが denyhosts によって拒否された場合は

vi /etc/hosts.allow 

として 接続を許可したい IP を追加します

sshd: 123.123.123.123
No.644
03/18 23:07

edit

スパム対策
ssh

apacheのログファイル(access_log)を別のマシンで解析,表示する

旧なアクセス増加によってWEBサーバが重い。そんな時は別のマシンでapacheのログを解析するとよいです。

そこで

■ Visitors

http://www.hping.org/visitors/index_jp.php

ダウンロードして、解凍して make すると「visitors」という実行可能なファイルが出来ます。

それを /usr/bin 等へコピー

使い方

visitors オプション ログファイル > out.html

とすると 解析結果が out.html ファイルに出力されます。

オプションは

visitors -h

とすると表示されますが、とりあえずは

visitors -A ログファイル > out.html

と「 -A 」オプションをつけて解析してみるのがいいかと思われます。


No.632
04/21 17:01

edit

Apache

netstat lsop

lsof(エルエスオーエフ)コマンドは"list open files"の意味であり、多くのUnix系オペレーティングシステムで、オープン中のファイルと、そのファイルをオープンしているプロセスのリストを出力するコマンドである。

lsofコマンドの実行(コマンドで指定)

lsof -c ssh
lsof -c httpd
lsof -c vsftp

lsofコマンドの実行(ポートで指定)

lsof -i:80

NETSTATでポートを調べる(5秒ごと)

netstat -a 5
No.616
03/26 14:20

edit

スパム対策

Mac OSX10.4 にsmtpサーバ(MTA) postfix をインストールする。

ターミナルを立ち上げて、rootになります。

su -

設定ファイルをデフォルトからコピー

cp -p /etc/postfix/master.cf.defaultserver /etc/postfix/master.cf
chmod 0644 /etc/postfix/master.cf.defaultserver /etc/postfix/master.cf

vi で「org.postfix.master.plist」を編集します

vi /System/Library/LaunchDaemons/org.postfix.master.plist

設定ファイルの中身をこのようにします。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>org.postfix.master</string>
        <key>Program</key>
        <string>/usr/libexec/postfix/master</string>
        <key>ProgramArguments</key>
        <array>
                <string>master</string>
        </array>
        <key>QueueDirectories</key>
        <array>
                <string>/var/spool/postfix/maildrop</string>
        </array>
         <key>OnDemand</key>
        <false/>
</dict>
</plist>

postfixを起動します

postfix start

ちなみにpostfixの再起動は

postfix reload

です。

参考:http://blog.livedoor.jp/dankogai/archives/20511234.html

http://www.kozupon.com/mail/submission.html

No.525
12/10 16:14

edit

unixのユーザーを作成する。

unixユーザー(例:ユーザー名 fedora )を作成するには root から

useradd fedora

で作成します

次にパスワードの設定

passwd fedora

とすると

New UNIX password: 
Retype new UNIX password:

と入力を促されるのでパスワードを入力して完了。

No.522
07/05 01:06

edit


Fedora Core の PHP5 に DOM関数をインストールする。

FedoraCoreのPHP5には(DOM拡張)が標準でインストールされていません。

そこで yum を使って PHP5用DOM拡張 をインストールします。

yum install php-xml

apachectl configtest
apachectl graceful

インストールが完了したら

phpinfo() で DOM の項目が出来ていればOK。

DOM関数マニュアル

http://php.mirror.camelnetwork.com/manual/ja/ref.dom.php


No.516
06/24 17:01

edit


Fedora Coreにnetpbmをインストールする。

Fedora Coreにnetpbmをインストールするには

yum -y install netpbm*

コマンド一つでOK。

インストール後コマンドが正しくインストールされたか確認をしよう。

djpeg --help
pnmscale --version

これで何か文字が表示されればインストールは正常です。


No.505
10/17 09:40

edit

mod_rewrite でURIに「%2f」を含むとエラーとなるのを修正する

◆ mod_rewriteで変換前URIに「%2F」があると、サーバーエラーになります。

これの対処方法は

◆ 1. apacheのバージョンを調べる

httpd -v
Server version: Apache/2.2.0
Server built:   Feb 11 2006 18:10:38

◆ 2. Apache 2.0.46 以降の場合は「AllowEncodedSlashes ディレクティブ」をONにするとスラッシュ"/"の受け渡しを許可することが出来る。

httpd.conf (.htaccessには記述できません) に以下の内容を記述

AllowEncodedSlashes On

◆ 3. apache を再起動

apachectl graceful
No.504
04/21 17:11

edit

Apache

apache mod_rewrite の便利な書式

● mod_rewrite の便利な書式

実在するファイル名には mod_rewrite を適用しない

RewriteCond %{REQUEST_FILENAME} !-f

実在するディレクトリ名には mod_rewrite を適用しない

RewriteCond %{REQUEST_FILENAME} !-d

● mod_rewrite のチートシート(早見表)

http://www.cheatography.com/davechild/cheat-sheets/mod-rewrite/

● mod_rewrite のチートシート(早見表)PDF

https://pgmemo.tokyo/data/filedir/503.1.pdf

添付ファイル1
No.503
11/28 21:31

edit

添付ファイル

Apache

Fedora CORE 5 のapacheでSSL通信を行えるようにする

■ 1. mod_sslのインストール

yum -y install mod_ssl

■ 2. 秘密鍵の作成

cd /etc/pki/tls/certs
make server.key (パスワードを2回聞かれるので入力する)
openssl rsa -in server.key -out server.key(パスワードを1回聞かれるので入力する)

■ 3. 公開鍵の作成

make server.csr

色々質問されるので以下のように入力する(例)

Country Name (2 letter code) [GB]:jp
Locality Name (eg, city) [Newbury]:tokyo
Locality Name (eg, city) [Newbury]:shibuya
Organization Name (eg, company) [My Company Ltd]:test
Organizational Unit Name (eg, section) []:test
Common Name (eg, your name or your server's hostname) []:testserver.com (サーバー名を入れる)
Email Address []:info@testserver.com
A challenge password []: (そのままEnterを押す)
An optional company name []: (そのままEnterを押す)

■ 4. WEBサーバー用証明書の作成

openssl x509 -in server.csr -out server.pem -req -signkey server.key -days 365
chmod 400 server.*

■ 5. apacheのSSL設定ファイルを編集

cp /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.backup (バックアップをとる)
vi /etc/httpd/conf.d/ssl.conf

実行すると ssl.conf 編集画面になるので下記のように書き換える。

SSLCertificateFile /etc/pki/tls/certs/server.pem
SSLCertificateKeyFile /etc/pki/tls/certs/server.key
DocumentRoot "/var/vhosts/www.testserver.com/htdocs"

■ 6. apacheを再起動する

apachectl graceful

■ 注意 ■

ネームベースのバーチャルホストでは一つのバーチャルホストに対してしかSSLを設定することが出来ない。

バーチャルホストについては下記を参照

http://www.atmarkit.co.jp/flinux/rensai/apache08/apache08b.html

No.484
03/26 14:26

edit

perlモジュール

DNSサーバ bindを設定する

bindの起動、終了、リスタートは

/etc/init.d/named start
/etc/init.d/named stop
/etc/init.d/named restart

bindの設定確認コマンド(コンフィグ)

named-checkconf

bindの設定確認コマンド(ゾーン)

named-checkzone testserver.com /var/named/testserver.com
No.468
03/26 14:27

edit

perlモジュール

Mac OSX10.5 , 10.6 にMySQLをインストールする。

■1. MySQLのサイトのダウンロードページから Mac OS X 用ファイルを選択してダウンロードする。

http://dev.mysql.com/downloads/mysql/ (Version5.5)

■2. ダウンロード完了後、

ファイルをダブルクリックしてインストール開始。

■3. 『システム環境設定』→『MySQL』→『Start MySQL Server』でMySQLが起動します。

■4. ターミナルからMySQLを使うには

mysqlコマンドは

/usr/local/mysql/bin/mysql

にありますので、このパスを追加します。

ファイル『~/.bash_profile』に下記の行を追加

export PATH=$PATH:/usr/local/mysql/bin

■ 5. ターミナルを一度終了して、再度ターミナルを起動し

mysql

でMySQLプロンプトに入ればインストール成功。

No.421
03/31 16:11

edit

perlモジュール

Mac OSX10.4(Tiger) にImageMagick をインストールする

finkコマンドをインストールする。

次に

<pre>fink install imagemagick</pre>

インストール中に質問されるが全てデフォルトでOK。

インストールが完了したら

<pre>convert</pre>

と入力して

convertコマンドの説明が表示されればインストール成功!

No.410
03/17 15:57

edit


Mac OSX10.4(Tiger) にNetPBMをインストールする

まずfinkコマンドをインストールする。

■libjpegのインストール

finkを使って、libjpeg ligpngをインストール

fink install libjpeg
fink install libpng3

■ Netpbmのインストール

これもfinkコマンド一発でインストール出来ます。

fink install netpbm

インストールが完了すると「/sw/bin/」というパスに画像変換プログラムがインストールされています。

djpeg --help

とやって文字が表示されればインストール成功

■ CGIスクリプトでNetPBMを使用する場合はPerlスクリプトの最初の方に

$ENV{PATH} .= ":/sw/bin/";

を追加する。

No.391
04/28 17:33

edit

NetPBM

ローカルのOSXサーバでエディタ【mi】で開いてる .cgi スクリプトを実行するとエラーになる

ローカルのOSXのapacheで開発を行うとき mi などでCGIスクリプトファイルを開いたまま
そのCGIを実行すると「Internal Server Error」となりエラーログを見てみると
「Premature end of script headers: /Library/WebServer/myprogram.cgi」

となる事があります。

これはエディタ【mi】の環境設定で【その他】【編集中は他のアプリからの書き込みを禁止する】
にチェックがついているとなる。
必死にcgiスクリプトを修正しても直らないので注意。
No.337
09/19 11:52

edit


apacheのログをローテーションする【logrotate】の設定

apacheのログ「access_log」「error_log」はほっておくとどんどん容量が増えて無駄にディスクを消費する上にapacheのパフォーマンスが落ちます。
ログをローテーションするには「logrotate」を使用します。

・まず共通の設定を行います。

vi /etc/logrotate.conf
weekly
rotate 4
errors root
create
include /etc/logrotate.d

● logrotateのオプション

weekly:週単位でローテーション(daily:日単位 monthly:月単位)
rotate 4:最大4つ前までのファイルを残す
errors root:エラーがあれば rootまでメールする
create [パーミッション] [グループ名] [ユーザ名]:ローテーション後すぐに同名のログファイルを作成する。
compress:.gz ファイルに圧縮する
notifempty : ログがカラならローテーションしない
missingok : ファイルが存在しない場合でもエラーとしない
include /etc/logrotate.d:/etc/logrotate.d ディレクトリ以下の設定ファイルを読み込む
dateext : ローテーションしたファイルに日付をつける
dateformat _%Y-%m : ローテーションしたファイルに指定したフォーマットの日付をつける

● logrotateの個別のapache設定( /etc/logrotate.d/httpd )を設定する

vi /etc/logrotate.d/httpd

でファイルを開くと

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}

となっている。

notifempty があると ログファイルがから場合ローテーションを実行しないので、
テストの段階ではこれを削除しておくほうが挙動がわかりやすくなります。

使用しているログファイルが「access_log」「error_log」ならこのままでOK。
ログファイルが「access_log.sitename.com」「error_log.sitename.com」等に変更してある場合は

/var/log/httpd/*log {
↓
/var/log/httpd/*log.sitename.com {

に変更する。

また複数のファイルはスペースで区切って指定する

/var/log/httpd/*log.siteA.com  /var/log/httpd/*log.siteB.com {

● ローテーション設定の確認( -d )( dryrun )

ローテーション設定の確認をするには -d オプションをつけて実行します

logrotate -d /etc/logrotate.d/httpd

● ローテーションの強制実行( -f )( force )

ローテーション設定の確認をするには -f オプションをつけて実行します
動作を確認するには -v オプションもつけて実行するとより良いです。

logrotate -f -v /etc/logrotate.d/httpd

● ローテーションがうまく動かない時の調査方法

crontabの設定にで logrotate が組み込まれているかどうかを調べる

ls /etc/cron*

表示されるリストに

/etc/cron.daily:
logrotate  man-db.cron

logrotate があればanacronで起動する設定になっています。

実際に起動されたかどうかを見るには

cat  /var/log/cron | grep 'cron.daily'

で確認します。

● logrotate の定期実行時間を変更する

logrotate は設定ファイル /etc/cron.daily/logrotate に記述がされてあり、
このファイルは anacron から実行されます。

anacronはcronと違って以下のような特徴があります

  • サーバー負荷を下げるためある範囲内のランダムな時刻に実行する機能
  • 実行時にマシンがシャットダウンしていた場合、その後マシン立ち上げた時に実行されなかった処理を実行しに行こうとする

なので決まった時刻に正確に事故した場合はクーロンから起動するとよいでしょう。 例

・ 1. anacronの設定を削除(移動)

mv  /etc/cron.daily/logrotate   /root/

・ 2. crontabで実行

crontab -e

(毎日4時半に実行するには以下のように記述する)

30 4 * * *  /root/logrotate
No.312
04/05 14:55

edit

Apache

apacheの httpd.conf を最適化する

apacheが高速で動作するように httpd.conf を最適化する。

(参考)
http://www5.plala.or.jp/vaio0630/apache/apache_unix.htm

No.273
06/27 15:06

edit


不要なサービスの停止【mingetty】コンソールの数を減らす

1. mingetty の起動数を1にする

/etc/inittab ファイルの mingetty 起動項目の 2〜6 をコメントアウト(行頭に # をつける)

1:2345:respawn:/sbin/mingetty tty1
# 2:2345:respawn:/sbin/mingetty tty2
# 3:2345:respawn:/sbin/mingetty tty3
# 4:2345:respawn:/sbin/mingetty tty4
# 5:2345:respawn:/sbin/mingetty tty5
# 6:2345:respawn:/sbin/mingetty tty6

2. マシンをリブートする

shutdown -r now

(参考)

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/310delvcon.html

No.266
06/22 11:06

edit

省メモリ

apache のバーチャルホスト設定

Apache 2.2 バーチャルホスト説明書
http://httpd.apache.org/docs/2.2/ja/vhosts/

Apache 1.3 バーチャルホスト説明書
http://httpd.apache.org/docs/1.3/vhosts/


No.259
04/21 17:12

edit

Apache

OSXのapacheでSSLを使えるようにする。

■A-1. apacheを停止する
=================================
apachectl stop
=================================

■A-2. httpd.conf の
=================================
#LoadModule ssl_module libexec/httpd/libssl.so
#AddModule mod_ssl.c
=================================
の行を探してそれぞれ先頭の # をトル。
■A-3. httpd.conf
=================================
Port 80
=================================
を下記のように書き換える
=================================

  Listen 443
  Listen 80
 

=================================

■B-1. apacheを停止する
=================================
apachectl stop
=================================

■B-2. 下記のコマンドを実行(うまくいかないときは2回連続で実行する)
=================================
openssl md5 * > rand.dat
=================================

3.
openssl genrsa -des3 -rand rand.dat -out server.key 1024
(パスフレーズを聞かれるので適当な文字列を入れる)

4.
openssl req -new -key server.key -out server.csr
(都市の名前とか聞かれるので適当に入れる。
ただし「Common Name」にはSSLを導入するホスト名を入力)

5. ca.key を作成する
openssl genrsa -des3 -out ca.key -rand rand.dat 1024
(パスフレーズの入力を求められるので入力する。)

6. /sign.sh server.csr を実行する。
作業ディレクトリに【sign.sh】をコピーして下記のコマンドを実行する
===============================
./sign.sh server.csr
===============================

7. ssl.keyディレクトリを作成する
===============================
mkdir /etc/httpd/ssl.key
===============================

8. 作業ディレクトリから下記のコマンドを実行
===============================
cp -r * /etc/httpd/ssl.key
===============================

参考
http://developer.apple.com/internet/serverside/modssl.html
http://www.katch.ne.jp/~kakonacl/douga/ssl/mac_ssl.html

添付ファイル1
sign.sh ( 1.7 KBytes ) ダウンロード

バックアップを設定する【rsync サーバ】

■1. /etc/servicesに下記の一行を追加(あらかじめある場合はそのままでよい)

 rsync          873/tcp

■2. rsyncサーバを起動する

rsync --daemon

参考

http://park11.wakwak.com/~nkon/homepc/zaurus/config/rsync.html

No.249
08/23 19:39

edit

DNSレポート

http://www.dnsstuff.com

DNSの詳細情報を表示するサイト。
ドメイン名を入れるだけ。
No.246
02/01 11:54

edit


unix マシンの時刻を合わせる( ntpdate )

時刻サーバ(NTPサーバ)へ時刻を問い合わせ、マシンの時計を合わせるコマンド。

ntpdate ( サーバ名 )

例:appleのntpサーバへ時刻を問い合わせるときは

ntpdate time.apple.com

・確認は hwclockコマンド、date コマンドで行う

hwclock -r ; date
No.245
02/14 17:28

edit


.htaccess で mod_rewrite を設定する

● mod_rewrite一般的な書式(.htaccessに以下のように記述します)

# mod_rewriteを有効にする
RewriteEngine on

# mod_rewriteを有効にするURL階層トップ
RewriteBase /

# www「あり」「なし」を「なし」に統一する
# http://www.hogehoge.com/ → http://hogehoge.com/
RewriteCond %{HTTP_HOST} ^www\.hogehoge\.com
RewriteRule ^(.*)$ http://hogehoge.com/$1 [R=301,L]

# ディレクトリの移転
RewriteRule ^old_dir(.*)$ /new_dir$1 [R=301,L]

# ファイルの移転
RewriteRule ^old_dir/index\.html$ /new_dir/index.html [R=301,L]

# プログラムページの偽装(test.html へアクセスした時に index.php?q=test を表示する)
RewriteRule ^test\.html$ index.php?q=test [L]

● RewriteCondについて

RewriteCondは次に現れる RewriteRule にのみ適用されます。 ですので全てのリライトルールに条件を付けたい場合はすべての RewriteRuleの前に記述する必要があります。

# 実在するファイル,ディレクトリには rewrite しない
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^test\.html$ index.php?q=test [L]

● mod_rewrite の RewriteBase を環境によって切り替える方法

mod_rewrite の RewriteBase を環境によって切り替える方法 - Qiita

リライトルールの書式 http://goo.gl/FdYQZd

No.232
12/17 21:12

edit

.htaccess

PHPからMySQLへの接続が「Can't connect to local MySQL server through socket '/........./mysql.sock'」というエラーになる

● mysqlが起動していない場合は起動する

sudo systemctl start mysqld

● 1. mysql.sock がないか壊れている可能性が高いので touch する。

sudo touch /var/lib/mysql/mysql.sock
sudo touch /tmp/mysql.sock

● 2. mysqlサーバーを再起動する

● 3. どこの「mysql.sock」を見に行っているか調べる。

(シェルから)mysql -u root -p 
(mysqlから)status;

UNIX socket:            /tmp/mysql.sock
の行が mysql.sock の場所を示しているのでチェック

pnpinfoの mysql.sock とディレクトリが違うのでシンボリックリンクをはる
No.178
07/26 11:10

edit


サーバのポート状態を外部から検索(確認)する(ポートスキャンコマンド)

● ポートスキャンコマンド(nmap)

sudo nmap  YOUR-SERVER.TLD  -O

● ポートスキャンコマンド(nc)

ポート 20 〜500番をポートスキャンします

nc -z -v  YOUR-SERVER.TLD  20-500

● ポートスキャンサービスを利用する

自マシンのポートを外部からスキャンしてくれます

http://www.cman.jp/network/support/port.html

使い方

・「Proceed」ボタンをクリック
・「All Service Ports」ボタンをクリック  

でスキャンが始まります。

No.154
05/16 11:40

edit


cgi-binディレクトリ以下で画像ファイルやhtmlファイルを有効にする

.htaccessファイル内に以下のように記述する
---------------------------------------
AddHandler image/gif .gif
AddHandler image/jpeg .jpg
AddHandler image/png .png
AddHandler text/html .html .htm
AddHandler text/css .css
AddHandler cgi-script .cgi .pl
AddHandler application/x-javascript .js
--------------------------------------
AddType application/msexcel .xls
AddType application/msexcel .csv
AddHandler application/msexcel .csv
--------------------------------------

No.118
07/14 14:09

edit

.htaccess

OSXのスーパーユーザー( rootアカウント )を有効にしてrootユーザーでログインする

OSX 10.7( Lion ) 〜 10.10( Yosemite ) での方法

・1. Apple メニューから「システム環境設定」>「ユーザとグループ」を実行する
・2. 鍵アイコンをクリックし管理者アカウントで認証
・3.「ログインオプション」をクリック
・4. 右下の「編集」または「接続」ボタンをクリック
・5. 「ディレクトリユーティリティを開く」をクリック
・6. 「ディレクトリユーティリティ」ウインドウの鍵アイコンをクリック
・7. 管理者アカウント名とパスワードを入力し「OK」をクリック
・8. 「編集」メニューから「ルートユーザを有効にする」を選択する
・9. 利用するルートパスワードをパスワードフィールドとその確認用フィールドに入力し「OK」をクリック

OSX 10.6 での方法

・1. System > Library > CoreServices > 【ディレクトリユーティリティ.app】を起動する
・2. 左下のカギのアイコンをクリックする(パスワードを求められるので入力する)
・3. 【編集】->【ルートユーザを有効にする】を実行し新しいパスワードを入力

OSX 10.5 での方法

・1. アプリケーション>ユーティリティー>【ディレクトリユーティリティ.app】を起動する
・2. カギのアイコンをクリックする
・3. 【編集】->【ルートユーザを有効にする】を実行し新しいパスワードを入力

OSX10.1 〜 OSX10.4 での方法

・1. アプリケーション>ユーティリティー>【NetInfoマネージャ】を起動する
・2. 【セキュリティ】->【認証】を実行してパスワードを入力
・3. 【セキュリティ】->【ルートユーザを有効】を実行し新しいパスワードを入力
・4.  アプリケーション>ユーティリティー>【ターミナル】を起動する
・5. suと入力し「return」キーを押す。(パスワードを入力してrootユーザーになる)
No.28
02/18 15:34

edit