「技術系」カテゴリーアーカイブ

スマホSH-01Gに機種変した!これで捗る

sh-01gSH-10Dから同じシャープの系統、SH-01Gに機種変しました。

スマホって高いので、最初は安い型落ち品にしようと思ってたのですが、10日ほど前にこの機種の月々サポートの割引額が増えたんですよ。

端末価格86,832円で実質負担額38,880円だったのが、さっきの増額に10年割引などを付けて実質負担額が約15,000円にまで下がりました。

最新機種なので、ここまで安くなれば十分だね。

初期設定

ドコモオンラインショップで買ったので、設定は全部自分でやります。電話帳とメールはmicroSDにバックアップ、モバイルSuicaとEdyのデータはサーバに退避させます。

あとはSH-01Gを起動してそれらのデータを取り込めば完了。

しかし、nanoUIMカードを挿したのに通話もネットも出来ない。何度か再起動したり挿し直したりと試行錯誤……実は開通手続きは電話かけて行う必要があるのでした。これは知らなかった。まあ説明書読んでなかっただけなんだけどね(汗)

色々試してみた

液晶が4.5インチから5.5インチになったのですが、やはり大きいね。情報量は増えるけど、片手操作が大変そうだ。と思ったけど、ワンハンドアシストの画面縮小モードなんて機能があるんだね。これは便利。

Android OSは4.1から4.4に変わったけど、Nova Launcher使ってるから、見た目はそれほど変わらず。

ただやはり性能が上がってるだけあって、同じアプリを使ってもサクサク度が違うね。特に異様に重かったdocomoのメールソフトが、普通に使えるレベルになった。

ようやくdマガジンが使えるようになった。古いのは未対応だったんだよね。でも雑誌を見るのにはさすがに画面小さい気も。

Evernoteまたプレミアムが1年間無料になった。まあ文字しか扱わないから、そんなに必要ないけど。

そういえばカケホーダイにプラン変更されたのか。あんまり電話しないからなぁ……

そんな感じで

まだ全然いじり足りないけど、一通りアプリも入れたし、問題なく使えそうです。

最近iPadばかり使っていたけど、これでスマホ使う機会も増えるかな。

Gitでバージョン管理(さくらのVPS設定6)

チーム開発ではもちろん、1人でシステム開発する時にもバージョン管理は必須ですね。ツールはGitを使います。

GitはGitHubとかBacklogとか既存のサービスで使えるのがあるけど、せっかくなので自前で構築します。

Gitインストール

CentOS6.5にはGit1.7.1という古いバージョンが入っています。リポジトリにも古いのしか無いので、自分でコンパイルします。

まずは既存バージョンをアンインストール。

# yum remove git

必要なパッケージを先にインストール。

# yum install zlib-devel perl-devel gettext

Gitをダウンロードしてコンパイル。現在の最新バージョンは1.9.0です。

# wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz
# tar zxvf git-1.9.0.tar.gz
# cd git-1.9.0
# ./configure
# make
# make install

正常にインストールできてるか確認します。

# git --version
git version 1.9.0

Gitoliteインストール

Gitoliteはユーザやリポジトリを管理をしてくれる便利ツールです。

まずはGitolite用のユーザを作成します。

# useradd gitolite

そしたらgitoliteユーザでログインして、鍵用のディレクトリを作成しておきます。

# su gitolite
(gitolite)$ cd ~
(gitolite)$ mkdir .ssh -m 0700
(gitolite)$ exit

rootでユーザ管理するために、rootの鍵を作成してgitoliteのディレクトリにコピーします。

# mkdir ~/.ssh -m 0700
# ssh-keygen -t rsa (選択肢は全部エンターでOK)
# cp ~/.ssh/id_rsa.pub /home/gitolite/root.pub
# chmod 666 /home/gitolite/root.pub

GitoliteをGitHubから取得してインストールします。

