KUSANAGIをインストールしているCentOS7に PHP7.2のmcrypt をインストールする

PHP7.2から mcrypt は標準ではインストールされないようになっています。 また使用することも推奨されていません。 どうしても必要な場合は下記の方法でインストールしましょう

yum --enablerepo=remi,remi-php7.2 update
yum --enablerepo=remi,remi-php7.2 list | grep mcrypt
yum --enablerepo=remi,remi-php7.2 install php72-php-pecl-mcrypt
No.1308
10/17 10:29

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

KUSANAGI で自動取得したLets Encrypt の 証明書を dovecot に使用する

● KUSANAGIを使って取得した Lets Encrypt の 証明書を dovecot に使用する

dovecotの次の設定ファイルを書き換えます

/etc/dovecot/conf.d/10-ssl.conf

ssl_cert = </etc/letsencrypt/live/YOUR-DOMAIN-NAME/fullchain.pem
ssl_key = </etc/letsencrypt/live/YOUR-DOMAIN-NAME/privkey.pem

● dovecot の設定の確認

doveconf -n

設定の記述に問題がなければ、デフォルトからの差分が表示されます。

● dovecot のリスタート(Centos 7)

systemctl restart dovecot

● KUSANAGIを使って取得した Lets Encrypt の 証明書を 複数のバーチャルドメインで運用している dovecot に使用する

複数のドメインが存在する場合は 次のようにドメインごとに設定します。

local_name server1.tld {
   ssl_cert = </etc/letsencrypt/live/server1.tld/fullchain.pem
   ssl_key = </etc/letsencrypt/live/server1.tld/privkey.pem
}
local_name server2.tld {
  ssl_cert = </etc/letsencrypt/live/server2.tld/fullchain.pem
  ssl_key = </etc/letsencrypt/live/server2.tld/privkey.pem
}

この記述を適用する前に証明書ファイルが確かに存在するかどうか確認しておいてください。 ファイルが存在しない場合 dovecot が立ち上がりません。

● コマンドラインから pop3s でサーバへ接続する

openssl s_client -connect localhost:pop3s

● Qualys SSL Sever Test で SSL証明書の診断を行う

https://www.ssllabs.com/ssltest/index.html

No.1297
10/15 15:09

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接続できるサーバが必要

つまりレンタルサーバ契約があれば無料で使用できます。
容量は無制限(レンタルサーバの契約いっぱいまで)で使用できます。

● Nextcloudをインストールする

・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)にしておきます

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

「完了します」を押して、アカウント登録が完了するとダウンロードする画面へ移動するので
Windows, Macなど端末ごとにアプリをダウンロードします。
(またはこちらからダウンロードできます。 https://nextcloud.com/install/#install-clients ) (サーバーアドレスは (https://<あなたのサーバ>/nextcloud) です)

No.1226
06/15 11:01

edit

XSERVER に phpize で pecl拡張をインストールする

XSERVER では phpize できますので pecl拡張をインストールすることができます。

ホームディレクトリに php_source を作成してそこへインストールしたいモジュールを解凍して make します

例) XSERVERへ mailparse の PHP pecl拡張をインストールする

cd
mkdir php_source
cd php_source
wget https://pecl.php.net/get/mailparse-3.0.2.tgz
tar zxvf mailparse-3.0.2.tgz
cd mailparse-3.0.2
phpize
./configure
make

make が無事完了すると ~/php_source/mailparse-3.0.2/modules/ にモジュールが作成されます。

このモジュールを好きなディレクトリへ移動します。
(例えば ~/php_modules/)

● インストールしたモジュールを PHP の cli から使用する

php の -d オプションを使って直接モジュールファイルを指定して使用します

php -d extension=/home/<YOUR-ACCOUNT-NAME>/php_modules/mailparse.so  <実行したいPHPソース>

● インストールしたモジュールを WEBのPHPで使用する

XSERVERのコンパネの php.ini設定 から設定します

extension = /home/<YOUR-ACCOUNT-NAME>/php_modules/xxxxx.so
No.1207
04/16 16:47

edit

Pleskで管理しているサイトのPHPにpecl拡張「mailparse」と「php-mime-mail-parser」をインストールする

Pleskで管理しているサイトのPHPにpecl拡張「mailparse」をインストールし、WEB側、CLI側両方から使えるようにします。

1. ● SSH で Pleskサーバに接続

2. ● 現在のPHPのバージョンを確認

php -v
PHP 5.4.16 (cli) (built: Mar  7 2018 13:34:47) 

PHP 5.4.16 であることがわかります。これを5.6に変更します。

3. ● 使用するPHPのバージョンを変更

Pleskにインストールされている全てのPHPを表示する

ls /opt/plesk/php/

こちらの3つであることがわかります。

5.6  7.0  7.1

今回は PHP 5.6を使用します。

cd
vi .bash_profile

.bash_profile の一番下にこれを追加します

# PHP Version 5.6
PATH=/opt/plesk/php/5.6/bin/:$PATH

一度ログアウトして、再度ログイン後にphpバージョンを確認。

3. php56-php-pecl-mailparse をインストールする

php56-php-pecl-mailparse をインストールします

yum install -y php56-php-pecl-mailparse

4. .ini ファイルを追加する

ファイル名を z_mailparse.ini としているのは一番後ろ( mbstring より後ろ)に読み込ませるためです

vi /opt/plesk/php/5.6/etc/php.d/z_mailparse.ini

z_mailparse.ini を ↓ の内容で保存

; Enable mailparse extension module
extension=/opt/remi/php56/root/usr/lib64/php/modules/mailparse.so

5. composer をインストールする

ホームディレクトリの中に my_composer を作ってそこへインストールするします

cd
mkdir my_composer
curl -sS https://getcomposer.org/installer | php

.bash_profile の一番下にこれを追加します

# composer
alias composer='/opt/plesk/php/5.6/bin/php ~/my_composer/composer.phar '

6. php-mime-mail-parser をインストールする

composer require php-mime-mail-parser/php-mime-mail-parser
No.1201
04/17 17:08

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 に記述しても反映されません。


```
vi /etc/ssh/sshd_config
```

```
Subsystem   sftp    /usr/libexec/openssh/sftp-server
      ↓
Subsystem   sftp    /usr/libexec/openssh/sftp-server  -u 0002
```

書き換えた後 ssh をリスタートします
```
systemctl restart sshd
```

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

#● Transmitのマスクを変更する
```
【環境設定】→【ルール】
```
から設定できます

No.1101
03/16 19:11

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
02/14 17:30

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
No.940
07/04 17:01

edit

PHP

Mac OSX 10.10(Yosemite)でWEBサーバ環境(apache + MySQL + PHP)を構築する

Mac OSX 10.10(Yosemite)に

WEBサーバ : apache 2.2
データベース:MySQL 5.6
プログラミング言語:PHP 5.5

をインストールする方法。

● Xcodeをインストールする

「App Store」から「Xcode」を検索してインストールする

● HomeBrewをインストールする

(ターミナルから以下を実行)

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

インストール後に .bash_profile (なければ作成)に以下を追加 「ターミナルから以下を実行」

cd
touch .bash_profile
vi .bash_profile

viでファイルが開けたら【i】を押して、編集モードにして、以下の2行を貼り付けて保存( 【esc】【:】【w】【q】【!】【Enter】と入力)する。

export PATH=/usr/local/bin:$PATH
export PATH=/usr/local/sbin:$PATH
brew doctor

と入力して警告やエラーが出ないことを確認する。警告などが表示される場合はその下にヒントを元に解決する。(直接このコマンドを打ったらいいよと例文が書いてあることがあります。)

● MySQLのインストール

(ターミナルから以下を実行)

brew install mysql

