bashtag

宮崎でITベンチャーから非ITベンチャーへ転職したサーバエンジニアのブログ

ソースコンパイルでサーバ構築 CentOS版 Part5

怒涛の五日目突入!

今日はMySQLです。

  • OS:CentOS6.4
  • Web:Nginx + php-fpm + PHP
  • DB:MySQL

MySQLをソースでインストール

# 必要なパッケージをインストール
yum -y install cmake
yum -y install ncurses-devel

# ソース展開用ディレクトリに移動
cd /usr/local/src/
mkdir mysql
cd mysql

# リンク http://dev.mysql.com/downloads/mysql/
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16.tar.gz

# 展開
tar zxvf mysql-5.6.16.tar.gz

# MySQL用のグループとユーザを作成
sudo groupadd mysqlsudo useradd -g mysql -s /usr/sbin/nologin mysql

# 以下の条件でコンパイルします
#-----
# デフォルトのキャラクタセット = utf8
# デフォルトの照合順序 = utf8_general_ci
# ストレージエンジンにInnoDB追加
#-----
/usr/bin/cmake . \
-DCMAKE_INSTALL_PREFIX=/var/lib/mysql \
-DMYSQL_DATADIR=/var/lib/mysql/data \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DDISABLE_SHARED=1 \
-DENABLE_DTRACE=0 \
-DENABLE_GCOV=0 \
-DWITH_DEBUG=0 \
-DENABLE_DEBUG_SYNC=0 \
-DWITH_PIC=1

# makeしてmake install
make && make install

# 起動スクリプトを作成し、実行権限を付与
cp /var/lib/mysql/support_files/mysql.server /etc/init.d/mysql
chown root:root /etc/init.d/mysql
chmod a+x /etc/init.d/mysql

データベース準備

# データ格納ディレクトリの権限をmysqlに
chown -R mysql:mysql /var/lib/mysql

# データベース初期化
/var/lib/mysql/scripts/mysql_install_db --basedir=/var/lib/mysql --datadir=/var/lib/mysql/data --user=mysql


# コマンド郡設置
cd /usr/local/binln -s /var/lib/mysql/bin/mysqladmin mysqladminln -s /var/lib/mysql/bin/mysql mysqlln -s /var/lib/mysql/bin/mysqlcheck mysqlcheckln -s /var/lib/mysql/bin/mysqldump mysqldump

# MySQL用設定をチューニング

vim /etc/my.cnf

#--- 追記内容 START my.cnf
[mysqld]
#skip-grant-tables
port = 3306
datadir=/var/lib/mysql/data
socket=/tmp/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

character-set-server = utf8
skip-character-set-client-handshake

log-error = /var/log/mysql/mysqld-error.log
general_log = 1
general_log_file = /var/log/mysql/mysql.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1

max_connections = 50
key_buffer_size = 16M
max_allowed_packet = 1M
binlog_cache_size = 1M
table_open_cache = 128
sort_buffer_size = 512K
join_buffer_size = 512K
thread_concurrency = 4
query_cache_size = 16M
query_cache_limit = 512K
tmp_table_size = 50M
read_buffer_size = 256K
read_rnd_buffer_size = 512K
net_buffer_length = 8K

#*** MyISAM Specific options
myisam_sort_buffer_size = 1M

# *** INNODB Specific options ***
innodb_buffer_pool_size = 32M
innodb_additional_mem_pool_size = 5M

[mysqld_safe]
log-error = /var/log/mysql/mysqld_safe-error.log
pid-file=/var/run/mysqld.pid

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
default-character-set = utf8

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

[client]
socket=/var/lib/mysql/mysql.sock
#----- 追記内容 E N D

# 起動
/etc/init.d/mysql start


# 自動起動追加
chkconfig --add mysql
chkconfig mysql on

phpMyAdminを準備(念のため)

# ソースをwget
cd /var/www/src

wget http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/4.1.7/phpMyAdmin-4.1.7-all-languages.tar.gz