# su gitolite
(gitolite)$ mkdir ~/tmp
(gitolite)$ cd ~/tmp
(gitolite)$ git clone git://github.com/sitaramc/gitolite
(gitolite)$ mkdir -p ~/bin
(gitolite)$ gitolite/install -to ~/bin

rootの鍵をgitoliteに設定します。

(gitolite)$ cd ~
(gitolite)$ ./bin/gitolite setup -pk root.pub

不要なファイルを削除します。

(gitolite)$ rm -f ~/root.pub
(gitolite)$ rm -rf ~/tmp
(gitolite)$ exit

ローカルに出来たgitolite-adminというリポジトリでユーザとかの管理が出来るようになります。

# cd ~
# git clone gitolite@localhost:gitolite-admin

上記のコマンドでちゃんとcloneできたら設定完了です。

ユーザ追加

gitolite-adminリポジトリにアクセスしたいユーザの公開鍵を追加します。この鍵は自分のPCで作成したものです。作成方法は省略。

# cd ~/gitolite-admin
# vi keydir/kuro.pub

kuro.pubにユーザkuroの公開鍵を追加しました。ファイル内では末尾に改行が入ってるとうまくいきません。気付かず苦労した……

変更を反映させます。

# git add keydir
# git commit -m 'add users'
# git push

これでkuroの秘密鍵を持つユーザがGitにアクセスできるようになります。

リポジトリ作成

ユーザと同じくgitolite-adminでリポジトリを追加します。

# cd ~/gitolite-admin
# vi conf/gitolite.conf

gitolite.confには例えば以下のように記述します。

repo unity
    RW+     =   kuro

変更を反映させます。

# git add conf
# git commit -m 'add projects'
# git push

これでkuroだけがアクセスできるunityリポジトリが作成されました。

アクセスする

ユーザとリポジトリの設定が完了したので、以下のコマンドでアクセス出来るようになりました。

git clone ssh://gitolite@(サーバのIPアドレス)/unity

失敗する場合はsshの設定なども確認してみてください。

dマガジン契約してiPad Airで読んでみたよ

d-magazine20日からはじまったドコモのdマガジンを契約しました。

My docomoからdocomo IDでログインし、dマガジンの申し込みをすれば使えるようになります。アプリはApp Storeにあります。俺はドコモのスマホを持っているので、料金は月々の携帯代と合算で請求かな。

うちのスマホ未対応だった

自分のスマホSH-10Dはdマガジンに対応していませんでした。これより古いSH-09Dは対応しているのに何故……まあそのうち機種変するけどさ。なのでiPad Air(Wi-Fiモデル)で読んでます。

機能は今後に期待

評判通り、雑誌を選択するカタログページが使いづらい上に、動きが気持ち悪いね(汗)

雑誌を選ぶとダウンロードでちょっと待たされますが、開いた後はスワイプ操作でサクサクページがめくれます。あーでもたまにもたつくかな。数十分使っていて、1回ハングアップした。まだ不安定か。

他のアプリと同様に、iPadを縦にすれば1ページ、横にすれば見開き2ページになります。9.7インチRetinaだと見開きでも文字が読めるね。見開きでめくっていって、詳しく見たい箇所は拡大して読むって感じかな。

雑誌多いなー

約80冊も読めるって凄いね。ただ雑誌によって読めるページ数が違うみたい。

昔買っていた週刊ファミ通(450円)や週刊アスキー(400円)は、ほぼ全てのページが読めます。dマガジンが400円(税別)だから、これらだけでも元が取れます。ただこの手のカタログ的な情報は、今はネットでも手に入っちゃうんだよね……

日経マネーの特集「億万長者さん17人に直撃」は読みふけっちゃったよ。みんなアベノミクスで儲かったんだなぁ。

他にも何誌か読んでみたけど、雑誌が多すぎて迷う。カタログページが使いづらいせいでもあるけどね。あと雑誌更新のタイミングっていつなんだろう。週アスは即日更新だけど、マネーはまだ古いし。

まとめ

1冊でも定期購読してる人にとっては得ですね。俺はそういうの無いから、気になった記事を読んでいく感じになるかな。ただ何度も書いてる通り使いづらいから、そのうち読まなくなっちゃう可能性も……

まあ月単位の契約だし、しばらくは契約してみます。スマホ機種変すれば、使える場面が増えるしね。

Twitbinでツイートが見れなくなったのが直った(Firefoxアドオン)

TwitbinFirefoxのサイドバーでTwitterのタイムラインを見ることが出来るアドオンのTwitbinを使っています。

最初は普通に使えていたのですが、日が経つごとに見れるツイートの数が減っていくんですよ。特にリストは最新の1件のみか、全く見れない状態に。設定パネルにはその辺の項目は無く、再インストールしても設定は保持したままの状態。

仕方ないのでYoonoに移行してみたのですが、こっちもそのうち動かなくなった。なのでTwitbinを何とかすることにしました。

SQLite Managerアドオンで内部データを見たりとかあれこれ試していたけど、ふと見たらtwitbinDB.sqliteというファイルがあるじゃないですか。

Windows7での場所は

C:\Users\(ユーザ名)\AppData\Roaming\Mozilla\Firefox\Profiles\(英数字の羅列).default\twitbinDB.sqlite

アンインストールしてもこのファイルは消えていなかったんですよ。なので削除してから再インストールしたら……正常に動きました!

こんな単純な事だったとは。数ヶ月くらい我慢して使ってたのに(汗) この方法は他のアドオンがおかしくなった時にも使えるかもね。

メールサーバ(さくらのVPS設定5)

メールサーバはPostfixとDovecotを使います。メールアドレスは複数ドメインで、アカウントはLinuxユーザのを使用、送信はSMTP認証です。

さくらのVPSは2週間のお試し期間中はメールが使えません。2週間経ってなくてもいける! と思ったら本契約ボタンを押して下さい。1時間位で使えるようになるそうです。

Postfix(送信)

Postfixはインストール済みで既に稼働もしていたので、設定だけします。

# vi /etc/postfix/main.cf

以下のように修正
myhostname = www????.sakura.ne.jp
mydomain = www????.sakura.ne.jp
myorigin = $mydomain
inet_interfaces = all
#inet_interfaces = localhost
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP unknown

以下を追加(スパム対策)
disable_vrfy_command = yes
smtpd_helo_required = yes

以下を追加(バーチャルドメイン用)
virtual_alias_maps = hash:/etc/postfix/virtual

以下を追加(SMTP-Auth用)
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_path = smtpd
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

以下を追加(メールへの添付可能サイズを無制限にする)
message_size_limit = 0
mailbox_size_limit = 0

メール送信時にサブミッションポート(587)を使用します。

# vi /etc/postfix/master.cf

以下の行のコメントアウトを外す
submission inet n       -       n       -       -       smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING

設定をリロードします。

# service postfix reload

ネット上ではリロードだけで済むって書いてあったけど、maillog見たら再起動しろって警告が出てたので結局再起動。メール送れなくて悩んだよ……

# service postfix restart

Saslauthd(SASL認証)

SMTP認証のためにSaslauthdを使用します。アプリと認証処理を分離してくれるものらしい。

# vi /etc/sysconfig/saslauthd

Linuxユーザのパスワード(/etc/shadow)を使う
MECH=shadow

起動します。

# service saslauthd start
# chkconfig saslauthd on

Dovecot(受信)

Dovecotをインストールします。

# yum install dovecot

設定していきます。

# vi /etc/dovecot/conf.d/10-mail.conf

以下の行のコメントアウトを外す
mail_location = maildir:~/Maildir
# vi /etc/dovecot/dovecot.conf

以下の行のコメントアウトを外す
protocols = imap pop3 lmtp
listen = *, ::
# vi /etc/dovecot/conf.d/10-auth.conf

パスワードを平文にする
disable_plaintext_auth = no
# vi /etc/dovecot/conf.d/10-ssl.conf

SSL接続しない
ssl = no

Dovecotを起動します。

# service dovecot start
# chkconfig dovecot on

メールアドレス作成

useradd時にメールボックス用のディレクトリを自動で作成されるようにします。

# mkdir -p /etc/skel/Maildir/{new,cur,tmp}
# chmod -R 700 /etc/skel/Maildir/

メールアカウント用のユーザをシェルログイン不可で作成します。

useradd -s /sbin/nologin hoge-info
passwd hoge-info

useraddしたらメールボックスはこのように作成されました。

/home/hoge-info/Maildir/new/
/home/hoge-info/Maildir/cur/
/home/hoge-info/Maildir/tmp/

メールアドレスとその振り分け処理を作成します。ドメインごとにanythingの行を入れないとメールが使用できません。入れ忘れて無駄に回り道した……

# vi /etc/postfix/virtual

hoge.com         anything
info@hoge.com    hoge-info
web@hoge.com     hoge-web

振り分けを反映させます。

# postmap /etc/postfix/virtual

これでメールの送受信が出来るようになりました。

ぐぐるとアカウントをMySQLで管理する方法があったりとか、色んな設定があるようで、目的の情報がなかなか見つからず苦労しました。

暗号化とかしてないので、セキュリティ的にはちょっと弱いかもしれませんが、とりあえずこれで。

MySQLとPHP(さくらのVPS設定4)

MySQL

標準のリポジトリだとバージョン5.1なので、RemiからMySQL 5.5をインストールします。MariaDBは……まだいいや。

# yum --enablerepo=remi install mysql-server mysql-devel

設定ファイルで文字コードをutf-8に変更します。

# vi /etc/my.cnf

以下末尾に追加
character-set-server=utf8

[mysqldump]
default-character-set=bynary

[client]
default-character-set=utf8

データベースを初期化して起動。

# mysql_install_db
# service mysqld start
# chkconfig mysqld on

rootのパスワード設定。最初はEnter、次はパスワード入力、その後は全部Yキーでいけた。

# mysql_secure_installation

設定完了。MySQLが使えるようになりました。

# mysql -u root -p

PHP

標準のリポジトリだとバージョン5.3なので、RemiからPHP 5.4をインストールします。5.3ってあと2ヶ月でサポート終了だしね。

# yum --enablerepo=remi install php php-devel php-mysql php-gd php-pear php-mbstring

設定ファイルいじります。

# vi /etc/php.ini

session.use_trans_sid = 1
display_errors = On
error_reporting  =  E_ALL & ~E_NOTICE
mbstring.language = Japanese
upload_max_filesize = 10M
short_open_tag = On
date.timezone = "Asia/Tokyo"

PHPからsshを使いたいので(WordPressとかで)インストール。

# yum --enablerepo=remi install libssh2-devel
# pecl install ssh2-0.12

設定ファイルを作成してsshモジュールを追加する。

# vi /etc/php.d/ssh2.ini

extension=ssh2.so

Apache再起動で反映。

# service httpd restart

phpMyAdmin

MySQLをコマンドラインで操作するのメンドイのでphpMyAdminインストール。

# yum --enablerepo=remi install phpmyadmin

アクセス制限を付ける。ここでは.jpのみアクセス可。

# vi /etc/httpd/conf.d/phpMyAdmin.conf

<Directory /usr/share/phpMyAdmin/>
の中の
Allow from 127.0.0.1
の下に以下を追加
Allow from .jp

リンクファイルを作成してネット上から見えるようにする。

# ln -s /usr/share/phpMyAdmin /var/www/html/phpmyadmin

Apache再起動で反映。

# service httpd restart

これで以下からアクセスできるようになります。
http://www????.sakura.ne.jp/phpmyadmin/

