1. 程式人生 > 其它 >CentOS 6.4 + nginx-1.2.5 + php-5.4.15 + MySQL-5.5.31

CentOS 6.4 + nginx-1.2.5 + php-5.4.15 + MySQL-5.5.31

CentOS 6.4 + nginx-1.2.5 + php-5.4.15 + MySQL-5.5.31

摘要

在工作中,需要經常為新系統安裝軟體,重複而簡單,但又不得不作,我將過去幾年中工作中臨時寫的指令碼這裡了一下,能夠實現半自動化安裝標本,只需要Ctrl+C, Ctrl+V 快速貼上複製,即可快速完成安裝

我的系列文件

Netkiller Architect 手札

Netkiller Developer 手札

Netkiller PHP 手札

Netkiller Python 手札

Netkiller Testing 手札

Netkiller Cryptography 手札

Netkiller Linux 手札

Netkiller Debian 手札

Netkiller CentOS 手札

Netkiller FreeBSD 手札

Netkiller Shell 手札

Netkiller Security 手札

Netkiller Web 手札

Netkiller Monitoring 手札

Netkiller Storage 手札

Netkiller Mail 手札

Netkiller Docbook 手札

Netkiller Project 手札

Netkiller Database 手札

Netkiller PostgreSQL 手札

Netkiller MySQL 手札

Netkiller NoSQL 手札

Netkiller LDAP 手札

Netkiller Network 手札

Netkiller Cisco IOS 手札

Netkiller H3C 手札

Netkiller Multimedia 手札

Netkiller Perl 手札

Netkiller Amateur Radio 手札

Netkiller DevOps 手札

您可以使用iBook閱讀當前文件


目錄

  • 1. CentOS 6.3 64bit Minior 安裝後 新機初始化常用軟體包安裝
    • 1.1. /etc/resolv.conf
    • 1.2. /etc/security/limits.conf
    • 1.3. /etc/sysctl.conf
    • 1.4. history 格式設定
    • 1.5. /etc/fstab
  • 2. 常用網路軟體服務安裝
    • 2.1. ntp
    • 2.2. net-snmp
    • 2.3. nagios
    • 2.4. rsync
    • 2.5. vsftpd
  • 3. MySQL-5.5.31
  • 4. php-5.4.15
    • 4.1. 配置php.ini
    • 4.2. 配置 php-fpm
    • 4.3. 將php加入PATH環境變數
    • 4.4. PHP Extension - APC
    • 4.5. phpredis
    • 4.6. mongo
    • 4.7. 編譯中遇到問題如何處理?
  • 5. nginx-1.2.5
    • 5.1. /etc/nginx/nginx.conf
    • 5.2. host 配置
  • 6. redis-2.4.10
  • 7. MongoDB

1. CentOS 6.3 64bit Minior 安裝後 新機初始化常用軟體包安裝

		lokkit --disabled --selinux=disabled

yum update -y
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
rpm -K http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
rpm -i http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

yum install -y telnet wget rsync
yum install -y system-config-network-tui
yum install -y bind-utils
yum install -y vim-enhanced

yum install -y openssh-clients
yum remove dhclient -y		

1.1. /etc/resolv.conf

配置DNS

			echo -ne "
search example.com
nameserver 208.67.222.222
nameserver 202.67.220.220
nameserver 8.8.8.8
nameserver 4.4.4.4
" > /etc/resolv.conf			

1.2. /etc/security/limits.conf

修改檔案開啟數

			cat >> /etc/security/limits.conf <<EOF
root 	soft nofile 65536
root 	hard nofile 65536
www	soft nofile 65536
www 	hard nofile 65536
mysql	soft nofile 65536
mysql 	hard nofile 65536
EOF			

下面更省事,但不建議使用*萬用字元,這樣任何使用者都不限制。

			echo -ne "

* soft nofile 65536
* hard nofile 65536
" >> /etc/security/limits.conf			

而上面我市針對www使用者設定,也就是web伺服器,其他使用者是受限的。

1.3. /etc/sysctl.conf

核心引數調整

			cat >> /etc/sysctl.conf <<EOF

net.ipv4.ip_local_port_range = 1024 65500
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 60
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 4096
EOF			

1.4. history 格式設定

設定history格式,是他能夠記錄命令的輸入時間

			cat >> /etc/bashrc <<EOF

export HISTTIMEFORMAT="%Y-%m-%d-%H:%M:%S "
EOF			