インストールの確認とMySQLの起動 (ターミナルから以下を実行)

mysql --version
mysql.server start
mysql -uroot

● WEBサーバ Apache(version 2.2)のインストール

(ターミナルから以下を実行)

brew tap homebrew/dupes
brew tap homebrew/apache
brew install httpd22

apacheインストールの確認

apachectl -v

・apacheのhttpd.confの場所を調べる

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

httpd -V

・apacheの設定ファイルの編集

vi /usr/local/etc/apache2/2.2/httpd.conf

以下のように書き換えます

# ポートの設定(8080→80)
Listen 80

# mod_rewrite を使用できるようにする(先頭にシャープ # がついているのでそれを外す)
LoadModule rewrite_module libexec/apache2/mod_rewrite.so

# ServerNameの変更
ServerName localhost:80

# DocumentRootの変更
DocumentRoot "/Users/ユーザ名/htdocs"

# .htaccessでの上書きを許可
AllowOverride All

# バーチャルホストを利用できるようにする
Include /usr/local/etc/apache2/2.2/extra/httpd-vhosts.conf

・apacheのバーチャルホストファイルの編集

vi /usr/local/etc/apache2/2.2/extra/httpd-vhosts.conf

例: ディレクトリ( /Users/ユーザー名/vhosts/ ) サーバ名( test.lcoal ) でバーチャルホストの設定を行います。

# ポートを8080→80に変更
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin webmaster@test.local
    DocumentRoot "/Users/ユーザー名/vhosts/test.local"
    ServerName test.local
    ServerAlias www.test.local
    ErrorLog  "/Users/ユーザー名/vhosts/test.local/log/test.local-error.log"
    CustomLog "/Users/ユーザー名/vhosts/test.local/log/test.local-access.log" common
    <directory "/Users/ユーザー名/vhosts/test.local">
      Order allow,deny
      Allow from all
    </directory>
</VirtualHost>

・apacheの起動コマンド

# 起動
sudo apachectl start
# 停止
sudo apachectl stop
# 再起動
sudo apachectl graceful

・apacheのエラーログの確認

cat /private/var/log/apache2/error_log

● PHPのインストール

コマンドラインから以下を実行

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php
brew install php55 --homebrew-apxs

インストール後にPHPのバージョンを確認する

php -v

・ /etc/php.ini の設定

(ルートユーザーになって以下を実行)

cd /etc
cp php.ini.default php.ini

php.ini 設定例

[Date]
date.timezone = "Asia/Tokyo"

