趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • さくらのVPSにLAMP環境をインストール

    投稿日 2012年 8月 6日 コメントはありません

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

    そこで今回、一旦サーバをさくらの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
    #

    コメントをどうぞ(日本語のみ/Only in Japanese)

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