さくらのVPSにLAMP環境をインストール

現在共有レンタルサーバで運用してきたこのブログですが、初めてレンタルサーバを使ってみたということもあって、ちょっといびつな構成になっていて、それを整理したいとずっと思っていました。

そこで今回、一旦サーバをさくらのVPSに移動してみようと思います。
(レンタルサーバはレンタルサーバで管理の手間がなくて便利なのですが、構成がおかしくなっているのでバックアップもまともにとれているかわからない・・・という状況なわけです。当方はたかが趣味のサイトとはいえ、ファーストサーバの一件もありましたし。)

で、WordPressをインストールするわけですが、それに先立って、LAMP環境を構築します。設定は「さくらインターネット創業日記」の「ウェブ開発者のための、1時間でできるLAMP環境構築術(CentOS編)」を参考にして行いました。(が、同じではありません。あれこれ弄っています。)

1.yumのレポジトリ追加

1)remiの追加

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
http://rpms.famillecollet.com/enterprise/remi-release-6.rpm を取得中
警告: /var/tmp/rpm-tmp.cxjLKg: ヘッダ V3 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
準備中... ########################################### [100%]
 1:remi-release ########################################### [100%]
#

2)RPMForgeの追加

# rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm を取得中
警告: /var/tmp/rpm-tmp.bc4mXG: ヘッダ V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
準備中... ########################################### [100%]
 1:rpmforge-release ########################################### [100%]
#

3) epelの追加

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm
http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm を取得中
警告: /var/tmp/rpm-tmp.DDqTKc: ヘッダ V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
準備中... ########################################### [100%]
パッケージ epel-release-6-7.noarch は既にインストールされています。
#

EPELはすでに追加されていました・・・。

2.パッケージのインストール

# yum --enablerepo=remi,epel,rpmforge install httpd-devel php-devel php-pear mysql-server phpmyadmin -y
Loaded plugins: downloadonly, fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
epel/metalink | 5.4 kB 00:00 
 * base: ftp.nara.wide.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.nara.wide.ad.jp
 * remi: remi-mirror.dedipower.com
 * rpmforge: mirror.fairway.ne.jp
 * updates: ftp.nara.wide.ad.jp
remi | 2.9 kB 00:00 
remi/primary_db | 278 kB 00:01 
rpmforge | 1.9 kB 00:00 
rpmforge/primary_db | 2.6 MB 00:03 
Setting up Install Process
Resolving Dependencies
--> Running transaction check
(途中略)
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package Arch Version Repository Size
================================================================================
Installing:
  :
Installing for dependencies:
  :
Updating for dependencies:
 mysql-libs i686 5.5.27-1.el6.remi remi 773 k

Transaction Summary
================================================================================
Install 22 Package(s)
Upgrade 1 Package(s)

Total download size: 40 M
Downloading Packages:
(1/23): apr-devel-1.3.9-5.el6_2.i686.rpm | 176 kB 00:00 
  : 
(23/23): phpmyadmin-2.11.11.3-2.el6.rf.noarch.rpm | 2.7 MB 00:04 
--------------------------------------------------------------------------------
Total 707 kB/s | 40 MB 00:57 
warning: rpmts_HdrFromFdno: Header V3 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Importing GPG key 0x00F97F56:
 Userid : Remi Collet <RPMS@FamilleCollet.com>
 Package: remi-release-6-1.el6.remi.noarch (installed)
 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
 Installing : php-common-5.3.15-1.el6.remi.i686 1/24

WARNING : These php-* RPM are not official Fedora/Redhat build and
overrides the official ones. Don't file bugs on Fedora Project nor Redhat.

Use dedicated forums http://forums.famillecollet.com/

Updating : mysql-libs-5.5.27-1.el6.remi.i686 2/24

WARNING : This MySQL RPM is not an official Fedora / Red Hat build and it
overrides the official one. Don't file bugs on Fedora Project nor Red Hat.
Use dedicated forums http://forums.famillecollet.com/

 Installing : php-cli-5.3.15-1.el6.remi.i686 3/24 
  : 
 Verifying : mysql-libs-5.1.61-4.el6.i686 24/24

Installed:
 httpd-devel.i686 0:2.2.15-15.el6.centos.1 
 mysql-server.i686 0:5.5.27-1.el6.remi 
 php-devel.i686 0:5.3.15-1.el6.remi 
 php-pear.noarch 1:1.9.4-7.el6.remi 
 phpmyadmin.noarch 0:2.11.11.3-2.el6.rf

Dependency Installed:
 apr-devel.i686 0:1.3.9-5.el6_2 apr-util-devel.i686 0:1.3.9-3.el6_0.1
 compat-mysql51.i686 0:5.1.54-1.el6.remi cyrus-sasl-devel.i686 0:2.1.23-13.el6
 db4-cxx.i686 0:4.7.25-17.el6 db4-devel.i686 0:4.7.25-17.el6 
 expat-devel.i686 0:2.0.1-11.el6_2 mysql.i686 0:5.5.27-1.el6.remi 
 openldap-devel.i686 0:2.4.23-26.el6 perl-DBD-MySQL.i686 0:4.013-3.el6 
 perl-DBI.i686 0:1.609-4.el6 php.i686 0:5.3.15-1.el6.remi 
 php-cli.i686 0:5.3.15-1.el6.remi php-common.i686 0:5.3.15-1.el6.remi 
 php-mbstring.i686 0:5.3.15-1.el6.remi php-mysql.i686 0:5.3.15-1.el6.remi 
 php-pdo.i686 0:5.3.15-1.el6.remi

Dependency Updated:
 mysql-libs.i686 0:5.5.27-1.el6.remi

Complete!
#

でLAMP環境が構築されます。

3.Apacheの設定と起動

/etc/httpd/conf/httpd.confを編集します

1)ロードモジュールの設定

#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule substitute_module modules/mod_substitute.so
#LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule version_module modules/mod_version.so

2) 無効にしたロードモジュールに合わせた編集

mod_autoindexを無効化しているので、/etc/httpd/conf/httpd.conf のIndexOptionsで始まる行をすべてコメントアウト(といっても、1行のみ)

# IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8

3)同時接続数の編集

デフォルトでは以下のようになっている。

<IfModule prefork.c>
 StartServers 8
 MinSpareServers 5
 MaxSpareServers 20
 ServerLimit 256
 MaxClients 256
 MaxRequestsPerChild 4000
 </IfModule>

これを、

<IfModule prefork.c>
 StartServers 5
 MinSpareServers 3
 MaxSpareServers 10
 ServerLimit 128
 MaxClients 20
 MaxRequestsPerChild 1000
 </IfModule>

とする。どうせそんなにリクエストこないし。

4)Apacheの起動

サービスを起動する。事前にFirewallの80番ポートを開けておく。

# service httpd start
httpd を起動中: [ <span style="color: #008000;">OK</span> ]

3.MySQLの設定と起動

1)MySQLの起動

# service mysqld start

2)初期設定

# /usr/bin/mysql_secure_installation
・・略・・
Enter current password for root (enter for none):<span style="color: #ff0000;"> ← デフォルトではパスワードが無いので、そのままリターン</span>
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] <span style="color: #ff0000;"> ← デフォルトYなのでそのままリターン</span>
New password: <span style="color: #ff0000;">← rootパスワードとして設定したい文字列を入力してリターン</span>
Re-enter new password: <span style="color: #ff0000;">← もう一度入力してリターン</span>
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] <span style="color: #ff0000;">← デフォルトYなのでそのままリターン</span>
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] <span style="color: #ff0000;">← デフォルトYなのでそのままリターン</span>
... Success!
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] <span style="color: #ff0000;">← デフォルトYなのでそのままリターン</span>
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] <span style="color: #ff0000;">← デフォルトYなのでそのままリターン</span>
... Success!
Cleaning up...

All done! If you've completed all of the above steps, your MySQL
installation should now be secure.
Thanks for using MySQL!

4.phpmyadminの設定

1)blowfish_secretの設定

/usr/share/phpmyadmin/config.inc.php を編集する。

$cfg['blowfish_secret'] = '適当な英数文字列'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

2)接続元IPアドレスの設定

/etc/httpd/conf.d/phpmyadmin.conf を編集する。

&lt;Directory "/usr/share/phpmyadmin"&gt;
 Order Deny,Allow
 Deny from all
 <span style="color: #ff0000;">Allow from localhost</span>
 Allow from 127.0.0.1
&lt;/Directory&gt;

設定はVPS上のfirefoxでやるので、localhost を追加する。

3)設定の再読み込み

# service httpd reload

4)phpmyadminを見てみる。

Firefoxで「http://localhost/phpmyadmin」をアクセスしてみると、「mcrypt 拡張をロードできません。php の設定を確認してください。」というメッセージが・・・。

# yum -y install php-mcrypt
# service httpd restart

で解決した。ユーザー名にroot、パスワードにMySQLで設定したパスワードを入力するとログインできた。

5.自動起動の設定

# chkconfig --list | grep -E "httpd|mysql"
httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# chkconfig httpd on
# chkconfig mysqld on
# chkconfig --list | grep -E "httpd|mysql"
httpd 0:off 1:off 2:on <span style="color: #ff0000;">3:on 4:on 5:on</span> 6:off
mysqld 0:off 1:off 2:on <span style="color: #ff0000;">3:on 4:on 5:on</span> 6:off
#

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)