[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none
mbstring.func_overload = 0
mbstring.strict_detection = Off

● PEARのインストール

cd
curl -O  http://pear.php.net/go-pear.phar
php -d detect_unicode=0 go-pear.phar

.bash_profileに以下の行を追加(ユーザー名のところは適宜書き換える)

export PATH="/Users/ユーザー名/pear/bin:$PATH"

bashのパスを更新する

source .bash_profile

これで終了です。

No.939
07/14 19:16

edit

Apache

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

スパム対策

CentOSのPHPのバージョンを最新にあげる(APC , PEARも最新版に。)

1. RPM-GPG-KEYをインストール

rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka 

2. yumの設定ファイルに下記の内容を追加

vi /etc/yum.repos.d/utterramblings.repo

として以下の内容を保存する

[utterramblings]
name=Jason’s Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

3. yumによるアップデートを実行する

yum update php

4. APCをインストール

http://pecl.php.net/package/APC

からパッケージを入手し解凍。

(↓ 2行目と3行目複数行になっていますが、一行にして実行してください。)

phpize
./configure --enable-apc-mmap --with-apxs=/usr/sbin/apxs --with-php-config=/usr/bin/php-config
make
make install

でインストール完了。

5. APACHEを再起動

apachectl restart

6. PEARを最新版にする

yum update php-pear
pear upgrade PEAR

でPEARも最新版になります。

No.694
09/14 18:25

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
06/24 11:07

edit

添付ファイル

Apache

Pleskで管理しているサーバーで ntpdate(時刻同期)を行う。

Pleskで管理しているサーバーは Crontab を直接設定することは出来ません。

そこで定期的に時刻同期を行うには

Plesk 管理画面から

【システム】>【サーバ】>【システム時間】メニューを選択。

1.「タイムゾーン」を「GMT +0900 Asia / Tokyo」にセットする

2.「システム時間を同期する」にチェックを付ける

3.「ドメイン名もしくはIP」のところにntpサーバ名を入力

でOKです。

No.502
09/13 11:15

edit

Plesk

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サーバの設定を確認するコマンド「dig」

digコマンド実行方法は

dig @使用するDNSサーバ名(ipアドレス) 調べたいサーバ名(ipアドレス)調査コマンド

です。

調査コマンド

A: ネットワークアドレス (省略時)
NS: ネームサーバ
MX: メールサーバの情報
SOA: SOA 情報
ANY: 知っているすべての情報
No.469
03/03 17:56

edit

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

Mac OSX10.4(Tiger) 10.5(Leopard)にfinkをインストールする

http://fink.sourceforge.net/download/index.php?phpLang=ja
からバイナリインストーラをダウンロードして
「Fink x.xx -xxxxx Installer.pkg」を実行。
続けて「pathsetup.app」も実行。

ターミナルを起動して「fink」と入力して「Enter」を押す。何か文字が表示されたらインストール成功。

No.390
07/01 13:43

edit

ローカルの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

省メモリ

No.263
06/18 16:39

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 ) ダウンロード

SSHやSFTPをパスワードなしで接続する

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

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

ssh-keygen -t rsa
(なにか入力が促されるが【Enter】のみを押す)

鍵の強度を上げたい時は

ssh-keygen -t rsa -b 4096
(4096バイトで作成)

で作成する

鍵ファイル名を指定する時は

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

というふうに -f ファイル名 をつけると「id_rsa__mysite」が生成されます。

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

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

ssh-keygen -l -f ~/.ssh/id_rsa.pub

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

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

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

鍵ファイル名を指定した場合は

cat ~/.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から先ほどクリップボードにコピーした鍵をペーストする)

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

● 5. 設定完了。(接続元マシンから)接続を確認する

ssh user@xxx.yyy.zzz

なお、SSH接続の不具合を調査するときはこのようにする

ssh -v user@xxx.yyy.zzz

● 6. 設定完了。キーを指定して接続する

キーを指定して接続するには - i 暗号キーとなるファイル という風に指定します。

ssh  -i  ~/.ssh/id_rsa__XXXXX  user@xxx.yyy.zzz
No.250
10/02 09:24

edit

ssh

バックアップを設定する【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


mod_rewrite で 「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 でアクセスされた場合に https へリダイレクトさせる

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
No.233
06/28 09:57

edit

perlモジュール

.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 '/tmp/mysql.sock'」というエラーになる

まずMySQLの「mysql.sock」がどこにあるか調べる。

================================
(シェルから)mysql -u root
(mysqlから)status;

UNIX socket: /tmp/mysql.sock
の行が mysql.sock の場所を示しているのでチェック

pnpinfoの mysql.sock とディレクトリが違うのでシンボリックリンクをはる
================================



参考:http://www.hi-ho.ne.jp/tsumiki/book_sup2.html

No.178
03/27 14:54

edit


メール送信サーバ( SMTP )がSPAMの踏み台にされているか調べる

smtpサーバが不正中継を許可しているかどうかをテストする。

http://www.abuse.net/relay.html

↑このページにテストしたいsmtpサーバホスト名を入力する

結果が

Relay test result
All tests performed, no relays accepted.

となればOK

こちらも同じく有用です(日本語なのでおすすめ)

http://www.rbl.jp/svcheck.php

No.155
08/12 10:11

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
10/10 22:18

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