以前はコマンドラインからちまちまとMySQLをいじってたけど、某ゲーム会社で仕事した時にphpMyAdminが使われていて、なんだ使っても良かったんだ、と納得して以来使ってます。

まあゲームはデータ量が膨大だし、GUIないと技術者以外触れないしね。勿論セキュリティ対策は色々してあった。

webサーバ(さくらのVPS設定3)

Apache 2.2をインストールします。今回はやらないけど、webサーバの世界では最近nginxが伸びてるみたいだね。

# yum install httpd

起動と自動起動。ただし一通りの設定が完了してから。

# service httpd start
# chkconfig httpd on

起動中に設定変更したら再起動が必要です。

# service httpd restart

ドメイン管理ユーザ

ドメインごとに管理するユーザを分けます。普通にユーザを作成すると自分のホームディレクトリより上の階層に行けてしまうので、chrootを使って行けないようにします。

グループ作成。

# groupadd sftpgroup

グループに所属するユーザにchrootを適用します。

# vi /etc/ssh/sshd_config

サブシステム変更
#Subsystem       sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

グループと行ける範囲を末尾に追加
Match group sftpgroup
  ChrootDirectory ~
  ForceCommand internal-sftp

sshdを再起動します。SSHの設定が変わるので、ミスってたらサーバに接続できなくなります。要チェック!

# service sshd restart

あとはユーザを作成していけば /home/hoge/ がルートディレクトリになります。

ユーザ作成
# useradd -g sftpgroup hoge
# passwd hoge

ホームディレクトリの所有者をrootにする
# chown root:root /home/hoge
# chmod 755 /home/hoge

ディレクトリ作成とパーミッション変更
# mkdir /home/hoge/public_html
# chmod 777 /home/hoge/public_html

バーチャルホスト

1台のサーバで複数のドメインを運用したいので、バーチャルホストの設定をします。

# vi /etc/httpd/conf/httpd.conf

この行のコメントアウトを外す
NameVirtualHost *:80

ホスト設定を追加(1)
<VirtualHost *:80>
    ServerAdmin webmaster@www????.sakura.ne.jp
    DocumentRoot /var/www/html
    ServerName www????.sakura.ne.jp
    ErrorLog logs/error_log
    CustomLog logs/access_log common
</VirtualHost>

ホスト設定を追加(2)~(ドメインの数だけ追加する)
<VirtualHost *:80>
    ServerAdmin webmaster@hoge.com
    DocumentRoot /home/hoge/public_html
    ServerName hoge.com
    ServerAlias www.hoge.com
    ErrorLog logs/hoge.com-error_log
    CustomLog logs/hoge.com-access_log common
</VirtualHost>

ちなみに記述の通り、(1)にさくらから付与されたサブドメインを置いて、(2)以降に自前のドメイン群を置くようにしています。

別にさくらのサブドメイン使う必要は無いんだけど、IPアドレスや未設定のドメインでアクセスされた時に一番上のVirtualHostが参照されるので、念のため設置してます。別々のドメインで同じサイトが表示されるとSEO的にもまずいし。

公開前にサイトを確認する

DNSを向ける前にサイトを確認したいので、ユーザーディレクトリの設定をします。ユーザー名がhogeの場合、こんなチルダ付のURLで見れるようになります。
http://www????.sakura.ne.jp/~hoge/

# vi /etc/httpd/conf/httpd.conf

#UserDir disabled
UserDir public_html