# ソース展開
cd /var/www/html
tar zxvf ../src/phpMyAdmin-4.1.7-all-languages.tar.gz

# リネーム
mv phpMyAdmin-4.1.7-all-languages phpMyAdmin

# 設定ファイル作成
cp config.sample.inc.php config.inc.php
vim config.inc.php

ブラウザからアクセスしてみる

  • my.cnfのsocketを調整した場合は変更が必要な可能性あり
# my.cnfで
# socket=/var/lib/mysql/mysql.sock
# としてしまった場合
vim /etc/php.ini
#--- 変更内容 START php.ini
mysql.default_socket = /var/lib/mysql/mysql.sock
pdo_mysql.default_socket= /var/lib/mysql/mysql.sock
mysqli.default_socket = /var/lib/mysql/mysql.sock
#--- 変更内容 E N D

ソースコンパイルでサーバ構築 CentOS版 Part4

Part4です。 php-fpmの設定です。 - OS:CentOS6.4 - Web:Nginx + php-fpm + PHP - DB:MySQL

php-fpmの設定

# php-fpm.conf を作成
cp /usr/local/etc/php-fpm.conf.default /etc/php-fpm.conf

# 起動スクリプト作成&実行権限付与
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

vim /etc/init.d/php-fpm
#--- 変更内容 START php.fpm
#php_fpm_CONF=${prefix}/etc/php-fpm.conf
php_fpm_CONF=/etc/php-fpm.conf
#--- 変更内容 E N D

# 自動起動
chkconfig --add php-fpm


vim /etc/nginx/nginx.conf
#--- 追記内容 START nginx.conf
        #for PHP
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
#--- 追記内容 E N D

表示確認

vim /etc/nginx/nginx.conf
#--- 追記内容 START nginx.conf
    server {
        listen       80;
        server_name  localhost;
        root         /var/www/html;
#--- 追記内容 E N D

# 公開ディレクトリ作成
mkdir -p /var/www/html

# 検証用PHP作成
vim /var/www/html/info.php
#--- 追記内容 START info.php
<?php
phpinfo();
?>
#--- 追記内容 E N D

参考

ソースコンパイルでサーバ構築 CentOS版 Part3

今日で3日目になります。

前回はPHPをインストールしたので、今回はNginxのインストールを行います。

  • OS:CentOS6.4
  • Web:Nginx + php-fpm + PHP
  • DB:MySQL

Nginxをソースコンパイル

# Nginx用のユーザーを作成
sudo useradd -s/sbin/nologin -d/usr/local/nginx -M nginx

# ソース展開用ディレクトリに移動
cd /usr/local/src/
mkdir nginx
cd nginx

#stable 2014/02/16
wget http://nginx.org/download/nginx-1.4.5.tar.gz
tar zxvf nginx-1.4.5.tar.gz
cd nginx-1.4.5

# コンフィギュア
./configure --prefix=/etc/nginx \
--user=nginx --group=nginx \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_gzip_static_module \
--with-http_upstream_ip_hash_module


# makeして、make install
make
make install

あとでnginxのコンフィギュアオプションを確認する方法

nginx -V

起動と終了の仕方(手動)

# 起動
/usr/local/nginx/sbin/nginx
# 終了
/usr/local/nginx/sbin/nginx -s quit

Nginxの起動スクリプト

vim /etc/init.d/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pid
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
 
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
 
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
 
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
 
lockfile=/var/lock/subsys/nginx
 
make_dirs() {
   # make required directories
   user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   if [ -z "`grep $user /etc/passwd`" ]; then
       useradd -M -s /bin/nologin $user
   fi
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
       if [ `echo $opt | grep '.*-temp-path'` ]; then
           value=`echo $opt | cut -d "=" -f 2`
           if [ ! -d "$value" ]; then
               # echo "creating" $value
               mkdir -p $value && chown -R $user $value
           fi
       fi
   done
}
 
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    make_dirs
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
 
stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
 
restart() {
    configtest || return $?
    stop
    sleep 1
    start
}
 
reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}
 
