這篇文章大部分是來源于前人的,自己試驗(yàn)安裝最新的版本。修正了一些問題
配置防火墻,允許防火墻通過22(sshd)、80(WEB)、3306(MYSQL)端口
iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT
/etc/rc.d/init.d/iptables save ?。14媾渲?/span>
關(guān)閉selinux:
vi /etc/selinux/config
#SELINUX=enforcing #注釋掉
#SELINUXTYPE=targeted #注釋掉
SELINUX=disabled #增加
:wq 保存,退出
檢查rpm有沒有安裝
rpm -qa | grep mysql
rpm -e mysql // 普通刪除模式 rpm -e --nodeps mysql // 強(qiáng)力刪除模式,如果使用上面命令刪除時(shí),提示有依賴的其它文件,則用該命令可以對(duì)其進(jìn)行強(qiáng)力刪除
如果想yum安裝mysql可以用以下命令
yum list | grep mysql//查看yum上面提供的mysql yum install -y mysql-server rpm -qi mysql-server//查看安裝好的版本
reboot #重啟系統(tǒng)
軟件源代碼包存放位置:/opt
源碼包編譯安裝位置:/usr/local/軟件名字
下載完成后,傳送到opt目錄下,當(dāng)然也可以直接在opt目錄下使用wget下載;
yum install make apr* autoconf automake bzip2 bzip2-devel curl curl-devel gcc gcc-c++ gcc-g77 e2fsprogs e2fsprogs-devel zlib* zlib-devel openssl openssl-devel pcre-devel gd gd-devel kernel keyutils patch perl kernel-headers compat* mpfr cpp glibc libgomp libstdc++-devel ppl cloog-ppl keyutils-libs-devel libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel libXpm* freetype freetype-devel libpng* libpng10 libpng10-devel libpng-devel libjpeg-devel php-common php-gd ncurses* ncurses-devel libtool* libtool-libs libxml2-devel patch glibc glibc-devel glib2 glib2-devel krb5 krb5-devel libevent libevent-devel libidn libidn-devel nss_ldap openldap openldap-clients openldap-devel openldap-servers openssl openssl-devel pspell-devel net-snmp* net-snmp-devel -y
等所有安裝包下載安裝完以后就可以開始安裝啦·
安裝MySQL
groupadd mysql #添加mysql組
mkdir -p /usr/local/mysql #創(chuàng)建MySQL安裝目錄
cd /opt
tar zxvf mysql-5.6.16.tar.gz
cd mysql-5.6.16
待安裝完以后開始配置MySQL:
cp ./support-files/my-default.cnf /etc/my.cnf #拷貝配置文件(注意:如果/etc目錄下面默認(rèn)有一個(gè)my.cnf,直接覆蓋即可)
:wq! #保存退出
cp ./support-files/mysql.server /etc/rc.d/init.d/mysql #把Mysql加入系統(tǒng)啟動(dòng)
chmod 755 /etc/init.d/mysql #增加執(zhí)行權(quán)限
chkconfig mysql on #加入開機(jī)啟動(dòng)
vi /etc/rc.d/init.d/mysql #編輯
service mysql start #啟動(dòng)
vi /etc/profile #把mysql服務(wù)加入系統(tǒng)環(huán)境變量:在最后添加下面這一行
export PATH=$PATH:/usr/local/mysql/bin
:wq! #保存退出
下面這行把myslq的庫(kù)文件鏈接到系統(tǒng)默認(rèn)的位置,這樣你在編譯類似PHP等軟件時(shí)可以不用指定mysql的庫(kù)文件地址。
//mysql_secure_installation #設(shè)置Mysql密碼
根據(jù)提示按Y 回車
然后輸入2次密碼
service mysql restart #重啟
到此,mysql安裝完成!
用命令status查看下版本信息如下
cd /opt
mkdir /usr/local/pcre #創(chuàng)建安裝目錄
tar zxvf pcre-8.34.tar.gz
make && make install
cd /opt
groupadd www #添加www組
useradd -g www www -s /bin/false #創(chuàng)建nginx運(yùn)行賬戶www并加入到www組,不允許www用戶直接登錄系統(tǒng)
tar zxvf nginx-1.4.5.tar.gz
注意:–with-pcre=/opt/pcre-8.31指向的是源碼包解壓的路徑,而不是安裝的路徑,否則會(huì)報(bào)錯(cuò)
make && make install
/usr/local/nginx/sbin/nginx #啟動(dòng)nginx
設(shè)置nginx開啟啟動(dòng)
vi /etc/rc.d/init.d/nginx #編輯啟動(dòng)文件添加下面內(nèi)容
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: nginx is a World Wide Web server. It is used to serve# It has a lot of features, but it’s not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/usr/local/nginx/logs/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
echo "nginx already running…."
exit 1
fi
echo -n $"Starting $prog: "
daemon $nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
return $RETVAL
}
# Stop nginx daemons functions.
stop() {
echo -n $"Stopping $prog: "
killproc $nginxd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /usr/local/nginx/logs/nginx.pid
}
reload() {
echo -n $"Reloading $prog: "
#kill -HUP `cat ${nginx_pid}`
killproc $nginxd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|reload|status|help}"
exit 1
esac
exit $RETVAL
:wq! #保存退出
chmod 775 /etc/rc.d/init.d/nginx #賦予文件執(zhí)行權(quán)限
vi /etc/rc.local
添加
/etc/init.d/nginx start
/etc/rc.d/init.d/nginx restart #重啟
service nginx restart
cd /opt
tar zxvf php-5.5.9.tar.gz
cd php-5.5.9
./configure --prefix=/usr/local/php5 --with-config-file-path=/usr/local/php5/etc --with-mysql=mysqlnd --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock --with-gd --with-iconv --with-zlib --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --with-zlib --with-freetype-dir=/usr/local/freetype --with-jpeg-dir=/usr/local/jpeg/ --with-fpm-user=www --with-fpm-group=www
配置php:
在php.ini文件中改動(dòng)error_reporting
改為:
/usr/local/php5/sbin/php-fpm #啟動(dòng)php-fpm
/etc/rc.d/init.d/php-fpm restart #重啟php-fpm
/etc/rc.d/init.d/php-fpm stop #停止php-fpm
vi /usr/local/nginx/conf/nginx.conf #編輯配置文件,需做如下修改
user www www; #首行user去掉注釋,修改Nginx運(yùn)行組為www www;必須與/usr/local/php5/etc/php-fpm.conf中的user,group配置相同,否則php運(yùn)行出錯(cuò)
index index.php index.html index.htm; #添加index.php
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
}
#取消FastCGI server部分location的注釋,并要注意fastcgi_param行的參數(shù),改為$document_root$fastcgi_script_name,或者使用絕對(duì)路徑
/etc/init.d/nginx restart #重啟nginx
cd /usr/local/nginx/html/ #進(jìn)入nginx默認(rèn)網(wǎng)站根目錄
vi index.php #編輯
<?php
phpinfo();
?>
:wq! #保存退出
shutdown -r now #重啟系統(tǒng)
在瀏覽器中打開服務(wù)器IP地址,會(huì)看到下面的界面,配置成功
服務(wù)器相關(guān)操作命令
service nginx restart #重啟nginx
/usr/local/php5/sbin/php-fpm #啟動(dòng)php-fpm
/etc/rc.d/init.d/php-fpm restart #重啟php-fpm
/etc/rc.d/init.d/php-fpm stop #停止php-fpm
#############################################################################
備注:
nginx默認(rèn)站點(diǎn)目錄是:/usr/local/nginx/html/
權(quán)限設(shè)置:chown www:www /usr/local/nginx/html/ -R
php-fpm優(yōu)化方法
php-fpm存在兩種方式,一種是直接開啟指定數(shù)量的php-fpm進(jìn)程,不再增加或者減少;
另一種則是開始時(shí)開啟一定數(shù)量的php-fpm進(jìn)程,當(dāng)請(qǐng)求量變大時(shí),動(dòng)態(tài)的增加php-fpm進(jìn)程數(shù)到上限,當(dāng)空閑時(shí)自動(dòng)釋放空閑的進(jìn)程數(shù)到一個(gè)下限。
這兩種不同的執(zhí)行方式,可以根據(jù)服務(wù)器的實(shí)際需求來進(jìn)行調(diào)整。
要用到的一些參數(shù),分別是pm、pm.max_children、pm.start_servers、pm.min_spare_servers和pm.max_spare_servers。
pm表示使用那種方式,有兩個(gè)值可以選擇,就是static(靜態(tài))或者dynamic(動(dòng)態(tài))。
下面4個(gè)參數(shù)的意思分別為:
如果dm設(shè)置為static,那么其實(shí)只有pm.max_children這個(gè)參數(shù)生效。系統(tǒng)會(huì)開啟設(shè)置的數(shù)量個(gè)php-fpm進(jìn)程。
如果dm設(shè)置為dynamic,4個(gè)參數(shù)都生效。系統(tǒng)會(huì)在php-fpm運(yùn)行開始時(shí)啟動(dòng)pm.start_servers個(gè)php-fpm進(jìn)程,然后根據(jù)系統(tǒng)的需求動(dòng)態(tài)在pm.min_spare_servers和pm.max_spare_servers之間調(diào)整php-fpm進(jìn)程數(shù)。
那么,對(duì)于服務(wù)器,選擇哪種執(zhí)行方式比較好呢?事實(shí)上,跟Apache一樣,運(yùn)行的PHP程序在執(zhí)行完成后,或多或少會(huì)有內(nèi)存泄露的問題。這也是為什么開始時(shí)一個(gè)php-fpm進(jìn)程只占用3M左右內(nèi)存,運(yùn)行一段時(shí)間后就會(huì)上升到20-30M的原因了。(www. 腳本學(xué)堂)
所以,動(dòng)態(tài)方式因?yàn)闀?huì)結(jié)束掉多余的進(jìn)程,可以回收釋放一些內(nèi)存,所以推薦在內(nèi)存較少的服務(wù)器或者VPS上使用。具體最大數(shù)量根據(jù) 內(nèi)存/20M 得到。
比如說512M的VPS,建議pm.max_spare_servers設(shè)置為20(512*0.8/20)。至于pm.min_spare_servers,則建議根據(jù)服務(wù)器的負(fù)載情況來設(shè)置,比較合適的值在5~10之間。
可以最大的節(jié)省內(nèi)存并提高執(zhí)行效率。
一個(gè)php-fpm.conf配置:
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
[www]
listen = /dev/shm/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
;;4G 2he;;
pm = dynamic
pm.max_children = 60
pm.start_servers = 30
pm.min_spare_servers = 20
pm.max_spare_servers = 60
pm.max_requests = 2048
pm.process_idle_timeout = 10s
request_terminate_timeout = 120
request_slowlog_timeout = 0
pm.status_path = /php-fpm_status
slowlog = log/slow.log
rlimit_files = 51200
rlimit_core = 0
catch_workers_output = yes
;env[HOSTNAME] = iZ235e8qvv1Z
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
更多建議: