タグ : CentOS

[CentOS] バージョンや 32bit, 64bit などの確認コマンド

CentOS のバージョンや 32bit, 64bit などを確認するコマンドをご紹介します。

CentOS のバージョンを確認するコマンド

cat /etc/redhat-release
CentOS release 6.4 (Final)

アーキテクチャ(32bit, 64bit)を確認するコマンド

arch
# 64bitの場合
X86_64
 
# 32bitの場合
i686

CentOS 6.3 (さくらVPS) に Nginx + php-fpm + MySQL の WordPress 環境を構築する手順

さくら VPS – CentOS6.3 に Nginx + php-fpm + MySQL で WordPress 環境を構築する手順をご紹介します。

Nginx のインストール

Nginx リポジトリを登録

# vim /etc/yum.repos.d/nginx.repo
 
[nginx]
name=nginx
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=0

インストール可能な Nginx のバージョン確認

# yum info --enablerepo=nginx nginx

Nginx のインストール

# yum -y install --enablerepo=nginx nginx

Nginx が正常にインストールされたことを確認

# nginx -v
nginx version: nginx/1.4.2

Nginx の各種設定

# vim /etc/nginx/nginx.conf
user  nginx;
worker_processes  2;
 
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile        on;
    #tcp_nopush     on;
 
    keepalive_timeout  65;
 
    # gzip
    gzip  on;
    gzip_http_version 1.0;
    gzip_vary         on;
    gzip_comp_level   6;
    gzip_types        text/xml text/css application/xhtml+xml application/xml application/rss+xml application/atom_xml application/x-javascript application/x-httpd-php;
    gzip_disable      "MSIE [1-6]\.";
 
    # reverse proxy
    proxy_cache_path  /var/cache/nginx levels=1:2 keys_zone=czone:4m max_size=50m inactive=120m;
    proxy_temp_path   /var/tmp/nginx;
    proxy_cache_key   "$scheme://$host$request_uri";
    proxy_set_header  Host               $host;
    proxy_set_header  X-Real-IP          $remote_addr;
    proxy_set_header  X-Forwarded-Host   $host;
    proxy_set_header  X-Forwarded-Server $host;
    proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;
 
    upstream backend {
        ip_hash;
        server 127.0.0.1:8080;
    }
 
    include /etc/nginx/conf.d/*.conf;
}
# vim /etc/nginx/conf.d/virtual.conf
server {
 
    listen      80;
    server_name example.com;
    root        /var/www/vhosts/example.com/www;
    access_log  /var/log/nginx/example.com/access.log   main;
    error_log   /var/log/nginx/example.com/error.log;
    client_max_body_size 36M;
 
    location /wp-admin { proxy_pass http://backend; }
    location ~ .*\.php { proxy_pass http://backend; }
    location / {
        set $mobile "";
        if ($http_user_agent ~* '(DoCoMo|J-PHONE|Vodafone|MOT-|UP\.Browser|DDIPOCKET|ASTEL|PDXGW|Palmscape|Xiino|sharp pda browser|Windows CE|L-mode|WILLCOM|SoftBank|Semulator|Vemulator|J-EMULATOR|emobile|mixi-mobile-converter)') {
            set $mobile "@ktai";
        }
        if ($http_user_agent ~* '(iPhone|iPod|Opera Mini|Android.*Mobile|NetFront|PSP|BlackBerry)') {
            set $mobile "@mobile";
        }
        if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
            set $do_not_cache 1;
        }
 
        proxy_no_cache     $do_not_cache;
        proxy_cache_bypass $do_not_cache;
        proxy_cache czone;
        proxy_cache_key "$scheme://$host$request_uri$is_args$args$mobile";
        proxy_cache_valid  200 301 302 60m;
        proxy_cache_valid  404 5m;
        proxy_cache_use_stale  error timeout invalid_header updating
                               http_500 http_502 http_503 http_504;
        proxy_pass http://backend;
        proxy_redirect http://example.com:8080/ /;
    }
}
 
server {
 
    listen      8080;
    server_name example.com;
    root        /var/www/vhosts/example.com/www;
    access_log  /var/log/nginx/example.com/access.log   main;
    error_log   /var/log/nginx/example.com/error.log;
    client_max_body_size 36M;
 
    location / {
        index  index.php index.html index.htm;
        # static files
        if (-f $request_filename) {
            expires 14d;
            break;
        }
        # request to index.php
        if (!-e $request_filename) {
            rewrite ^(.+)$  /index.php?q=$1 last;
        }
    }
 
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
        include        fastcgi_params;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_param  SCRIPT_FILENAME  /var/www/vhosts/example.com/www/$fastcgi_script_name;
    }
}

log ディレクトリを作成します。

mkdir /var/log/nginx/example.com

conf ファイルを編集後、文法チェックを行います。

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Port8080 を開放するためにファイアーウォールの設定に追記します。

# vim /etc/sysconfig/iptables
 
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080  -j ACCEPT

Nginx の自動起動設定

chkconfig nginx on

MySQL のインストール

次に MySQL をインストールします。

インストール可能な MySQL のバージョン確認

# yum info mysql-server

MySQL server のインストール

yum のパッケージは mysql ではなく、mysql-server なので間違えないように。

# yum -y install --enablerepo=remi mysql-server

MySQL 設定ファイルの修正

# cp /etc/my.cnf /etc/my.cnf.default
# vim /etc/my.cnf
 
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
 
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
 
# Settings user and group are ignored when systemd is used (fedora >= 15).
# If you need to run mysqld under different user or group, 
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
user=mysql
 
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
 
# Disabling symbolic-links is recommended to prevent assorted security risks
#symbolic-links=0
 
# Semisynchronous Replication
# http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html
# uncomment next line on MASTER
;plugin-load=rpl_semi_sync_master=semisync_master.so
# uncomment next line on SLAVE
;plugin-load=rpl_semi_sync_slave=semisync_slave.so
 
# Others options for Semisynchronous Replication
;rpl_semi_sync_master_enabled=1
;rpl_semi_sync_master_timeout=10
;rpl_semi_sync_slave_enabled=1
 
# http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html
;performance_schema
 
character-set-server=utf8
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
 
 
# ここから下を追記する
 
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqldump]
default-character-set=utf8

MySQL の起動&自動起動の設定

service mysqld start
chkconfig mysqld on

MySQL のパスワード設定

# mysqladmin -u root password
# mysqladmin -u root -h hostname password

PHP のインストール・初期設定

最後に PHP をインストールして、初期設定します。

インストール可能な PHP のバージョン確認

# yum info php php-mbstring php-mysql php-pear php-gd php-pecl-apc php-fpm

PHP のインストール

# yum -y install php php-mbstring php-mysql php-pear php-gd php-pecl-apc php-fpm

PHP が正常にインストールされたことを確認する。

# php -v
PHP 5.3.15 (cli) (built: Jul 20 2012 12:50:06) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

php.ini の設定変更

# vim /etc/php.ini
expose_php = Off
 
error_log = /var/log/php_errors.log
 
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
 
[Date]
date.timezone = Asia/Tokyo

log ファイルの作成

# touch /var/log/php_error.log
# chmod 757 /var/log/php_error.log

APC の設定

mkdir -p /var/www/vhosts/example.com
cp /usr/share/doc/php-pecl-apc-3.1.10/apc.php /var/www/vhosts/example.com/
vim /var/www/vhosts/example.com/apc.php 
 
defaults('ADMIN_USERNAME','user');
defaults('ADMIN_PASSWORD','password');

Fast CGI のインストール確認

php-fpm が正常にインストールされたことを確認する。

# php-fpm -v
PHP 5.3.15 (fpm-fcgi) (built: Jul 20 2012 12:52:37)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

php-fpm の各種設定

# vim /etc/php-fpm.d/www.conf
user = nginx
group = nginx
 
pm = dynamic
pm.max_children =  30
pm.start_servers = 11
pm.min_spare_servers = 10
pm.max_spare_servers = 15
pm.max_requests = 500
 
php_admin_flag[expose_php] = off

php-fpm を起動します。

service php-fpm start

php-fpm の自動起動設定を有効にします。

chkconfig php-fpm on
# netstat -ltn | grep -E '(80|9000)'
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN

以上です。

参考情報

こちらの設定の方が良いかも?

MySQL5.5 を CentOS6.3 にソースコードからインストールする手順

CentOS に MySQL をソースコードからインストールする手順をご紹介します。(2012/11/08 修正)

公式ドキュメント(英語)にインストール手順は書いてあります。

MySQL :: MySQL 5.5 Reference Manual :: 2.10.2 Installing MySQL from a Standard Source Distribution


前提

CentOS5.7 64bit
MySQL5.5.17

MySQLのグループとユーザーの作成

まず、rootになります。

$ su

MySQLをデーモンで起動するためのグループとユーザーを作成します。

# groupadd mysql
# useradd -g mysql -d /usr/local/mysql mysql
# passwd mysql

MySQLのソースコードをダウンロード・展開

# cd /usr/local/src
# wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.17.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
# tar zxvf mysql-5.5.17.tar.gz
# cd mysql-5.5.17

cmakeでソースコードをビルド

ソースコードをビルドするために、ディレクトリ内に configure を探しても見つからなかったので調べてみたら、MySQL 5.5系よりcmake推奨となりconfigureがなくなったようです。

代わりに cmake でコンパイルするみたいです。

CentOS yum dag リポジトリの追加方法 | Linux LABS

MySQL 5.5.9 インストール Linux cmake | Linux LABS

cmake が入っていない場合は yum でインストールしておきます。

# yum install -y cmake

次に、MySQL依存パッケージをyumで入れておきます。

# yum install -y ncurses-devel

入れてないでcmakeすると、以下のようなエラーが出るので注意です。

- Could NOT find Curses  (missing:  CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:82 (MESSAGE):
  Curses library not found.  Please install appropriate package,
 
      remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is li             bncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):

そのまま再度、cmake をしても、エラー表示を繰り返してしまうので、一旦MySQLのディレクトリを削除し再実行します。

# rm -fr /usr/local/src/mysql-5.5.17
# cd /usr/local/src
# tar zxvf mysql-5.5.17.tar.gz
# cd mysql-5.5.17

cmake する際のオプションは普通にインストールするときは2~3個ぐらいでいいみたいです。

cmake をデフォルトで実行したときに、何が入るかだけ確認しておきましょう。

MySQL :: Building MySQL from Source :: 3 MySQL Source-Configuration Options

cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DWITH_EXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_PIC=1

cmake時に、オプションで -DDEFAULT_CHARSET=utf8 付けたら、-DDEFAULT_COLLATION= … も付けないとうまくいかないので注意が必要らしいです。

MySQL のインストール

make
make install

以上でインストール完了です。

MySQLの初期設定

まず、ディレクトリの所有者を変更します。

UNIXコマンド [chown]

chown -R mysql:mysql /usr/local/mysql

次に、データベースを初期化します。

/usr/local/mysql/scripts/mysql_install_db \
		--user=mysql \
		--basedir=/usr/local/mysql \
		--datadir=/usr/local/mysql/data

データベースを初期化せずに他の設定をすると、下記のようなエラーが出ます。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

自動起動も設定しておきます。

cp /usr/local/src/mysql-5.5.17/support-files/mysql.server /etc/init.d/mysql 
chmod +x /etc/init.d/mysql
chkconfig --add mysql

以下のコマンドを実行して状態を確認します。期待したランレベルでonになっていれば問題はありません。

# chkconfig --list | grep mysql
 
mysql           0:off   1:off   2:on    3:on    4:on    5:on    6:off

実行環境に合わせて、起動スクリプトを変更します。

vi /etc/init.d/mysql
 
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

設定ファイルをコピーします。設定ファイルは必要に応じて編集してください。

cp /usr/local/src/mysql-5.5.17/support-files/my-medium.cnf /etc/my.cnf

以上で完了です。

MySQLを service コマンドで起動して、ちゃんとインストールされているか確認します。

service mysql start

MySQLのPathを通す

# vi ~/.bashrc
 
PATH="$PATH":/usr/local/mysql/bin
# source ~/.bashrc
# mysql -V
mysql  Ver 14.14 Distrib 5.5.17, for Linux (x86_64) using  EditLine wrapper

以下のコマンドでログイン出来れば、インストール成功です。

mysql -u root

ついでに root のパスワードも変更しておきます。

mysql> set password for root@localhost=password('newpassword');
Query OK, 0 rows affected (0.02 sec)
 
mysql> \q
# mysql
ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO)
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g. ……

これで、PASSの設定が完了しました。

初期設定は以上です。

MySQLの起動に失敗したときの対処方法

MySQLを起動時に以下のようなエラーが出ました。

Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/data/localhost.localdomain.pid)

プロセスを見てみると既に起動しているみたいなのですが、mysql -u root でログイン出来ません。

少々荒いですが、killコマンドでプロセスを殺して、またMySQLを起動してやれば上手くいきました。以下、手順など。

# ps aux | grep mysql
mysql    32031  0.0  3.1 337520 32944 ?        Sl   00:28   0:00 /usr/local/mysql/bin/mysqld --localdomain.err --pid-file=/usr/local/mysql/data/localhost.localdomain.pid --socket=/tmp/mysql.
# kill 32031
# ps aux | grep mysql
# /etc/init.d/mysql start
Starting MySQL.......    [  OK  ]
# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.5.17-log Source distribution
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql>

参考情報

MySQL 5.5.8をcmakeでインストールする – pgmgontaの日記

MySQLのrootパスワード設定 - Gentoo Linuxで自宅サーバ

Mysql-5.5系のインストールメモ(Fedora14の64bitへcmakeにて) | パチスロ日記と仕事メモ

Sakila Sample Database (空色ブログ)