1.5. /etc/fstab

我一般分割槽規劃是,/系統根分割槽,swap交換分割槽,/www資料分割槽,同時 禁止寫入atime時間,因為/www頻繁請求會影響IO

臨時mount

mount -o remount,noatime,nodiratime /dev/sda3 /mnt/your			

LABEL 方式

LABEL=/www                 /www                       ext3    defaults,noatime,nodiratime        1 1			

UUID 方式

UUID=eeff3e86-7964-4a48-ac02-51ea167ea6b2 /www        ext4    defaults,noatime,nodiratime        1 2			

至此,Linux 的OS部分安裝配置與優化完成。

2. 常用網路軟體服務安裝

2.1. ntp

ntp 服務同步伺服器的時間,需要安裝。

# redhat 5.6 cp /etc/ntp.conf.original /etc/ntp.conf
yum install ntp -y			

指定ntp伺服器,如果你沒有ntp server,下面步驟不用執行

			cp /etc/ntp.conf /etc/ntp.conf.original
vim /etc/ntp.conf <<VIM > /dev/null 2>&1
:22,24s/^/#/
:25,25s/^/rserver 172.16.3.51rserver 172.16.3.52r/
:wq
VIM			
service ntpd start
chkconfig ntpd on			

2.2. net-snmp

用於伺服器的狀態監控

			yum install net-snmp -y
vi /etc/snmp/snmpd.conf <<VIM > /dev/null 2>&1
:62,62s/systemview/all/
:85,85s/^#//
:wq
VIM
service snmpd start
chkconfig snmpd on			

2.3. nagios

伺服器故障警告

			yum install -y nrpe nagios-plugins
vi /etc/nagios/nrpe.cfg <<VIM > /dev/null 2>&1
:%s/allowed_hosts=127.0.0.1/allowed_hosts=172.16.1.2/
:wq
VIM

cat >> /etc/nagios/nrpe.cfg <<EOF

#command[check_http]=/usr/lib64/nagios/plugins/check_http -I 127.0.0.1 -p 80 -u http://www.example.com/index.html
command[check_swap]=/usr/lib64/nagios/plugins/check_swap -w 20% -c 10%
command[check_all_disks]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -e
EOF

chkconfig nrpe on
service nrpe start			

2.4. rsync

我使用rsync來實現應用的部署。

			yum install xinetd rsync -y

vim /etc/xinetd.d/rsync <<VIM > /dev/null 2>&1
:%s/yes/no/
:wq
VIM

cat > /etc/rsyncd.conf <<EOD
uid = root
gid = root
use chroot = no
max connections = 8
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

hosts deny=*
hosts allow=192.168.2.0/255.255.255.0

[www]
    uid = www
    gid = www
    path = /www
    ignore errors
    read only = no
    list = no
    auth users = www
    secrets file = /etc/rsyncd.passwd
EOD

cat >> /etc/rsyncd.passwd <<EOF
www:xxxxxxxxxxxxxxxx
EOF

chmod 600 /etc/rsyncd.*
chmod 600 /etc/rsyncd.passwd

service xinetd restart			

2.5. vsftpd

根據你的需要,選裝。

			yum install -y vsftpd
adduser --home-dir /www/target/logs/ --shell /sbin/nologin --password logs.xiu.com logs
echo logs >> /etc/vsftpd/chroot_list

vim /etc/vsftpd/vsftpd.conf <<VIM > /dev/null 2>&1
:%s/#chroot_list_enable=YES/chroot_list_enable=YES/
:%s/#chroot_list_file/chroot_list_file/
VIM

chkconfig vsftpd on
service vsftpd start			

3. MySQL-5.5.31

解除安裝舊的包,然後準備好rpm檔案

rpm -e --nodeps mysql-libs
yum localinstall MySQL-*		

安裝後檢視如下

# rpm -qa | grep MySQL
MySQL-client-5.5.31-1.el6.x86_64
MySQL-shared-5.5.31-1.el6.x86_64
MySQL-devel-5.5.31-1.el6.x86_64
MySQL-shared-compat-5.5.31-1.el6.x86_64
MySQL-server-5.5.31-1.el6.x86_64		

4. php-5.4.15

由於redhat與centosYUM源中尚未提供php-fpm所以我採用編譯安裝,網上有一些愛好者製作過php-fpm的rpm包。是否使用你自己那注意。

安裝fedora的YUM源,我們需要一些devel包。

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm		

