系統硬件:vmware vsphere (CPU:2*4核,內存2G)php
系統版本:CentOS-6.5-x86_64-minimal.isohtml
安裝步驟:mysql
0.虛擬系統安裝nginx
0.1 使用VMware 虛擬機進行安裝,進行安裝界面c++
(分配內存必須大於1G,不然不會顯示圖型安裝界面,網絡設置使用「橋接模式」 即"Bridged"模式)算法
0.2 選擇 Install or upgrade an existing systemsql
0.3 在"Disc found" 框 選擇 "skip"數據庫
0.4 next 選擇 "chinese(simplified)(中文(簡介 )) nextbootstrap
0.5 選擇 "美國英語式" 下一步vim
0.6 選擇 "基本 存儲設備" 下一步
0.7 彈出"警告"框時,選擇"從新初始化全部"
0.8 主機名能夠保留默認,點擊」配置網絡「 彈出「網絡鏈接」 雙擊「System eth0"
0.9 彈出「正在編輯 System eth0" 選擇"自動鏈接" 點擊"應用「 ,點擊」關閉「 關閉」網絡鏈接「框 下一步
0.10 不要選擇「系統時鐘使用UTC時間」 下一步
0.11 輸入並確認 」根密碼「 下一步
0.12 選擇"替換現有Linux系統 " 下一步 「將修改寫入磁盤"
0.13 選擇"Basic Server" 下一步
0.14 大概一共200個軟件包,複製安裝完成後,點擊「從新引導」,從新啓動計算機
0.15 (安裝完成後,能夠將虛擬機內存由1G,改成512M)
1.系統環境
1.1 更新系統
[root@centos ~]# yum update -y
1.2 查看環境
[root@centos ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
[root@centos ~]# uname -a
Linux zabbix 2.6.32-431.17.1.el6.x86_64 #1 SMP Wed May 7 23:32:49 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@centos ~]# yum -y install vim wget lsof gcc gcc-c++
2.安裝Google-perftools (使用tcmalloc 加速 mysql 和 nginx)
2.1下載須要的文件
下載 libunwind-1.1.tar.gz 到 /usr/local/src
下載 gperftools-2.2.tar.gz 到 /usr/local/src
2.2 安裝libunwind
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf libunwind-1.1.tar.gz
[root@centos ~]# cd libunwind-1.1
[root@centos ~]# ./configure --enable-shared
[root@centos ~]# make && make install
2.3 安裝google-perftools
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf gperftools-2.2.tar.gz
[root@centos ~]# cd gperftools-2.2
[root@centos ~]# ./configure --enable-shared --enable-frame-pointers
[root@centos ~]# make && make install
2.4 更新,使動態連接庫可以被系統共享
[root@centos ~]# echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
[root@centos ~]# ldconfig
3.安裝mysql
3.1 下載文件
下載 ncurses-5.9.tar.gz到/usr/local/src
下載 bison-3.0.tar.gz到/usr/local/src
下載 cmake-3.0.0.tar.gz到/usr/local/src
下載 mysql-5.6.19.tar.gz到/usr/local/src
3.2 安裝ncurses
[root@centos ~]# yum install ncurses-devel openssl* -y
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf ncurses-5.9
[root@centos ~]# ./configure
[root@centos ~]# make && make install
3.3 安裝cmake
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf cmake-3.0.0.tar.gz
[root@centos ~]# cd cmake-3.0.0
[root@centos ~]# ./bootstrap
[root@centos ~]# make && make install
3.4 安裝bison
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf bison-3.0.tar.gz
[root@centos ~]# cd bison-3.0
[root@centos ~]# ./configure
[root@centos ~]# make && make install
3.5 建立mysql須要的目錄、配置用戶和用戶組
[root@centos ~]# groupadd mysql
[root@centos ~]# useradd -g mysql mysql
[root@centos ~]# mkdir -p /data/mysql
[root@centos ~]# chown -R mysql:mysql /data/mysql
3.6.安裝mysql (須要 cmake ncurses-devel bison 庫)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf mysql-5.6.19.tar.gz
[root@centos ~]# cd mysql-5.6.19
[root@centos ~]# cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql -DMYSQL_DATADIR=/data/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DSYSCONFDIR=/etc/ -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=on -DWITH_SSL=yes
[root@centos ~]# make && make install
3.7 建立軟鏈接
[root@centos ~]# ln -s /opt/mysql/lib/lib* /usr/lib/
3.8配置mysql數據庫
[root@centos ~]# cd /opt/mysql
[root@centos ~]# ./scripts/mysql_install_db --basedir=/opt/mysql/ --datadir=/data/mysql/ --user=mysql
3.9複製配置文件
3.9.1 (mysql 5.6.19)
[root@centos ~]# cp ./support-files/my-default.cnf /etc/my.cnf
3.9.2 (mysql 5.3.29)
[root@centos ~]# cp ./support-files/my-large.cnf /etc/my.cnf
修改配置文件,設置默認使用utf8編碼
[root@centos ~]# vim /etc/my.cnf
在[client]下添加一行
default-character-set = utf8
在[mysqld]下添加一行
character-set-server = utf8
3.11 設置mysql開機自動啓動服務
[root@centos ~]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@centos ~]# chkconfig --add mysqld
[root@centos ~]# chkconfig --level 345 mysqld on
3.12 修改服務配置文件
[root@centos ~]# vim /etc/rc.d/init.d/mysqld
根據設定須要,修改mysqld文件中的下面兩項
basedir=/opt/mysql
datadir=/data/mysql
3.13 啓動mysqld服務
[root@centos ~]# service mysqld start
3.14 數據庫初始化及修改root密碼(root初始密碼爲空)
[root@centos ~]# ./bin/mysql_secure_installation
根據提示操做
3.15 軟鏈接mysql
[root@centos ~]# ln -s /opt/mysql/bin/mysql /bin
3.16 重啓centos後,嘗試用root鏈接mysql
[root@centos ~]# mysql -u root -p
成功登陸後查看狀態
status;
3.17 使用tcmalloc優化mysql ( 須要安裝google-perftools)
[root@centos ~]# vim /opt/mysql/bin/mysqld_safe
在# executing mysqld_safe的下一行,加上:
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
3.18 重啓服務,查看tcmalloc是否生效 (第二條命令顯示即生效)
[root@centos ~]# service mysqld restart
[root@centos ~]# lsof -n | grep tcmalloc
若是顯示如下相似的信息,即表示tcmalloc生效
mysqld 30347 mysql mem REG 253,0 2177570 544322 /usr/local/lib/libtcmalloc.so.0.2.2
3.18 增長遠程訪問用戶,而且打開防火牆3306端口(不遠程鏈接數據,可省略)
[root@centos ~]# mysql -u root -p
輸入密碼進行mysql控制檯,添加遠程訪問用戶
(root是用戶名,%是主機名或IP地址,這裏的%表明任意主機或IP地址,也可指定惟一的IP地址;密碼是MyPassword )
Mysql [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MyPassword' WITH GRANT OPTION;
Mysql [(none)]> FLUSH PRIVILEGES;
Mysql [(none)]> exit;
[root@centos ~]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
[root@centos ~]# /etc/rc.d/init.d/iptables save
[root@centos ~]# /etc/init.d/iptables restart
查看防火牆信息
[root@centos ~]# /etc/init.d/iptables status
若是顯示如下相似信息,即表示已經打開了3306端口
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
4.安裝Nginx
4.1.準備安裝
下載 pcre-8.35.tar.gz到/usr/local/src
下載 nginx-1.6.0.tar.gz到/usr/local/src
4.2 更新包
[root@centos ~]# yum install zlib* openssl* -y
4.3 安裝Pcre
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf pcre-8.35.tar.gz
[root@centos ~]# cd pcre-8.35
[root@centos ~]# ./configure
[root@centos ~]# make && make install
4.4 建立www用戶和組,建立www虛擬主機使用的目錄,以及Nginx使用的日誌目錄,而且賦予他們適當的權限
[root@centos ~]# groupadd www
[root@centos ~]# useradd -g www www
[root@centos ~]# mkdir -p /data/www
[root@centos ~]# chmod +w /data/www
[root@centos ~]# chown -R www:www /data/www
爲tcmalloc添加目錄,而且賦予適當權限
[root@centos ~]# mkdir -p /tmp/tcmalloc/
[root@centos ~]# chown -R www:www /tmp/tcmalloc/
4.5 安裝Nginx (須要 pcre google-perftools 庫)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf nginx-1.6.0.tar.gz
假裝服務器信息(能夠不修改)
[root@centos ~]# cd nginx-1.6.0/src/core
[root@centos ~]# vim ./src/core/nginx.h
修改NGINX_VERSION爲你但願顯示的版號
修改NGINX_VER爲你但願顯示的名稱
修改NGINX_VAR 爲你但願顯示的名稱
保存
開始安裝NGINX
[root@centos ~]# ./configure --user=www --group=www --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module --with-google_perftools_module
[root@centos ~]# make && make install
4.6 修改 nginx.conf ,令nginx能夠 google-perftools實現加速
[root@centos ~]# vim /opt/nginx/conf/nginx.conf
修改前面幾行爲:
user www www;
worker_processes 8;
error_log logs/error.log crit;
pid logs/nginx.pid;
google_perftools_profiles /tmp/tcmalloc/;
events{
use epoll;
worker_connections 65535;
}
4.7 測試和運行
[root@centos ~]# cd /opt/nginx
[root@centos ~]# ldconfig
[root@centos ~]# ./sbin/nginx -t
若是顯示下面信息,即表示配置沒問題
nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
輸入代碼運行nginx服務
[root@centos ~]# ./sbin/nginx
[root@centos ~]# ps au|grep nginx
若是顯以相似下面的信息,即表示nginx已經啓動
root 2013 0.0 0.0 103156 856 pts/0 S+ 03:22 0:00 grep nginx
輸入代碼檢測是否支持加速
[root@centos ~]# lsof -n | grep tcmalloc
若是顯示相似下面的信息,即表示支持tcmalloc加速 (mysqld和nginx兩個線程都支持)
mysqld 20818 mysql mem REG 253,0 2177570 281050 /usr/local/lib/libtcmalloc.so.0.2.2
nginx 29454 www 25w REG 253,0 0 288399 /tmp/tcmalloc/.29454
nginx 29455 www 27w REG 253,0 0 288403 /tmp/tcmalloc/.29455
4.8 打開防火牆80端口
寫入規則,保存並重啓服務
[root@centos ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@centos ~]# /etc/rc.d/init.d/iptables save
[root@centos ~]# /etc/init.d/iptables restart
查看防火牆信息
[root@centos ~]# /etc/init.d/iptables status
若是顯示如下相似信息,即表示已經打開了80端口
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
4.9 編寫nginx 啓動服務
[root@centos ~]# 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="/opt/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
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
killall -9 nginx
}
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
保存後,設置權限,並添加到啓動服務列表中
[root@centos ~]# chmod 755 /etc/init.d/nginx
[root@centos ~]# chkconfig --add nginx
[root@centos ~]# chkconfig --level 345 nginx on
[root@centos ~]# service nginx start
5 安裝PHP
5.1 準備安裝
下載php-5.5.13.tar.gz到/usr/local/src
下載 libiconv-1.14.tar.gz到/usr/local/src
下載 libmcrypt-2.5.8.tar.gz到/usr/local/src
下載mcrypt-2.6.8.tar.gz到/usr/local/src
下載mhash-0.9.9.9.tar.gz到/usr/local/src
更新依賴
yum -y install autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers libXpm* gcc gcc-c++
5.2 安裝libiconv (增強系統對支持字符編碼轉換的功能)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf libiconv-1.14.tar.gz
[root@centos ~]# cd libiconv-1.14
[root@centos ~]# ./configure --prefix=/usr/local
[root@centos ~]# make && make install
5.3 安裝libmcrypt(加密算法庫,PHP擴展mcrypt功能對此庫有依耐關係,要使用mcrypt必須先安裝此庫)
5.3.1 安裝libmcrypt
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf libmcrypt-2.5.8.tar.gz
[root@centos ~]# cd libmcrypt-2.5.8
[root@centos ~]# ./configure
[root@centos ~]# make && make install
5.3.2安裝libltdl(6.6 x64自帶不用裝)
[root@centos ~]# cd libltdl/
[root@centos ~]# ./configure --enable-ltdl-install
[root@centos ~]# make && make install
5.3.3 更新共享
[root@centos ~]# ln -sf /usr/local/lib/libmcrypt.* /usr/lib64/
[root@centos ~]# ln -sf /usr/local/bin/libmcrypt-config /usr/lib64/
[root@centos ~]# ln -sf /usr/local/lib/libiconv.so.2 /usr/lib64/
[root@centos ~]# ldconfig
5.4 安裝mhash(hash加密算法庫)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf mhash-0.9.9.9.tar.gz
[root@centos ~]# cd mhash-0.9.9.9
[root@centos ~]# ./configure
[root@centos ~]# make && make install
更新共享
[root@centos ~]# ln -sf /usr/local/lib/libmhash.* /usr/lib64/
[root@centos ~]# ldconfig
5.5 安裝mcrypt
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf mcrypt-2.6.8.tar.gz
[root@centos ~]# cd mcrypt-2.6.8
[root@centos ~]# ./configure
[root@centos ~]# make && make install
5.6 安裝php
5.6.1 建立mysql軟鏈接、ldap軟鏈接
[root@centos ~]# mkdir -p /opt/mysql/include/mysql
[root@centos ~]# ln -s /opt/mysql/include/* /opt/mysql/include/mysql/
[root@centos ~]# ln -s /usr/lib64/libldap* /usr/lib
5.6.2 安裝
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf php-5.5.13.tar.gz
[root@centos ~]# cd php-5.5.13
[root@centos ~]# ./configure --prefix=/opt/php --with-config-file-path=/opt/php/etc --with-mysql=/opt/mysql --with-mysqli=/opt/mysql/bin/mysql_config --with-iconv-dir=/usr/local --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-ldap --with-ldap-sasl --with-xmlrpc --enable-zip --enable-soap --disable-safe-mode --with-curlwrappers
[root@centos ~]# make ZEND_EXTRA_LIBS='-liconv'
[root@centos ~]# make && make install
5.6.3 複製配置文件
[root@centos ~]# cp php.ini-production /opt/php/etc/php.ini
5.6.4 安裝memcache擴展(已經安裝PHP)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf memcache-3.0.6.tar.gz
[root@centos ~]# cd memcache-3.0.6
[root@centos ~]# /opt/php/bin/phpize
[root@centos ~]# ldconfig
[root@centos ~]# ./configure --with-php-config=/opt/php/bin/php-config
[root@centos ~]# make && make install
修改php配置文件,支持memcache
[root@centos ~]# vim /opt/php/etc/php.ini
在文件中搜索extension_dir、extension ,在相應位置添加下面兩行
extension_dir = "/opt/php/lib/php/extensions/no-debug-non-zts-20121212/"
extension = "memcache.so"
5.6.5 安裝ZendOpcache擴展(已經安裝php)
[root@centos ~]# cd /usr/local/src/
[root@centos ~]# tar zvxf zendopcache-7.0.3.tgz
[root@centos ~]# cd zendopcache-7.0.3
[root@centos ~]# /opt/php/bin/phpize
[root@centos ~]# ./configure --with-php-config=/opt/php/bin/php-config
[root@centos ~]# make && make install
修改php配置文件,支持ZendOpcache
[root@centos ~]# vim /opt/php/etc/php.ini
在文件尾加入如下代碼
zend_extension=/opt/php/lib/php/extensions/no-debug-non-zts-20121212/opcache.so
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
5.6.5 安裝php-fpm
[root@centos ~]# cp /opt/php/etc/php-fpm.conf.default /opt/php/etc/php-fpm.conf
[root@centos ~]# vim /opt/php/etc/php-fpm.conf
修改如下地方
[global]
pid = run/php-fpm.pid-p
error_log = log/php-fpm.log
emergency_restart_threshold = 10
emergency_restart_interval = 1m
process_control_timeout = 5s
pm.max_children = 35
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
[www]
user = www
group = www
5.6.6 修改nginx,支持php
[root@centos ~]# vim /opt/nginx/conf/nginx.conf
找到並修改如下代碼
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;
include fastcgi_params;
}
5.6.7將php-fpm 做爲服務運行
[root@centos ~]# cd /usr/local/src/php-5.5.13
[root@centos ~]# cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@centos ~]# chmod 700 /etc/init.d/php-fpm
[root@centos ~]# chkconfig --add php-fpm
[root@centos ~]# chkconfig --level 345 php-fpm on
服務方式啓動php-fpm
[root@centos ~]# service php-fpm restart
5.6.8 編寫測試頁面
[root@centos ~]# vim /data/www/index.php
[root@centos ~]# chown -R www:www /data/www
輸入代碼
<html>
<head><title>hello php</title></head>
<body>
<?php phpinfo();?>
</body>
</html>
5.6.8 打開瀏覽器進行測試
[root@centos ~]# service nginx restart
[root@centos ~]# service php-fpm restart
[root@centos ~]# curl http://localhost/index.html
[root@centos ~]# curl http://localhost/index.php