« 2014年01月 | メイン | 2014年09月 »

2014年07月 アーカイブ

2014年07月19日

某VPSへのセットアップおさらい1

 CentOS 6 x86_64 インストール直後から。

●rootでログイン、メイングループwheelとして管理用アカウント追加、パスワード設定、確認
# useradd -g wheel admin
# passwd admin
# id admin
●root になれるユーザを wheel グループのみに制限
# visudo
# %wheel  ALL=(ALL)       ALL
	↓先頭のコメントアウト#を除去
%wheel  ALL=(ALL)       ALL
以降 admin でログインしなおして作業。
●日本語メッセージを出力したいユーザー毎に
$ vi .bash_profile
で、末尾に
LANG="ja_JP.UTF-8"
export LANG
LC_CTYPE="ja_JP.UTF-8"
export LC_CTYPE
を追加。
●root のリモートログイン無効。SSH接続デフォルトポートを変更。
$ sudo mv /etc/ssh/sshd_config /etc/ssh/sshd_config.org
$ sudo cp /etc/ssh/sshd_config.org /etc/ssh/sshd_config
$ sudo vi /etc/ssh/sshd_config
変更箇所は
$ sudo diff /etc/ssh/sshd_config.org /etc/ssh/sshd_config
13c13
< #Port 22
---
> Port 10022
42c42
< #PermitRootLogin yes
---
> PermitRootLogin no
設定変更の適用
$ sudo /etc/rc.d/init.d/sshd reload
あるいは再起動
$ sudo /etc/rc.d/init.d/sshd restart
●root宛てメールをadminへ変更
$ sudo mv /etc/aliases /etc/aliases.org
$ sudo cp /etc/aliases.org /etc/aliases
$ sudo vi /etc/aliases
変更箇所は
$ sudo diff /etc/aliases.org /etc/aliases
96c96
< #root:		marc
---
> root:		admin
$ sudo newaliases
●OSアップデート
$ sudo yum clean all
$ sudo yum install yum-fastestmirror
$ sudo yum -y update
●logwatch
logwatch がインストールされているか確認
$ sudo yum list installed | grep logwatch
なければ logwatch をインストール Logwatch 7.3.6 (released 05/19/07)
$ yum info logwatch
$ sudo yum -y install logwatch
カスタマイズは以前と同様
●ログローテート
logrotate がインストールされているか確認
$ sudo yum list installed | grep logrotate
なければ logrotate をインストール
logrotate 3.7.8
$ yum info logrotate
$ sudo yum -y install logrotate
基本的なカスタマイズは以前と同様。ただし、ローテートするファイル履歴のデフォルトのサフィックスが連番から年月日へ変更されている。こちらの変更は後日。 ●ファイヤーウォール iptables がインストールされているか確認
$ sudo yum list | grep iptables
なければ iptables をインストール
iptables v1.4.7
$ yum info iptables
$ sudo yum -y install iptables
SSH接続、WEBサーバの接続を許可する設定
$ sudo vi /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
設定を反映
$ sudo service iptables restart
確認
$ sudo iptables -L
自動起動になっていなければ自動起動に変更
$ chkconfig --list | grep iptables
$ sudo chkconfig iptables on

2014年07月20日

某VPSへのセットアップおさらい2

 mysqlデータベースと連携したphp WEBアプリまで。

●WEBサーバー
apache がインストールされているか確認
$ sudo yum list installed | grep httpd
なければ apache をインストール
Server version: Apache/2.2.15 (Unix)
Server built: Apr 3 2014 23:56:16
$ yum info httpd
$ sudo yum -y install httpd
自動起動になっていなければ自動起動に変更
$ chkconfig --list | grep httpd
$ sudo chkconfig httpd on
apacheを起動してウェルカムページ確認
$ sudo service httpd start
http://IPアドレス/ ●apacheグループに所属させる
$ sudo usermod -G apache admin
$ id admin
●データベースサーバー
mysql-server がインストールされているか確認
$ sudo yum list installed | grep mysql-server
mysql Ver 14.14 Distrib 5.1.73 なければ mysql をインストール
$ yum info mysql-server
$ sudo yum -y install mysql-server
mysql-server を起動
$ sudo service mysqld start
初期化(パスワード・匿名ユーザー・サンプルデータベースの扱いなど)
$ sudo mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we'll need the current
password for the root user.  If you've just installed MySQL, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): (初めてならエンター)
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] Y
New password: *****************
Re-enter new password: *****************
Password updated successfully!
Reloading privilege tables..
 ... Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
	:
Remove anonymous users⁄ [Y/n] Y
	:
Disallow root login remotely⁄ [Y/n] Y
	:
Remove test database and access to it⁄ [Y/n] Y
	:
Reload privilege tables now⁄ [Y/n] Y
	:
日本語を使用する場合
sudo mv /etc/my.cnf /etc/my.cnf.org
sudo cp /etc/my.cnf.org /etc/my.cnf
sudo vi /etc/my.cnf
[mysqld]のブロックに最低限
[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
を追記してmysqlサーバ再起動
$ sudo service mysqld restart
自動起動になっていなければ自動起動に変更
$ chkconfig --list | grep mysql
$ sudo chkconfig mysqld on
mysql-server へログオン確認
$ mysql --show-warnings -u root -p
●php php エンジンがインストールされているか確認
$ sudo yum list installed | grep php
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies なければ php をインストール
$ sudo yum info php
$ sudo yum -y install php
php でマルチバイトストリング(日本語)を使えるか確認
$ sudo yum list installed | grep php-mbstring
なければ php-mbstring をインストール
$ yum info php-mbstring
$ sudo yum -y install php-mbstring
php から mysql を使用できるか確認
$ sudo yum list installed | grep php-mysql
なければ php-mysql をインストール
$ yum info php-mysql
$ sudo yum -y install php-mysql
確認用の phpファイルを作成
$ vi /var/www/html/info.php
$ cat /var/www/html/info.php
<?php
phpinfo();
?>
apacheを再起動
$ sudo service httpd restart
ここまで apache の設定ファイル httpd.conf はデフォルトのまま。
手元のブラウザで php の情報ページを確認。
http://IPアドレス/info.php
システム情報が表示されるので確認後 削除。
●phpライブラリpear
pear がインストールされているか確認
$ sudo yum list installed | grep php-pear
なければ pear をインストール
$ yum info php-pear
$ sudo yum -y install php-pear
pear バージョン確認
$ pear version
$ pear list
PEAR Version: 1.9.5 下記のエラー
$ sudo pear install -a ethna/ethna

Notice: Array to string conversion in PEAR/REST/13.php on line 80
PHP Notice:  Array to string conversion in /usr/share/pear/PEAR/REST/13.php on line 80

Warning: Invalid argument supplied for foreach() in PEAR/REST/13.php on line 84
PHP Warning:  Invalid argument supplied for foreach() in /usr/share/pear/PEAR/REST/13.php on line 84
PHP Fatal error:  Cannot use string offset as an array in /usr/share/pear/PEAR/REST/10.php on line 263
を解決するため
$ sudo pear clear-cache
pear アップグレード
$ sudo pear list-upgrades
$ sudo pear upgrade pear
●phpフレームワーク ethna ethna をインストール
$ sudo pear channel-discover pear.ethna.jp
$ sudo pear install -a ethna/ethna
ethna コマンド確認
$ ethna -v
Ethna 2.5.0 (using PHP 5.3.3)

●GDライブラリ
phpで画像の拡大・縮小をするためインストール
$ sudo yum list installed | grep php-gd
$ yum info php-gd
$ sudo yum -y install php-gd

2014年07月21日

某VPSへのセットアップおさらい3

●apacheでネームベースの仮想ホスト構築
配置
/var
└─www
    │ .htpasswd
    ├─cgi-bin
    ├─error
    ├─html
    ├─icons
    ├─virtual1
    │ ├─appli    WEBアプリケーション
    │ │
    │ ├─document ドキュメントルート
    │ │
    │ └─logs     アクセスログ、エラーログ
    │ 
    └─virtual2
       ├─appli    WEBアプリケーション
       │
       ├─document ドキュメントルート
       │
       └─logs     アクセスログ、エラーログ
ウェルカムページを全てコメントアウト
$ sudo vi /etc/httpd/conf.d/welcome.conf
トップページ作成
$ vi /var/www/virtual1/document/index.html
$ vi /var/www/virtual2/document/index.html
404エラーページ作成
$ vi /var/www/virtual1/document/404.html
$ vi /var/www/virtual2/document/404.html
apache 設定ファイル
$ sudo mv /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
$ sudo cp /etc/httpd/conf/httpd.conf.org /etc/httpd/conf/httpd.conf
$ sudo vi /etc/httpd/conf/httpd.conf
$ sudo diff /etc/httpd/conf/httpd.conf.org /etc/httpd/conf/httpd.conf
44c44
< ServerTokens OS
---
> ServerTokens ProductOnly
536c536
< ServerSignature On
---
> ServerSignature Off
759c759
< AddDefaultCharset UTF-8
---
> #AddDefaultCharset UTF-8
990c990
< #NameVirtualHost *:80
---
> NameVirtualHost *:80
1009a1010,1029
> <VirtualHost *:80>
> 	DocumentRoot /var/www/virtual1/document
> 	ServerName virtual1.mydmain.com
> 	ErrorLog /var/www/virtual1/logs/error_log
> 	CustomLog /var/www/virtual1/logs/access_log combined
> 	ErrorDocument 404 /404.html
> 	<Directory "/var/www/virtual1/document">
> 		AllowOverride All
> 	</Directory>
> </VirtualHost>
> <VirtualHost *:80>
> 	DocumentRoot /var/www/virtual2/document
> 	ServerName virtual2.mydmain.com
> 	ErrorLog /var/www/virtual2/logs/error_log
> 	CustomLog /var/www/virtual2/logs/access_log combined
> 	ErrorDocument 404 /404.html
> 	<Directory "/var/www/virtual2/document">
> 		AllowOverride All
> 	</Directory>
> </VirtualHost>
設定ファイルの文法チェック
$ sudo /usr/sbin/apachectl configtest
apacheを再起動
$ sudo service httpd restart
http://virtual1.mydmain.com/
http://virtual2.mydmain.com/

上記の設定は ".htaccess" で制御可能。
BASIC認証アカウントとパスワードの作成
htpasswd /var/www/.htpasswd "id"
認証制限したいパスに".htaccess"の作成
AuthType Basic
AuthName "Authentication required"
AuthUserFile /var/www/.htpasswd
Require valid-user

2014年07月22日

某VPSへのセットアップおさらい4

●WEBコンテンツ開発スタッフのアカウントはプライマリグループapacheで追加
$ sudo usermod -g apache user1
サブでwheelグループに所属させる場合に限り
$ sudo usermod -G wheel user1
以降のファイル生成時のパーミッションについて
-rw-r--r-- 1 user1 apache      0  7月 19 08:00 2014 sample.txt
 ↓
-rw-rw---- 1 user1 apache      0  7月 19 09:00 2014 sample.txt
のように他人・他グループユーザのファイルアクセスを禁止、同一グループのファイル書き込みを許可するなら
$ sudo vi /etc/profile.d/mybashrc.sh
if [ "`id -gn`" = "apache" ]; then
umask 0007
fi
-rw-r----- 1 user1 apache      0  7月 19 09:00 2014 sample.txt
のように他人・他グループユーザのファイルアクセスを禁止するだけなら
$ sudo vi /etc/profile.d/mybashrc.sh
if [ "`id -gn`" = "apache" ]; then
umask 0027
fi
デフォルトのumaskは
$ umask
0022
注意:上記umaskの apacheプライマリーグループのユーザーでは、pear の sudo インストールで失敗(file open error)する為 wheelプライマリーグループのユーザーで。

About 2014年07月

2014年07月にブログ「Remix.asia」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2014年01月です。

次のアーカイブは2014年09月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。