安裝編譯器與開發包

yum install gcc gcc-c++ make automake autoconf -y
yum install curl-devel libmcrypt-devel gd-devel libjpeg-devel libpng-devel libXpm-devel libxml2-devel libxslt-devel mhash-devel recode-devel openssl-devel -y		

安裝下面三個rpm包,編譯php不需要server與client兩個包

MySQL-shared-5.5.31-1.el6.x86_64
MySQL-devel-5.5.31-1.el6.x86_64
MySQL-shared-compat-5.5.31-1.el6.x86_64		

將其放置在一個目錄中,使用下面命令即可安裝

yum localinstall MySQL-*		

前面的準備工作就緒後,便可以進入到php的安裝階段

		tar zxvf php-5.4.15.tar.gz
cd php-5.4.15

./configure --prefix=/srv/php-5.4.15 
--with-config-file-path=/srv/php-5.4.15/etc 
--with-config-file-scan-dir=/srv/php-5.4.15/etc/conf.d 
--enable-fpm 
--with-fpm-user=www 
--with-fpm-group=www 
--with-curl 
--with-gd 
--with-jpeg-dir 
--with-png-dir 
--with-freetype-dir 
--with-zlib-dir 
--with-iconv 
--with-mcrypt 
--with-mysql 
--with-mysqli=/usr/bin/mysql_config 
--with-pdo-mysql 
--with-mysql-sock=/var/lib/mysql/mysql.sock 
--with-openssl=shared 
--with-mhash=shared 
--with-xsl=shared 
--with-recode=shared 
--with-pear 
--enable-sockets 
--enable-soap 
--enable-mbstring 
--enable-gd-native-ttf 
--enable-zip 
--enable-xml 
--enable-bcmath 
--enable-calendar 
--enable-shmop 
--enable-dba 
--enable-wddx 
--disable-debug


make && make install		

4.1. 配置php.ini

備份配置檔案,防止不小心改錯而又找不出問題出在哪裡。

mkdir -p /srv/php-5.4.15/etc/conf.d
cp php.ini-* /srv/php-5.4.15/etc/
cp /srv/php-5.4.15/etc/php.ini-development /srv/php-5.4.15/etc/php.ini
cp /srv/php-5.4.15/etc/pear.conf{,.original}
ln -s /srv/php-5.4.15/ /srv/php			

php預設提供兩個配置檔案模板php.ini-development用於開發和測試環境;php.ini-production用於生產環境。他們差異是php.ini-development會顯示除錯資訊,即 error_display = On.

# ls php.ini-*
php.ini-development  php.ini-production			

下面更改僅供參考,需要根據你的具體情況配置,不要照搬。

			vim /srv/php-5.4.15/etc/php.ini <<EOF > /dev/null 2>&1
:%s#expose_php = On#expose_php = Off#
:%s$;open_basedir = $open_basedir = /www/:/tmp/:/srv/php-5.4.15/lib/php/:/srv/php-5.4.15/bin/$
:%s/memory_limit = 128M/memory_limit = 16M/
:%s!;include_path = ".:/php/includes"!include_path = ".:/srv/php-5.4.15/lib/php:/srv/php-5.4.15/share"!
:%s:extension_dir = "./":extension_dir = "/srv/php-5.4.15/lib/php/extensions":
:%s/upload_max_filesize = 2M/upload_max_filesize = 8M/
:%s/;cgi.fix_pathinfo=0/cgi.fix_pathinfo=1/
:%s$;date.timezone =$date.timezone = Asia/Hong_Kong$
:1367,1367s/session.save_handler = files/session.save_handler = redis/
:1368,1368s#^#session.save_path = "tcp://127.0.0.1:6379"r#
:1415,1368s/session.name = PHPSESSID/session.name = JSESSIONID/
:wq
EOF			

4.2. 配置 php-fpm

安裝啟動指令碼

cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
chmod +x /etc/init.d/php-fpm

chkconfig --add php-fpm
chkconfig php-fpm on
chkconfig --list php-fpm			

修改配置檔案

			cp /srv/php-5.4.15/etc/php-fpm.conf.default /srv/php-5.4.15/etc/php-fpm.conf

vim /srv/php-5.4.15/etc/php-fpm.conf <<end > /dev/null 2>&1
:25,25s/;//
:32,32s/;//
:wq
end			

察看配置項

# grep -v '^;' /srv/php-5.4.15/etc/php-fpm.conf | grep -v '^$'
[global]
pid = run/php-fpm.pid