force_reload() {
    restart
}
 
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
 
rh_status() {
    status $prog
}
 
rh_status_q() {
    rh_status >/dev/null 2>&1
}
 
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac
# 実行権限を付与
sudo chmod +x /etc/init.d/nginx

# 自動起動
chkconfig --add nginx
chkconfig nginx on

ソースコンパイルでサーバ構築 CentOS版 Part2

昨日に引き続き、ソースコンパイルでサーバを構築する手順を備忘録で残します。

  • OS:CentOS6.4
  • Web:Nginx + php-fpm + PHP
  • DB:MySQL

必要パッケージをyumでインストールしたところから

PHPをソースコンパイル

# ソースを展開ディレクトリへ移動
cd /usr/local/src/
mkdir php
cd php

# 2014/06/01現在
wget http://jp1.php.net/get/php-5.5.13.tar.gz/from/this/mirror
mv mirror php-5.5.13.tar.gz
tar zxvf php-5.5.13.tar.gz
cd php-5.5.13

# コンフィグュアオプションを指定
./configure \
--enable-mbstring \
--with-mysql \
--with-pdo-mysql \
--with-mysqli \
--enable-pcntl \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--with-openssl \
--with-pcre-regex \
--with-zlib \
--with-curl \
--with-mhash \
--with-xsl \
--with-mcrypt \
--with-pear \
--enable-exif \
--enable-ftp \
--with-gd \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--without-unixODBC \
--disable-posix \
--disable-sysvmsg \
--disable-sysvshm \
--disable-sysvsem \
--disable-debug \
--enable-intl \
--enable-zip \
--enable-posix \
--with-config-file-path=/etc


# make & make install
make
make install

php.iniの設定を変える

cp -a php.ini-production /etc/php.ini
vim /etc/php.ini
  • php.iniの変更箇所
date.timezone = Asia/Tokyo

ソースコンパイルでサーバ構築 CentOS版 Part1

ソースコンパイルでサーバ構築します。

  • OS:CentOS6.4
  • Web:Nginx + php-fpm + PHP
  • DB:MySQL

CentOSのインストールは終わってるところから

ネットワーク設定

vi /etc/sysconfig/network-scripts/ifcfg-eth0
# 変更前
ONBOOT=no
# 変更後
ONBOOT=yes
/etc/init.d/network restart

SELINUXの無効化

vi /etc/selinux/config
  • 変更
SELINUX=disabled
  • コマンドで設定する場合(即時反映のため)
getenforce #チェック
setenforce 0 #設定

アップデート

rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
  • yum アップデート
yum -y update

必要なライブラリなどをインストール

yum install -y wget
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
yum install -y gcc
yum install -y libevent-devel libxml2-devel libjpeg-devel libpng-devel flex gcc-c++
yum install -y libmcrypt libmcrypt-devel libxslt libxslt-devel libicu-devel gd-devel autoconf
yum install -y libcurl-devel
yum install -y bison # 必要っぽい
yum install -y re2c # 必要っぽい
yum install -y vim # vimが使いたいので

今日はここまで。。。

Zabbixエージェントのインストール

zabbix の yumリポジトリの登録

rpm -ivh http://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-release-2.0-1.el6.noarch.rpm

インストール

yum -y install zabbix-agent

zabbix の yumリポジトリの無効化修正

vi /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/2.0/rhel/6/$basearch/
enabled=1 ★←ココ
 ↓
enabled=0

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/6/$basearch/
enabled=1 ★←ココ
 ↓
enabled=0

zabbixエージェントの設定(zabbixサーバーが他の場合、そのIPアドレスを設定 )

vi /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1
 ↓
Server=xxx.xxx.xxx.xxx(zabbixサーバーのIPアドレス)

zabbixエージェントの起動

service zabbix-agent start

zabbixエージェントの自動起動設定

chkconfig zabbix-agent on