以下のコメントアウトを外してOptionsの中身を見直す
<Directory /home/*/public_html>
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews SymLinksIfOwnerMatch
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

SSL

OpenSSLは既に入っているので、mod_sslをインストールします。

# yum install mod_ssl

SSLを使用するドメインを追加します。

# vi /etc/httpd/conf.d/ssl.conf

以下を追加
<VirtualHost *:443>
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    SSLInsecureRenegotiation on
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    ServerAdmin webmaster@hoge.com
    DocumentRoot /home/hoge/public_html
    ServerName hoge.com
    ServerAlias www.hoge.com
    ErrorLog logs/hoge.com-error_log
    CustomLog logs/hoge.com-access_log common
</VirtualHost>

SSLサーバ証明書(有料)が必要なんだけど、自分が使うだけなので無しで行きます。ブラウザが警告を出すけど無視してページ開けます。ほんとは良くないんだけどね。

gzipで圧縮

前に.htaccessでやっていた転送データをgzip圧縮する方法ですが、今回はこちらに書きます。これで転送量が減るね。

# vi /etc/httpd/conf/httpd.conf

以下を追加
<Location />
    SetOutputFilter DEFLATE
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    Header append Vary User-Agent env=!dont-vary
</Location>

htmlファイルアップロード

普通はftpでアップロードするんだけど、セキュリティとか設定の手間とか考えてsftpを使うことにしました。sshの認証を使うのでサーバ側の設定は必要ないし。

FileZillaなどで接続方法をsftpにして、ドメイン管理ユーザのIDパスワードで接続できます。

データは以下のディレクトリに上げていきます。

/home/hoge/public_html/

その他

必要に応じて。

# vi /etc/httpd/conf/httpd.conf

ディフォルト文字コードの指定コメントアウト(文字化けする場合)
#AddDefaultCharset UTF-8

ログのIPをホスト名に変換(重くなるけど)
HostnameLookups On

しかしApacheの情報ぐぐると、平気で10年以上前のページが上位に出てきて凄いね。

ファイアウォール(さくらのVPS設定2)

サーバにファイアウォールを設定します。内容はさくらのサポート情報を参考に、というかほぼそのまま書いてます。

まずは攻撃対策のルールを記述します。

# iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

localhostとpingを許可します。

# iptables -A INPUT -i lo -j ACCEPT
# iptables -A INPUT -p icmp -j ACCEPT

必要なポートを開放します。ポート番号はそれぞれhttp(80)、https(443)、pop3(110)、smtp(25)、submission(587)、ssh(22)です。

# iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 587 -j ACCEPT
# iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

許可済みのパケットのみ通します。

# iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -P INPUT DROP
# iptables -P OUTPUT ACCEPT

記述したルールをファイルに保存します。再起動はしなくても反映されるっぽい?

# service iptables save

一応再起動
# service iptables restart

ちなみにルールを修正したい場合は以下のファイルを直接いじります。最初からここに記述していっても良いんだろうけど。

# vi /etc/sysconfig/iptables

設定の確認はこちら。

# iptables -L

さくらのVPSお試し期間中は、ここの設定に関係なくメール送れないけどね。

別サーバでの話だけど、imap許可してたら物凄い勢いでアクセスされてサーバ会社から警告が来て驚いた思い出。即閉じた。

スペックとユーザとパッケージ管理(さくらのVPS設定1)

今のサーバを借りてから3年経つので、乗り換えのためにさくらのVPS 2Gを借りました。スペックは以下のように変わっています。

プランさくらのVPS 512さくらのVPS 2G
CPU(仮想)Core2 Duo (2.4GHz) 2コアWestmere (2.4GHz) 3コア
メモリ1GB2GB
HDD20GB200GB
OSCentOS 5.5CentOS 6.5
リージョン大阪石狩

毎回サーバの設定に苦労するので、手順を書き出してみることにしました。いつもはローカルにメモしてるんだけどね。

sshの設定

まずは仮登録後に送られてくるメールからVPSコントロールパネルに入り、サーバを起動させます。次にリモートコンソールからログインしてrootのパスワードを変更します。

# passwd

rootで直接ログインできるのは危険なので、作業用アカウントを作成します。

ユーザーhoge作成
# useradd hoge

hogeのパスワード設定
# passwd hoge

hogeをwheelグループに入れる
# usermod -G wheel hoge

作業用アカウント(wheelグループ)以外ではroot権限を使えないように制限を付けます。

sudoできるユーザ
# visudo

この行を有効化
%wheel ALL=(ALL) ALL
suできるユーザ
# vi /etc/pam.d/su

この行を有効化
auth required /lib/security/$ISA/pam_wheel.so use_uid

rootで直接ログインできないようにします。

# vi /etc/ssh/sshd_config

yesをnoに変更する
PermitRootLogin no

再起動
# service sshd restart

最後にTCP wrapperでsshにログインできるホストを制限します。

拒否リスト
# vi /etc/hosts.deny

以下を追加
sshd : all
許可リスト
# vi /etc/hosts.allow

以下を追加
sshd : localhost
sshd : www????.sakura.ne.jp
sshd : .jp

これでサーバ自身と.jp以外の人はアクセスできなくなりました。ちゃんと自分のプロバイダに合致したホスト名を指定しないと繋がらなくなります。

ほんとは公開鍵を使ったほうが良いんだけどね。

ついでに日本語化。

# vi /etc/sysconfig/i18n

LANG="C"
を
LANG="ja_JP.UTF-8"
に変更

yumでRemiリポジトリを使う

標準のyumだと古いパッケージばかりなので、比較的新しいのがインストールできるRemiリポジトリを使用します。

CentOS6用
# wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# rpm -Uvh remi-release-6.rpm

Remiを指定してインストールする場合には以下のように記述します。

# yum --enablerepo=remi install (パッケージ名)

アップデートは新旧入り混じると面倒なので、Remiで入れたのは個別でやった方が良いのかな。

通常パッケージ全部アップデート
# yum update

Remiで入れたの個別アップデート
# yum --enablerepo=remi update (パッケージ名)

設定ミスが無いか必死にぐぐりながらいじってます(汗)

WordPressを簡単に高速化させてみる

まあWordPressに限らない方法なんだけどね。

PageSpeed InsightsというGoogle製のサイトの表示速度を調べてくれるサイトを知りました。何年も前からあったみたいだけど。
ともかく、ここにURLを入れたら速度が遅くなってる原因がわかります。便利だね。

このブログのTOPページを試してみたらモバイルが57/100、PCが67/100でした。スコア低いなあ。なので「修正が必要」と書かれている2つの対処法を試してみた。

圧縮を有効にする

これはサーバからブラウザへ転送するデータをGZIPで圧縮しろってことです。Apacheにmod_deflateなるものを入れる必要があるんだけど、うちの環境だと最初から入ってた。なのでネット情報を参考に.htaccessに以下を追加。

<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
</IfModule>

GZIPに対応していないブラウザなどを除外してるね。

ブラウザのキャッシュを活用する

画像などに有効期限を付ければブラウザキャッシュが効くよということです。これも同じくApacheにmod_expiresが入っていたので、やはりネット情報を参考に.htaccessに追加。

<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault A1
ExpiresByType image/gif A604800
ExpiresByType image/jpeg A604800
ExpiresByType image/png A604800
ExpiresByType image/x-icon A604800
ExpiresByType text/css A604800
ExpiresByType text/javascript A604800
ExpiresByType application/x-javascript A604800
ExpiresByType application/x-shockwave-flash A604800
</ifModule>

A604800は有効期限をアクセスした時から604800秒(1週間)後にするって意味です。

結果

.htaccessに上の2つを記述しただけでモバイルが73/100、PCが86/100になりました。結構良いスコアになったね。

「修正を考慮」という所に他の対処法も載っていて、その中で「サーバーの応答時間を短縮する」というのが気になりました。サーバが古いので遅いのは仕方ないとして、多分これはWordPressが重いせいだな。

実はWordPressのプラグインでキャッシュ系を幾つか試してみたんだけど、うちの環境ではうまく動かなかった。そんな訳でWordPress以外でも使える手法のみになっちゃいました。