VPSの構築をマスターする手順書 in ボクとサーバの2週間戦争。
このまとめは Programmer box の記事です
プログラマーボックスは主にPHP,CSS3,JavaScriptのコードを箱に詰め込み開発をお手伝いするwebな人の為の開発ブログです。
VPSの構築をマスターする手順書 in ボクとサーバの2週間戦争。
http://programmerbox.com/2013-12-24_vps_construct_procedure_manual/
突然ですが、Programmerboxのサーバを移行しました。移行にあたってどんなレンタルサーバが良いのか迷いましたが、お名前.comのVPS(KVM)に致しました。移行にする時のサーバ構築...
かなり前に書いた記事なのですが、programmerboxのシステムが古くて記事を更新するのが辛かったのでこの記事をSharetubeに移動いたしました。ちょこちょこと追記があって超便利なカンニングペーパーとなっております。
突然ですが、Programmerboxのサーバを移行しました。移行にあたってどんなレンタルサーバが良いのか迷いましたが、お名前.comのVPS(KVM)に致しました。移行にする時のサーバ構築にちょくちょくハマってしまいましたので次に構築する時にハマらないようにここに忘備録として手順と設定方法を書いていきたいと思います。
構築するサーバの目的
様々なサーバがあると思いますが、今回はWeb寄りのベーシックな構築を行いたいと思います。自分自身の要望としては
・前のサーバより多くのアクセスを捌けるようにしたい。
・バーチャルドメインで運用して行きたい。
・FTPでファイルを上げれるようにしたい。
・メールの送受信を行いたい。
・とにかく自由にサーバをいじりたい。
まぁ、こんなもんでしょうか。
やはり、自由にカスタマイズ出来るという点が魅力ですね、VPSは。
お名前.comのVPS(KVM)で構築する
VPSと言っても様々な企業が出していますが、今回はお名前.comのVPS(KVM)で構築致します。何処が良いかは個人個人違うと思いますので、自由に選ぶと良いかと思います。何故ならば何処も負けじと料金と性能の差が変わらなくなって来た為です。個人的にオススメなのはお名前.comか、さくらですね。
ドメイン取るならお名前.com|ドメイン取得 最安値 99円!
ドメインポータルサイト「お名前.com」は、登録実績1400万件を誇る国内最大級のドメイン公式登録サービスです。.com .net .jpドメインなど、510種類以上のドメイン取得が可能で、ドメインを活用できるサービスもご用意しています。
レンタルサーバー|さくらインターネット - 無料お試し実施中
格安プランからまるごと1台専有型プランまで幅広く選べるラインアップ。EC-CUBE、WordPress簡単インストール機能にも対応!
VPSとは?
バーチャル・プライベート・サーバ(仮想専用サーバ、英語:virtual private server、略称:VPS)とは、一台の物理的なサーバコンピュータ上で仮想的なサーバコンピュータを何台も起動する技術(仮想機械; Virtual Machine)によってつくられた仮想的なサーバコンピュータである。 VPSは、ホスティングサーバ(レンタルサーバ)事業者のサービスの一つとしても提供されている。これらのサービスは、上記の技術を用いることで、管理者権限が付与される自由度の高い専用サーバを、従来的な専用サーバよりも大幅に安い価格で契約者に提供することを可能にしている。VPS(仮想専用サーバ)は、物理的なサーバを一台占有する「専用サーバ」に比べて処理能力は劣るものの、構成の自由度は専用サーバとほぼ変わらない
VPS(kvm)メモリ2GBプランの性能を試してみました
プラン別の性能はこちらです。
メモリ 1GBプラン | メモリ 2GBプラン | メモリ 4GBプラン | メモリ 8GBプラン | メモリ 16GBプラン | |
---|---|---|---|---|---|
初期費用 | 無料 | 現在は0円 | 5,680円 | 9,681円 | 16,680円 |
月額費用 (1ヶ月払い) | 940円 | 1,380円 | 3,880円 | 7,880円 | 15,880円 |
年額費用 (1ヶ月あたり) | 9,999円 (833円/月) | 13,846円 (1,153円/月) | 38,918円 (3,243円/月) | 79,027円 (6,585円/月) | 159,248円 (13,271円/月) |
CPU | 2コア | 3コア | 4コア | 6コア | 10コア |
メモリ | 1GB | 2GB | 4GB | 8GB | 16GB |
HDD | 100GB | 200GB | 400GB | 800GB | 1TB |
お試しサービス | 15日間無料 |
1秒で同時に捌ける限界がアベレージ73アクセスでしたので、ギリギリの同時アクセス70で350接続の結果。
理論上1日で捌けるアクセス数は518万アクセスですが、サーバは色んな仕事をしますので実際は300万アクセスくらいでしょうか。集中アクセスに耐えられるのは1分間で4,000くらいですね。
追記 2017年07月26日2015年頃に書いた自分を恨みたいです。ど恥ずかしい事書いてありますね。
動的のシステムによりけりですが、2GBでは同時接続(ここで言う同時接続はアナリティクスを指標にしましょう)70接続がいいところでしょう。
1分間で割ると1秒に1アクセスくらいです。
計算上1日のアクセス上限は100,800です。
そして、そもそもユーザーは一気にくるものです。バズや大きいメディアやテレビで紹介された時を想像するといいでしょう。平均を計算しても全く意味がありません。
平常時のピークタイムで35%くらいのパワーで回せている状況でないと想定外のアクセスが来た時に対応できません。と言うかサーバー落ちます。
落ちるとどうなるかと言うと接続していたユーザーを逃すばかりか、これから入ってこようとしたユーザーも逃します。
なので、最近では複数台のVPSで構成して運営しています。
クラウドは1000万PVに到達したら移行したいと考えています。
OSはCent OS 6.2 (64bit)で構築します
デフォルトOSですし、一番情報が出回っていますので構築しやすいです。
お名前のVPS(KVM)が揃えてくれているOS一覧。
CentOS 5.9,6.2,6.3,6.4 | (32bit/64bit) |
---|---|
Debian GNU/Linux 6.0,7.0 | (32bit/64bit) |
Fedora 17.18 | (32bit/64bit) |
FreeBSD 9.1,9.2 | (32bit/64bit) |
Ubuntu 12.04LTS 12.10,13.04 | (32bit/64bit) |
Scientific Linux 6.2,6.3 | (32bit/64bit) |
Arch Linux 2011.08.19 | (32bit/64bit) |
便利なコマンド集
黒い画面で便利したい時。
// 自動起動するサーバ確認chkconfig --list
// postfixの設定に対して検索が出来る 設定多めのメールサーバなので重宝する
postconf
// ログを常時表示 メールサーバ構築する時に重宝する
tail -f /var/log/maillog
// サービスの現在のステータスを調べるコマンド サーバが現在どんな状況なのかを確認したい時
service --status-all
// シャットダウンして再起動
shutdown -r now
追記 バッチファイル(シェルスクリプト)の作成と実行
一つ一つコマンドを実行してVPSを作成するのは大変なので、実行したいコマンドを並べたファイルを作成してshコマンドで自動実行いたしましょう。
バッチファイル作成
vi xxx.sh
中身は実行したいコマンドを並べる
以上でシェルスクリプトが動きます。完全に決まりきったコマンドを実行させたいときに便利ですね。
SSHで接続出来るようにする
サーバをレンタルしてから一番初めに設定しなくてはならないのがsshで接続する設定ですね。お名前VPS(KVM)は鍵認証のみ許可していますので、お名前のコントロールパネルにログインしましょう。ログインしましたら、SSH Key Pairをダウンロードして下さい。
その次にターミナル or コマンドプロンプトを開いて
ls -a
と、叩いて、.sshがあるかどうかを探して下さい。ある人はそのままで
.sshがなかった人は.sshを作りパーミッションの変更を。
mkdir .sshchmod 700 .ssh
ディレクトリを作成しましたら.sshの中に先ほどダウンロードしたvpsxxxxxxxxx-xxx.keyというファイルを移動しましょう。
mv ~/Downloads/vpsxxxxxxxxx-xxx.key(ダウンロードしてきたファイル) ~/.ssh/
移動させましたら次はsshのショートカットを作成致します。.sshに移動してvimでconfigというファイルを作成しましょう。
cd .sshvi config
vimが起動しますので以下の記述を自分の設定に書き換えて保存して下さい。
Host sshのショートカット名
HostName xxx.x.xxx.xxx
サーバのIPアドレス
Port 22
接続するポート番号
User root
VPSサーバのユーザー名
IdentityFile ~/.ssh/vpsxxxxxxxxx-xxx.key
さっき移動したkey
これでsshのショートカットが完成しましたのでsshで接続してみましょう。
ssh
無事、接続が出来ましたらここの章は終了です。接続出来なかった場合はもう一度設定するipアドレスや鍵がちゃんと合っているか見直してみましょう。
開発環境を整える
sshでサーバに接続出来きましたので早速サーバ構築に行きたい所ですが、VPS(KVM)は殆ど何も入っていない状態ですので、ローカルで当たり前に使っていたコマンドが使えません。やはり、いつも使っているコマンドは使いたいですので、yumをアップデートしたり、便利なコマンドをインストールしましょう。
yum関連
はじめにyumをアップデート。
yum update
アップデートが完了しましたら、次はyumのグループリストを確認して開発者ツールなるものをインストール。
yum grouplistyum groupinstall "Development tools"
便利なコマンドをインストールする
ここで良く使うコマンドをインストールしましょう。
yum install wgetyum install man
yum install cyrus*
yum install mail
yum install telnet
yum install tree
パケットフィルタリングの設定をする
ファイヤーウォール設定ですね、使用するポートだけを許可するようにしました。ここでファイヤーウォールの設定を一気に済ませとけば、各サーバを構築する時にiptablesを設定している時の開き忘れを防げます。
//-----୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧------//ファイヤーウォール設定
//
-----୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧------// 現在の設定の確認
iptables -L
// FORWARDは使わない
iptables -P FORWARD DROP
// まずは全許可に
iptables -P INPUT ACCEPT
// デフォルトのルールを全て削除
iptables -F
// 自分自身からのパケットは全許可
iptables -A INPUT -i lo -j ACCEPT
// SSH許可 or SSH自分(255.255.255.255)だけ許可
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
or
iptables -A INPUT -s 255.255.255.255 -p tcp --dport 22 -j ACCEPT
// FTPの接続を許可
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 60000:60030 -j ACCEPT
// FTPSの接続の許可
iptables -A INPUT -p tcp --dport 990 -j ACCEPT
iptables -A INPUT -p tcp --dport 989 -j ACCEPT
iptables -A INPUT -p tcp --dport 50021:50040 -j ACCEPT
// SMTP(送信メール)の許可
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
// DNS関係
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
// http, https の接続を許可
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
// POP(受信メール)の許可
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
// NTPサーバの通信許可
iptables -A INPUT -p tcp --dport 123 -j ACCEPT
// SUBMISSION ポートを開放
iptables -A INPUT -p tcp --dport 587 -j ACCEPT
// imaps
iptables -A INPUT -p tcp --dport 993 -j ACCEPT
// pop3s
iptables -A INPUT -p tcp --dport 995 -j ACCEPT
// PINGを許可
iptables -A INPUT -p icmp -j ACCEPT
// TCPの接続開始と応答、FTPデータなどを許可
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
// 設定したルール以外のパケットを拒否
iptables -P INPUT DROP
// 設定セーブ
service iptables save
// iptables再起動
service iptables restart
DNS設定
DNS設定に関しては様々なサービスでやり方が異なるのでそのサービスのやり方をググったりしながら設定をしましょう。この設定が一番大事ですので、必ず設定して下さい。ここではお名前.comのVPS(KVM)を借りている事を想定して説明させて頂きます。
まず、お名前.comのドメインNaviにログインして頂き
ドメイン設定のタブをクリックして下さい。
選択しましたら
次はネームサーバーの設定の中にあるネームサーバの変更をクリックして下さい。
変更するドメインにチェックを入れましたら、下の方にあるVPS(KVM)設定するをクリック。
次は確認画面ですのでもう一度設定するをクリックしますとネームサーバの移行が始まります。
ネームサーバの移行は時間がかかりますので一番最初にやっておくと良いかもしれません。 移行が完了しますとお名前.comからメールが送られて来ますので、その完了メールを受信してからようやくDNS関連の設定が出来るようになります。
先ほど同じようにドメイン設定のタブをクリックしてネームサーバ変更の所にある、DNS関連機能の設定をクリックすると画面が変わりましたらDNSレコード設定を利用するを選択し、変更したいドメインを選んで頂き入力画面に進みましょう。
指定なし、imap、mail、pop、smtpの五つは最低限必要な設定ですのでやっておきましょう。必要ならばwwwも追加しておくと良いかもしれません。最終的にはこんな感じになっていれば大丈夫です。
これでドメインNaviの設定は終わり、次はサーバーNaviのDNS逆引き設定を行いましょう。この設定は簡単でサーバーNaviにログインして、借りているVPSのコントロールパネルにログインするとDNS逆引き設定するところがありますのでDNS設定を行ったドメインを登録して下さい。
FTPサーバ構築
一番初めにFTPサーバを構築していきたいと思います。最初に入れておけば面倒なconf関連の編集がVimではなくお気に入りのエディタで出来るようになりますので、ボクは最初に入れるようにしています。
vsftpdインストール
では、yumでFTPサーバをインストールしてみましょう。
yum install vsftpd
Complete致しましたらサーバを再起動した時に自動で起動するようにしておきましょう。
chkconfig vsftpd on
vsftpdの設定
終わりましたらconfを編集します。
vi /etc/vsftpd/vsftpd.conf
vsFTPdの設定まず、初期状態では匿名による接続を許可していますので、これを許可しないようにしましょう。
anonymous_enable=YES
↓
anonymous_enable=NO
変更。
アスキーモードでのアップロードを許可
アスキーモードでのダウンロードを許可
この設定をしとかないとFTPソフトで同期などの機能が全く使えなくなります。
↓ascii_upload_enable=YES
ascii_download_enable=YES
次に、ファイルのタイムスタンプにローカル時間(日本時間)を使用するようにします。
最後尾に、
use_localtime=YESを追加。
そして、データのやりとりで使用するPASVモードで使用するポートの範囲を指定します。
pasv_min_port=60000
pasv_max_port=60030
の2行をさらに追加。
このままの状態ですと、rootで接続出来ませんのでもう2ファイルの設定も変更しましょう。user_listとftpusersのファイルにrootと記述されている所をコメントアウトするだけです。
vi /etc/vsftpd/user_listvi /etc/vsftpd/ftpusers
root↓
root
編集が終わりましたらvftpdを再起動させましょう。
service vsftpd restart
これで無事に設定は終了しましたので、FTPソフトの設定は各自設定して下さい。
追記 FTPアカウント毎にホームディレクトリの設定
FTPに接続するユーザごとにホームディレクトリを指定し、上位階層へのアクセスを拒否する設定しなければならない場面は多いと思いますので、追記にて書かせて頂きます。なお、FTPで設定する内容を全て終わらせている事を前提にし、ユーザー作成に関しても下の章(13-2)にて説明しているので省かせて頂きます。
1. user_conf ディレクトリを作成して、各ユーザーの設定を記述する
vsftpd に移動します。
cd /etc/vsftpd/
移動しましたら、user_conf を作ります。
mkdir user_conf
その中に、詳細設定したいユーザー名のファイルを作ります。
vi /etc/vsftpd/user_conf/hoge
次にそのユーザーのルートを決める記述をします。
local_root=/home/foo/hoge
通常ならこれだけで設定は完了なのですが、chroot_listの設定をしていなかったので反映されません。と言うことで次はchroot_listの設定をしていきます。
2. vsftpd.conf で chroot_list系の設定を変更する
設定を変更する為にvimでファイルを開きましょう
vi /etc/vsftpd/vsftpd.conf
多分でコメントアウトされていると思いますので削除して設定を反映させましょう。検索してもなかったら一番下に記述してください。
chroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_list
3. chroot_listの設定をする
chroot_listファイルを編集するためにvimを。
vi chroot_list
上位階層へのアクセスを拒否したいユーザー名を記述して保存しましょう。
hoge
これで設定の方は完了です、最期にリスタートをして
service vsftpd restart
FTPソフトで確認を。
追記 FTPをFTPSに変更するレシピ
FTP の通信経路を暗号化して、ファイル転送をより安全に行うためにFTPSにしたいと思います。
FTPSとは?
FTPS (File Transfer Protocol over SSL/TLS) というのは、FTP を SSL/TSL に乗せることでファイル転送を暗号化します。FTP 単体ではセキュリティー面の不安が残りますし、これからファイル転送の環境を用意するのであれば、こういった暗号化を盛り込んだ方法を選んでおきたいものです。
という事でこの記事を参考にさせていただき追記をしていきます。まずはetc/pki/tls/certsに移動して vsftpd.pem という名の電子証明書を作成しましょう。
cd /etc/pki/tls/certs/
make vsftpd.pem
いくつか尋ねられますが、適当で大丈夫です。電子証明書が作成できたら、続いて vsftpd の設定です。
FTPS を利用できるようにするには "/etc/vsftpd/vsftpd.conf" 内で、次の項目を設定して行きましょう。
vi /etc/vsftpd/vsftpd.conf
一番下の方にこれを追記する
pasv_min_port=50021
pasv_max_port=50040
電子証明書の場所など
ssl_enable=YES
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem
force_local_logins_ssl=YES
force_local_data_ssl=YES
allow_anon_ssl=NO
ここからパッシブの設定を追記
pasv_address=サーバーのアドレス(例 155.5.555.555
pasv_enable=YES
implicit_ssl=YES
listen_port=990
設定が終わったらもう一度リスタートを行いましょう。
service vsftpd restart
これでFTPからFTPSになりました。FTPソフトでもFTPSを指定して初回だけ許可していない電子証明書を許可してください。
webサーバ構築
web開発者にとって必須のサーバですね、構築もそこまで難しくありませんが、バーチャルホストのconfの書く所がググった記事ではバラバラでしたので、そこだけ気をつければ後は問題なく構築出来るような気がします。
Apacheインストール
俗にいうApacheをインストールします。
yum install httpd
Apacheの設定
インストールしましたら早速confをいじりましょう。
vi /etc/httpd/conf/httpd.conf
ServerAdmin サーバー管理者のメールアドレスを記載します。
ServerName
DNSで設定したサーバー名とポート番号を記載します。
(例)ServerName programmerbox.com:80
DocumentRoot
ウェブコンテンツを保存する場所を記載します。
バーチャルホストを使わない方もいるかもしれませんので、デフォルトのポイントとしてちゃんと記述しておきます。
ここはDocumentRootと同じディレクトリパスに変更。
のパスを直したら、その中にあるAllowOverride None を
↓
AllowOverride All に変更しましょう。これで.htaccessが有効になります。
設定が終わりましたら、自動起動onとhttpdをスタートしましょう。
chkconfig httpd onservice httpd start
スタートしましたら生IP(http://xxx.x.xxx.xxx/)とドメインを叩いて表示されるかどうか確認をしてみて下さい。無事Apache 2 Test Pageと表示されましたらちゃんと動いています。
バーチャルホストの設定
一つのサーバで複数のドメインを運用したい時はバーチャルホストを設定しますと出来るようになるのでオススメです。なお、設定する前に追加するドメインのDNSを忘れずにしておいて下さい。
vi /etc/httpd/conf/httpd.conf
一番下から20行目あたりに *:80がありますので、コメントを外して
NameVirtualHost *:80
と、します。これだけでバーチャルホストとして
読んでくれるようになるので、後はhttpd-vhosts.confの中で各ドメインの設定をします。
最後にhttpd-vhosts.confというファイルをインクルードするように末行に
追加
include /etc/httpd/conf/httpd-vhosts.conf
を、追加して保存。
保存が終わりましたら、インクルードさせるhttpd-vhosts.confを作成しましょう。
vi /etc/httpd/conf/httpd-vhosts.conf
設定はこんな感じで、設定したいドメインとドキュメントルートを設定してください。logに関してはコメントアウトしても大丈夫です。aaa.comの場合
ServerAdmin aaa@aaa.com
DocumentRoot /var/www/vhosts/aaa.com/httpdocs
ServerName aaa.com
ErrorLog /var/www/vhosts/aaa.com/error_log
CustomLog /var/www/vhosts/aaa.com/access_log common
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
bbb.comの場合
ServerAdmin bbb@bbb.com
DocumentRoot /var/www/vhosts/bbb.com/httpdocs
ServerName bbb.com
ErrorLog /var/www/vhosts/bbb.com/error_log
CustomLog /var/www/vhosts/bbb.com/access_log common
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
ドメインを追加したら随時手動でフォルダを作成して下さい。
フォルダ構成はこんな感じがオススメです。
www
├── cgi-bin
├── error
│ ├...
│ ...
├── html(デフォルトのドキュメントルートはここですね。)
├── icons
│ ├...
│ ... この階層をドメイン名にしてプライマリーな感じで増やしていく。
└── vhosts ↓
└── aaa.com
├── access_log
├── app
├── error_log
└── httpdocs
フレームワーク等を導入した時にappに切り替えたり出来たりすると思いますので便利です。
これでwebサーバ構築の章は最小限の設定でしたが、これで終わりにさせて頂きます。
追記 apacheでメモリリークしないようにするチューニング
追記 2017年07月27日webサーバー+DBサーバーに構成を変えてもまだwebサーバーの方がスワップを使ってしまう現象が起きてしまっていたので色々な原因があるのですが、まず一番疑わしいのはapacheの設定です。
という事で再度、チューニングを行ってみました。
Apacheに割り当て可能なメモリ量を調べる
Apacheが使用しているメモリ総量はこれ↓で計算。
// Apacheに割り当て可能なメモリ量を調べるps aux
grep [h]ttpd grep [a]pache
ps aux grep [h]ttpd grep [a]pache
Apacheの最大子プロセス数 : P = (Apacheに割り当て可能なメモリ量) / (Apacheの子プロセスあたりの平均メモリ使用量)
このPを
ServerLimit
MaxClients
に割り当てればメモリリークしない計算となります。
Apacheの設定変更
それでは計算した値を割り当てるためにhttpd.confを編集していきます。
vi /etc/httpd/conf/httpd.conf
設定する値
StartServers P×5/256
MinSpareServers P×5/256
MaxSpareServers P×10/256
ServerLimit P
MaxClients P
MaxRequestsPerChild 1000
設定が完了いたしましたら、リスタートをしましょう。
service httpd restart
apacheでメモリリークしないようにするチューニング - わーくあうと!
http://nick.hateblo.jp/entry/2013/06/11/090643
今日のことなんですが、運用しているWebサービスに集中したアクセスがあって繋がりづらい自体に陥ってしまいました(SSHすらも) psコマンドで確認したところhttpdプロセスがメモリをもりもり使っててメモリリーク(メモリリークとは違うけど、まあ今回はそう呼ぶ)していたようで、これはよくないとApacheのチューニングを行ったのでその内容を記事にしておきます。 なにをしたか httpdプロセスが立ち上がりすぎてメモリが溢れないよう、立ち上がるプロセス量を調整しました。 ↓この記事を参考にチューニングしました。 ・Apacheをデフォルト設定のままで使っていませんか? Apacheに割り当て可能な…
dbサーバ構築
次はdbサーバを構築していきます。webサービスには必須のサーバですので、ちゃんと設定をこなしていきましょう。mysql、mysql-server、mysql-develをインストールして自動起動onにしてスタート。
// 記事アップ時点ではこっちでしたが・・・yum install mysql
yum install mysql-server
yum install mysql-devel
// 追記 2016.03.02時点ではこっちでインストール
yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum install mysql mysql-devel mysql-server mysql-utilities
chkconfig mysqld on
service mysqld start
スタートさせたら最初はパスワードが設定されていないのでmysqlに接続してからクエリを投げてパスワードを設定する。
// 1.rootで入るmysql -uroot
// 2.パスワードを設定するクエリを投げる
set PASSWORD for root@localhost = PASSWORD("root");
// 3.mysqlをログアウトする
exit
ログアウトしたら先ほど登録したパスワードでmysqlにログインしてみる。
mysql -uroot -proot
exit
追記厳格な設定(STRICTモード)になっているMySQLの設定を変更する
vi /etc/my.cnf
sql-mode=の記述を
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
にする
service mysqld restart
ここら辺はすんなりいくと思いますので、これでdbサーバ構築の章は終わります。
追記 外部DBサーバーへ接続する方法
2017年07月26日にSharetubeは単一のサーバー構成からWebサーバー+DBサーバーの構成に変更いたしました。
その時も恒例で2時間くらいハマってしまったので忘備録として記述いたします。
リモート側の設定(操作される方)
では、外部のDBサーバーと接続するためにまずはリモート側(外部)の設定を行います。my.cnfのbind-address設定
まず初めに bind-address の設定をチェックしてみましょう。お名前VPSでのデフォルト設定では何も設定されていなかったのですが、一応。
vi /etc/my.cnf
// 接続できるipを設定 特に設定していない場合はすべてのipから接続可能になる
bind-address = xxx.x.xxx.xxx
service mysqld restart
ポートの確認
デフォルトではMySQLがTCPポート3306番でListenしているので、ポートが開いているか確認。
netstat -tlpn
0.0.0.0:3306 ~ LISTEN xxxx/mysqld の表示があればOK。
ファイアーウォール設定
お名前.comのVPSではmysqlを外部サーバーに接続できるようになっていませんのでここでもう一度iptablesの設定を行います。
// MySQLへの外部アクセスを許可iptables -I INPUT 6 -m state --state NEW -p tcp --dport 3306 -j ACCEPT
// 設定セーブ
service iptables save
// iptables再起動
service iptables restart
[ローカル・リモート]外部から接続できるようにmysqlの中でユーザー設定を行う
上記の設定でようやく接続ができる環境ができました。ここからは実際に接続するコマンドを説明していきます。接続される側のip例(リモート側)
111.111.111.111
接続する側のip例(ローカル側)
222.222.222.222
接続される側の設定
接続される側のip例
111.111.111.111側の設定方法
接続
mysql -u[ユーザー名] -p
mysql> SELECT user,host FROM mysql.user;+
-----୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧-------+-----୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧-------+ user host
+-----୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧-------+-----୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧-------+ root 127.0.0.1 root ::1 root localhost
+-----୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧-------+-----୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧----------୨୧-----୨୧-----୨୧-------+
設定は大まかに2種類あります。
外部ホストからの権限を付与
これは接続するipとデータベース名を特定しての接続設定
grant all privileges on [データベース名].
- to [登録するユーザー名]@"[接続するip]" identified by "[パスワード]" with grant option;
この設定はユーザー名とパスワードだけを設定してどのipでも接続できる設定
grant all privileges on . to [登録するユーザー名]@"%" identified by "[パスワード]" with grant option;
権限変更を反映
flush privileges;
リスタート
service mysqld restart
接続する側の設定
接続する側のip例
222.222.222.222側の設定方法
外部サーバーのMySQLへ接続
mysql -h111.111.111.111 -u[設定したユーザー名] -p
注意して欲しいのが -p の後にパスワードを記述しないこと。
記述するとエラーになります。
外部DBサーバーへ接続する方法 あとがき
意外と外部DBサーバーへ接続するだけでも大変ですね。webサーバーと切り離せたことでサーバーへの圧迫は格段に減ったのではないでしょうか?注意する点と言えば、web・appサーバーとDBサーバーの物理的な距離に注意しましょう。webサーバーが日本でDBサーバーがアメリカにあったのでは切り離すデメリットの方が優ってしまいかねません。
PHPインストール
特にPHPじゃなきゃいけない訳ではないのですが、個人的にFuelPHPというフレームワークを利用したくてPHPを入れてみる事にしました。それ以外にもPHPは簡単な記述で動きますので軽い感じの事をしたい時は便利です。yumでlistを確認してみると管理しているPHPは現時点(2013.12.20)で5.3.3でした。
yum list PHP*
折角なので、もっと新しいバージョンをインストールしてみましょう。remi(Les RPM de Remi - Repository)のrpmパッケージを使います。
rpm --import http://vault.centos.org/RPM-GPG-KEY-CentOS-7rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
// remi リポジトリ追加yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
追加しましたら確認してみましょう。
yum list --enablerepo=remi --enablerepo=remi-php73
これでphpのバージョンが5.6.30になりました。
追記 2017年05月11日
これでphpのバージョンが7.3になりました。
追記 2020年06月30日
それではインストールしたいパッケージを選んで一気にインストールしてみましょう。
// 今回インストールするパッケージ// php、php-devel、php-mbstring、php-mcrypt、php-mysql
// php-phpunit-PHPUnit、php-pecl-xdebug、php-gd
// インストール
yum install --enablerepo=remi --enablerepo=remi-php73 php php-devel php-mbstring php-mcrypt php-mysql php-phpunit-PHPUnit php-pecl-xdebug php-gd
インストールが終わりましたらPHPのバージョンを確認してみましょう。
php --version
無事に5.5.75.6.307.3.xになっていると思います。これで新しい機能をガシガシ使えるようになりました。
php.iniの設定
このままのphp.iniの設定だと使いづらいと思いますので、ボクなりのセッティングしたところを載せときますので参考にして編集して下さい。
-/">-----୨୧-----୨୧-----୨୧------
PHPが扱うメモリ
memory_limit = 128M
↓
memory_limit = 512M
406行目あたり
エラーレベル
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
↓
error_reporting = E_ALL
462行目あたり
エラー表示
display_errors = Off
↓
display_errors = Off(ローカルならOnで本番環境ならOff)
479行目あたり
諸々の送信出来るサイズ
post_max_size = 8M
↓
post_max_size = 128M
673行目あたり
デフォルト文字コード
;default_charset = "UTF-8"
↓
default_charset = "UTF-8"
693行目あたり
アップロード出来るサイズ
upload_max_filesize = 2M
↓
upload_max_filesize = 64M
805行目あたり
場所(FuelPHPを導入する時にこれを設定していないとFuelPHPインストールする時点でエラーになる。)
;date.timezone =
↓
date.timezone = "Asia/Tokyo"
883行目あたり