さくらVPS(さくらのVPS 512)を使う : さくらVPS

Pocket

本記事の主な内容

さくらVPSからのメールで得られる情報

  1. さくらVPSコントロールパネルURL
  2. IPアドレス : 192.0.2.0        ← 本記事では例として192.0.2.0とする。
  3. ユーザーrootのパスワード

サーバーOS起動

VPSコントロールパネル > VPSホームから起動する。

リモートコンソールでログイン

VPSコントロールパネル > リモートコンソールでログインする。

login: root
password: さくらVPSのメールに記載されたパスワード

ユーザーrootのパスワードはログイン後に変更する。ユーザーrootでコマンドを実行するときはコンソールの行頭が#で始まる。

rootのパスワード変更

# passwd
Changing password for user root.
New UNIX password:  ← 新しいパスワード
Retype new UNIX password:  ← パスワードの確認
passwd: all authentication tokens updated successfully.

ユーザーの追加・グループの設定

ユーザーの追加

一般ユーザーを追加する(本記事ではユーザーfooを追加)。

# useradd foo
# passwd foo
Changing Password for foo
new Password ← ユーザーfooのパスワードを設定

ユーザーfooでコマンドを実行するときはコンソールの行頭が$で始まる(#のときはユーザーrootが実行者)。

グループの設定

追加したユーザーfooにグループwheelを設定する。

# usermod -G wheel foo  

SSHの認証をパスワード認証から公開鍵・秘密鍵を使う認証へ変更

公開鍵・秘密鍵の作成

ユーザーfooで公開鍵・秘密鍵を作成する。作成した公開鍵はサーバに保存する。秘密鍵はローカルに保存する。パスワード認証を無効にして秘密鍵を持つクライアントの接続のみを可能にする。ユーザーrootでのSSHログインの禁止も後ほど設定する。

現在のユーザーがrootの場合はfooへ変更する。

# su foo

ユーザーfooで公開鍵・秘密鍵を作成する。

$ ssh-keygen -t rsa
Enter file in which to save the key (/home/foo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): ←任意のパスフレーズ(パスワード)を入力
Enter same passphrase again: ←パスフレーズ(パスワード)を確認

公開鍵のファイル名をid_rsa.pubからauthorized_keysへ変更する。

mv id_rsa.pub authorized_keys

.sshディレクトリのパーミッションを700に変更する[1]。authorized_keysファイルを600に変更する[2]

秘密鍵をローカルへ移動

秘密鍵(id_rsa)をローカル(~/.ssh)へ移動する。今回はFileZillaを使ってSFTPでダウンロードする。SFTP情報は下記の通り設定する。

ホスト名: 192.0.2.0
ポート: 22
ユーザー名: root
パスワード: rootのパスワード

ローカルに保存したid_rsaのパーミッションを600へ変更する[3]

サーバーのid_rsaを削除

# rm id_rsa

SSHのパスワード認証を無効化・ユーザーrootのログインを禁止・ポート番号変更

パスワード認証によるログインの無効化・ユーザーrootのSSHログインの無効化・SSHのport番号の変更を行うためサーバーのSSH設定ファイルを編集する。

SSHの設定ファイル /etc/ssh/sshd_config
# vi /etc/ssh/sshd_config
// ポート番号変更 任意の値(本記事では10022)。ウェルノウンポート番号以外がよい。
Port 10022
// rootでのログインを無効化 
PermitRootLogin no 
// パスワード認証を無効化 
PasswordAuthentication no   

SSHを再起動

# /etc/init.d/sshd restart

ローカルでSSHの接続を確認

ssh -p 10022 foo@192.0.2.0

Macはダイアログが表示されるので公開鍵を作成するさいに設定したパスフレーズを入力する。

[1],[2] Permission deniedというエラーでログインできなかったがパーミションを記事のように設定したらログインできた。
[3]パーミッションが644だと警告がでてログインできなかった。記事のように設定したらログインできた。

sudoを設定

ユーザーrootは権限が大きいので一般ユーザー(本記事はfoo)を追加した。一般ユーザーでは実行できないコマンドはsuでユーザーrootへ変更すれば実行できる。ただユーザーrootは権限が大きすぎるのでsudoを使う。

下記の記事を参考にさせていただき設定した。
» さくらのVPS を使いはじめる 2 – sudo と SSH ポート変更 | アカベコマイリ

$ mkdir example
mkdir: cannot create directory `example': Permission denied

sudoを使うとディレクトリを作成できる。作成したディレクトリ乃所有者、グループはユーザーrootになる。

$ sudo mkdir example
$ ls -l
drwxr-xr-x 2 root root 4096 Dec 31 12:00 example

iptable

iptableはインストールされていた。ユーザーfooでコマンドを実行できるようにパスを通す。ユーザーfooのホームディレクトリにあるbashの設定ファイル.bash_profileにパスを記載する。

$ vi .bash_profile
PATH=$PATH:$HOME/bin:/sbin:/usr/sbin:/usr/local/sbin
export PATH

設定後再ログインするかsourceコマンドを実行すると設定が反映される。

iptablesはファイアーウォールの設定を行う。外部からの接続を許可するポート番号を指定する。下記の記事を参考にさせていただき設定した。
» さくらのVPS を使いはじめる 3 – iptables を設定する | アカベコマイリ

Apacheのインストール

下記の記事を参考にさせていただき設定した。
» さくらのVPS を使いはじめる 4 – Apache のインストールと初期設定 | アカベコマイリ

自分用のメモ。

Apache設定ファイル

/etc/httpd/conf/httpd.conf

catはファイルの内容を表示する。下記はユーザーfooのbash設定ファイルの内容を表示する。

$ cat /home/foo/.bash_profile

/etc/passwdの内容でapacheとマッチする行を表示する。

$ cat /etc/passwd | grep apache

Apacheの再起動

# /etc/init.d/httpd restart

MySQLのインストール

MySQLのインストール状況を調べる

$ mysql -V

インストールされていない場合は下記の値が表示される。

-bash: mysql: command not found

MySQLのインストールは下記の記事を参考にさせていただき設定した。
» PHPとMySQLのバージョンを確認 | VPSで始めるホームページ制作
» PHP5.3系のためにリポジトリを更新 | VPSで始めるホームページ制作
» MySqlのインストール | VPSで始めるホームページ制作

MySQLの設定

MySQLの設定は下記の記事を参考にさせていただき設定した。
» さくらのVPS を使いはじめる 5 – MySQL のインストールと初期設定 | アカベコマイリ

MySQLの設定ファイル /etc/my.cnf
  • 文字コードの設定(UTF-8) MySQLの設定ファイルは/etc/my.cnfを編集。
  • MySQLを自動で起動するように設定。
    $ chkconfig --list mysqld
  • MySQLのrootユーザーにパスワードを設定
  • 不要なユーザーを削除。
  • 不要なデータベースを削除

PHPのインストール

バージョンを確認する。

$ php -v

インストールされていない場合は下記の値が表示される。

-bash: php: command not found

PHP・PHPのモジュールのインストールは下記の記事を参考にさせていただき設定した。
» PHPをインストール | VPSで始めるホームページ制作

このあとはPHP 5.3.8(2011.11.26)と記事のプラグインをインストールしてある前提とする。

追記(2011.12.07) モジュールの確認

インストールされているモジュールの確認。

$ php -m

PHPの設定(/etc/php.ini)

PHPの設定ファイル /etc/php.ini

設定変更の前に念のためphp.iniのバックアップをユーザーfooのホームディレクトリにコピーする。

$ cp /etc/php.ini ~/php.ini

設定の変更は主に文字コード関係の設定を行う。MySQL関連は設定を触っていない。以下行頭の数字はviに:set numberで表示した行数なので表示されない場合もある。

register_global

693 register_globals = Off

regiser_globalsはデフォルトでOffなのでそのまま。

文字コード関連

PHPの内部文字コードはUTF-8とする。外部からの入力はすべてコード内でmb_convert_encoding関数などで自身でUTF-8に変更する。出力もUTF-8で行う。その際header関数でContent-Type: text/html; charset=UTF-8を指定しHTMLのmeta要素に<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />を指定する。

以下行頭の数字はviの:set numberで表示した行数。

264 output_buffering = Off
773 ;default_charset = "UTF-8" この部分は必ずUTF-8で出力する場合はコメントアウトしなくても良いかもしれない
1595 mbstring.language = Japanese
1601 mbstring.internal_encoding = UTF-8
1605 mbstring.http_input = pass
     mbstring.http_output = pass
1618 mbstring.encoding_translation = Off
1628 mbstring.substitute_character = none
1623 mbstring.detect_order = eucJP-win,UTF-8,SJIS-win,jis

デフォルトで;mbstring.http_input = autoとコメントアウトしてあるので変更の必要はないかもしれない。
デフォルトで;mbstring.http_output = SJISとコメントアウトしてあるので変更の必要はないかもしれない。
mbstring.detect_orderはmb_convert_encoding関数などで変換まえの文字コードを判定する際の順序?

» PHPの文字化けを本気で解決する – ぎじゅっやさん
» http://php.net/manual/ja/mbstring.configuration.php

PHPからMySQLへ接続確認

MySQLにデータベースを作成して簡単なPHPで接続を確認する。

MySQLのテーブル構造

MySQLにexampleデータベースを作成して下記のような構造のtable1テーブルを作成する。

+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| field1 | varchar(64) | NO   | PRI | NULL    |       |
| field2 | varchar(64) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

PHP

viでmysql_connect.phpファイルを作成する。:set encoding=UTF-8で日本語を表示できるようにするとよい。header関数での文字コード指定やmeta要素でも文字コード指定は省略している。

<?php
// データベース接続情報
$url = "localhost";
$user = "root";
$password = "";
$database = "example";
// データベース接続処理
$connect = mysql_connect($url,$user,$password) or die("can't connect");
$db = mysql_select_db($database,$connect) or die("can't Select database");
$sql = "SELECT * FROM table1";
$result = mysql_query($sql, $connect) or die("can't submit SQL");
?>
<html>
<head>
    <title>Test Connection from PHP to MySQl</title>
</head>
<body>
<h1>テーブルの中身</h1>
<?php
    while ($row = mysql_fetch_assoc($result)) {
        echo "<p>";
        echo htmlspecialchars($row["field1"]);
        echo "<br />";
        echo htmlspecialchars($row["field2"]);
        echo '</p>';
    }
    mysql_free_result($result);
    mysql_close($connect) or die("can't closed");
?>
</body>
</html>

データベースの内容が表示されることを確認する。

バーチャルホストの設定

下記の記事を参考にさせていただき設定した。
» バーチャルホストを設定する | VPSで始めるホームページ制作
» httpd.conf の設定

Apacheの設定ファイル /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
<VirtualHost *:80>
    # ServerAdmin webmaster@imymemine.jp
    DocumentRoot /var/www/html/root/httpdocs
    ServerName 192.0.2.0
    ErrorLog logs/192.0.2.0-error_log
    CustomLog logs/192.0.2.0-access_log common
</VirtualHost>
<VirtualHost *:80>
    # ServerAdmin webmaster@example.com
    DocumentRoot /home/foo/vhosts/example.com/httpdocs
    ServerName example.com
    ErrorLog logs/example.com-error_log
    CustomLog logs/example.com-access_log common
</VirtualHost>

Directoryの設定追加。

<Directory "/home/foo/vhosts">
    Options FollowSymLinks
    AllowOverride All
     Order allow,deny
     Allow from all
</Directory>
# /etc/init.d/httpd restart

上記の設定で403 Forbiddenでexample.comにアクセスできなかった。fooディレクトリのパーミッションを700から755にしたら表示できた。httpdocsディレクトリのパーミッションだけでなくそれより上の階層のフォルダのパーミションも755の必要がある。

独自ドメインの設定

さくらで取得したドメインを設定。さくらインターネット 会員メニュー > ドメイン名一覧で目的のドメインのゾーン編集からIPアドレスを入力する。

WordPressのインストール

  • MySQLにWordPress用のデータベース(wordpress)を作成
  • 最新版のWordPressをダウンロード
  • インストール処理(wp-config.phpの作成〜インストール)

MySQLでWordPress用のDBを作成

$ mysql -u root -p
Enter Password ← MySQLのユーザーrootのパスワード
mysql $ CREATE DATABASE wordpress;

最新版のWordPressをダウンロード

WordPressの最新版(2011.11.30, 3.2.1)をダウンロードして展開する。

$ cd ~/foo/vhosts/example.com/httpdocs
$ wget http://ja.wordpress.org/wordpress-3.2.1-ja.zip
$ unzip http://ja.wordpress.org/wordpress-3.2.1-ja.zip

httpdocsにwordpressディレクトリが作成される。wordpress-3.2.1-ja.zipファイルは削除しておく。

rm wordpress-3.2.1-ja.zip

WordPressのインストール処理

example.com/wordpress/wp-login.phpにアクセスする。インストール画面が表示される。インストール情報を入力する。WordPressがwp-contentディレクトリにwp-config.phpファイルを作成可能であれば自動で作成する。作成できないときはwp-config.phpをコマンドから作成する。

ファイルの転送

SFTP

FileZillaを使ってSFTPでファイルを転送する。プロトコルはSFTPを選択する。ポート番号は変更したSSHポート番号を入力する。

SCP

Macのデスクトップのsample.txtファイルをサーバーのユーザーfooのホームディレクトリへ同名sample.txtで転送する。

$ scp -P 10022 /Users/*****/Desktop/sample.txt foo@192.0.2.0:~/sample.txt

Macのデスクトップのsampleディレクトリをサーバーのユーザーfooのホームディレクトリへ転送する。

$ scp -rP 10022 /Users/*****/Desktop/sample/ foo@192.0.2.0:~/

Unix関係の覚え書き

パス(PATH)を設定(通す)

mysqlコマンドが下記にインストールしてあるとする。

/usr/bin/mysql

/user/binのパスが設されていないときは以下のようにmysqlコマンドを実行する。

$ /usr/bin/mysql

/user/binのパスを設定するとmysqlコマンドを以下のように実行できる。

$ mysql

設定済みパスはechoコマンドで確認できる。

$ echo $PATH

パスの追加は下記のように行う。複数のパスを追加するときは:(コロン)で区切る。

$ PATH=$PATH:パス1:パス2
$ export PATH

コマンドのパスはwhichコマンドで調べることができる。

$ which mysql


<p>現在設定しているPATHを確認する。</p>
[shell]
$ echo $PATH

/usr/bin/mysql
[/shell]

Fedora

Fedora(フェドラ)は、レッドハットが支援するコミュニティー「Fedora Project」によって開発されている、RPM系Linuxディストリビューションである。バージョン6まではFedora Coreと呼ばれていた。特定のバージョンを指す場合は「Fedora 9」のように、バージョン番号を添えて呼ばれることもある。

» Fedora – Wikipedia

epel

Extra Packages for Enterprise Linux (EPEL)
» http://fedoraproject.org/wiki/EPEL

x86_64

「x86-64」という名称は、搭載プロセッサの正式リリースに伴って「AMD64」に変更された。その後、Intel社もAMD64互換の64ビット機能「Extension Memory 64 Technology」(EM64T)の提供を発表している。

» x86-64とは【AMD64】 – 意味/解説/説明/定義 : IT用語辞典

epelとremiの違い

epelとremiの違いがよく分からない

epel,remiリポジトリからyumリポジトリへ

# cd /etc/yum.repos.d
# wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
# wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

yumのリポジトリ(/etc/yum.repos.d)に配置したらそれらのファイルをインストールする[2]

# rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

yumで利用可能なパッケージを調べる

# yum list

yum(Yellowdog Updater Modified)

RPMパッケージを管理する[1]。リポジトリのパスは/etc/yum.repos.d。yumでよく利用するオプションを引用する。

install パッケージ名 指定したパッケージをインストール
list 利用可能なパッケージの一覧を表示
list installed インストール済みのパッケージ一覧を表示
list updates アップデート可能なパッケージの一覧を表示
remove パッケージ名 指定したパッケージをアンインストールする。指定したパッケージと依存関係があるパッケージは、削除するかどうか確認を求める

» @IT:yumコマンドでよく利用するコマンド

MySQLとPHPをインストール(必要なパッケージを含む)

下記の記事を参考にさせていただき設定した。
» PHPとMySQLのバージョンを確認 | VPSで始めるホームページ制作
» PHP5.3系のためにリポジトリを更新 | VPSで始めるホームページ制作
» MySqlのインストール | VPSで始めるホームページ制作

MySQL

# yum --enablerepo=remi,epel install mysql.x86_64 mysql-devel.x86_64 mysql-server.x86_64

PHP

# yum --enablerepo=remi,epel install php

PHPのパッケージをインストール。

# yum --enablerepo=remi,epel install php-mysql php-mbstring php-xml php-cli php-common php-devel php-gd php-mcrypt php-pdo php-eaccelerator

[1] rpm
RPM(RedHat Package Manager) RedHatが開発したパッケージ管理システムまたはそれを操作するコマンド。CentOsはパッケージ管理システムとしてyumを使用する。
[5] PHP, MySQLがインストールされるわけではない。remi-release-5.rpm, epel-release-5-4.noarch.rpmのインストール処理。

» さくらのVPS を使いはじめる | アカベコマイリ
» はじめに | VPSで始めるホームページ制作
» Getting Things Done! さくらVPSを契約したらまずやること ー SSHをよりセキュアにする(ポート変更、rootログイン禁止、鍵認証)
» myfinder’s blog: さくらのVPSを借りたら真っ先にやるべきssh設定

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。