[www]
user = www
group = www
listen = 127.0.0.1:9000

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3			

4.3. 將php加入PATH環境變數

			vim  ~/.bash_profile <<END > /dev/null 2>&1
:%s#bin#bin:/srv/php/bin#
:wq
END			

4.4. PHP Extension - APC

Apc

			pecl install apc

cat > /srv/php-5.4.15/etc/conf.d/apc.ini <<EOF
extension=apc.so
EOF			

檢視安裝情況

# /srv/php/bin/php -m | grep apc
apc			

4.5. phpredis

安裝git版本控制客戶端

yum install git			

從github倉庫中克隆一份程式碼到本地

git clone git://github.com/nicolasff/phpredis.git			

編譯安裝phpredis; 我暫時沒有找到 pecl的phpredis源

			cd phpredis
phpize
./configure --with-php-config=/srv/php-5.4.15/bin/php-config
make && make install			

建立配置檔案

			cat > /srv/php-5.4.15/etc/conf.d/redis.ini <<EOF
extension=redis.so
EOF			

檢視安裝情況

# php -m | grep redis
redis			

4.6. mongo

pecl 安裝 mongo

pecl install mongo			

建立配置檔案

			cat > /srv/php-5.4.15/etc/conf.d/mongo.ini <<EOF
extension=mongo.so
EOF			
# php -m | grep mongo
mongo			

4.7. 編譯中遇到問題如何處理?

下面我們來模擬一個場景,例如 configure的時候出現下面提示

configure: error: Can not find recode.h anywhere under yes /usr/local /usr /opt.			

提示找不到recode。h檔案,很好辦,首先搜尋recode包

[root@haproxy php-5.4.15]# yum search recode                                                                                                                                                                                                                        |  327 B     00:00
============================ N/S Matched: recode ====================================
php-recode.x86_64 : A module for PHP applications for using the recode library
recode-devel.i686 : Header files and static libraries for development using recode
recode-devel.x86_64 : Header files and static libraries for development using recode
recode.i686 : Conversion between character sets and surfaces
recode.x86_64 : Conversion between character sets and surfaces

  Name and summary matches only, use "search all" for everything.			

然後安裝devel包,記住之需要安裝devel包即可,其他都是多餘。

[root@haproxy php-5.4.15]# yum install recode-devel -y			

然後重新執行configure

5. nginx-1.2.5

為web伺服器建立一個使用者,我喜歡使用www,id為80更容易記,同時將一個單獨分割槽掛在/www上使用者存放web應用程式。

groupadd -g 80 www
adduser -o --home /www --uid 80 --gid 80 -c "Web Application" www		

新增nginx的YUM源

		cat > /etc/yum.repos.d/nginx.repo <<EOF
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/x86_64/
gpgcheck=0
enabled=1
EOF		

開始安裝nginx

		yum search nginx

yum install -y nginx
chkconfig nginx on
service nginx start		

如果你不懂編譯器優化,建議你使用rpm方案。在不優化的情況下編譯出來程式很臃腫。

# rpm -qa | grep nginx
nginx-1.2.5-1.el6.ngx.x86_64		

5.1. /etc/nginx/nginx.conf

隱藏nginx版本號

vim /etc/nginx/nginx.conf

http {
...
    server_tokens off;
}			

5.2. host 配置

mkdir -p /www/www.mydomain.com/htdocs

cd /etc/nginx/conf.d
cp default.conf www.mydomain.com.conf
vim www.mydomain.com.conf			
server {
    listen       80;
    server_name  www.mydomain.com;

    charset utf-8;
    access_log  /var/log/nginx/www.mydomain.com.access.log  main;

    location / {
        root   /www/www.mydomain.com/htdocs;
        index  index.html index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ .php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ .php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/www.mydomain.com/htdocs$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /.ht {
        deny  all;
    }
}			

建立測試頁面

			cat >> /www/www.mydomain.com/htdocs/index.php <<PHP
<?php
phpinfo();
PHP			

啟動伺服器

service php-fpm start
service nginx start			

檢查index.php輸出

# curl -H HOST:www.mydomain.com http://127.0.0.1/index.php			

6. redis-2.4.10

安裝fedora的YUM源,

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm		

安裝redis

# yum install redis

# chkconfig redis on

# service redis start		

7. MongoDB

# yum install mongodb-server

# chkconfig mongod on

# service mongod start