tengine php环境,基于TENGINE部署LNMP环境,。。tarzxfmy


基于tengine部署lnmp环境

Tengine-2.0.0

Mysql-5.6.15

Php-5.3.3

Centos-6.3

源码安装、配置mysql-5.6.15

从5.6开始,mysql用cmake替代了大家熟悉的configureyum install gcc gcc++ cmake

下载源码。。。tar zxf mysql-5.6.15.tar.gz

cd mysql-5.6.15

cmake ./ #这样就会安装到/usr/local/mysql/。

make

make install

创建mysql用户,赋予权限useradd mysql

chown -R mysql.mysql/usr/local/mysql

初始化mysqlcd /usr/local/mysql/scripts

./mysql_install_db--user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

配置my.cnf(/etc/my.cnf)[client]

port = 3306

socket = /tmp/mysql5.sock

# Here follows entries forsome specific programs

# The MySQL server

[mysqld]

port = 3306

user = mysql

socket = /tmp/mysql5.sock

basedir = /usr/local/mysql

datadir =/usr/local/mysql/data

open_files_limit = 10240

server-id = 1

character-set-server = utf8

skip-name-resolve

max_connections = 1000

max_connect_errors = 100000

max_allowed_packet = 512M

max_heap_table_size = 1024M

max_length_for_sort_data =4096

back_log=100

interactive_timeout = 600

wait_timeout = 600

default-storage-engine =InnoDB

net_buffer_length = 8K

sort_buffer_size = 2M

join_buffer_size = 4M

read_buffer_size = 2M

read_rnd_buffer_size = 16M

query_cache_size = 128M

query_cache_limit = 2M

query_cache_min_res_unit =2k

thread_cache_size = 300

table_open_cache = 1024

tmp_table_size = 256M

#*********** Logs relatedsettings ***********

long_query_time = 3

log_output = FILE

slow_query_log = 1

log_queries_not_using_indexes

#*********** MyISAMSpecific options ***********

key_buffer_size = 32M

bulk_insert_buffer_size =64M

myisam_sort_buffer_size =128M

myisam_max_sort_file_size =10G

myisam_repair_threads = 1

myisam_recover

#*********** INNODBSpecific options ***********

innodb_file_per_table

transaction-isolation =READ-COMMITTED

innodb_additional_mem_pool_size= 128M

innodb_buffer_pool_size =10240M

innodb_data_file_path =ibdata1:1024M:autoextend

innodb_file_io_threads = 4

innodb_thread_concurrency =0

innodb_log_buffer_size =16M

innodb_log_file_size = 256M

innodb_log_files_in_group =2

innodb_flush_log_at_trx_commit= 2

innodb_max_dirty_pages_pct= 80

innodb_lock_wait_timeout =120

innodb_flush_method=O_DIRECT

[mysqldump]

quick

max_allowed_packet = 512M

[mysql]

no-auto-rehash

# Remove the next commentcharacter if you are not familiar with SQL

#safe-updates

[myisamchk]

key_buffer_size = 32M

sort_buffer_size = 20M

read_buffer_size = 2M

write_buffer_size = 2M

[mysqlhotcopy]

interactive-timeout

[mysqld_safe]

open-files-limit = 8192

编辑启动文件(/etc/init.d/mysqld)#!/bin/sh

#

# mysqld This shell script takes care ofstarting and stopping

# the MySQL subsystem (mysqld).

#

# chkconfig: - 64 36

# description: MySQL database server.

# processname: mysqld

# config: /etc/my.cnf

# pidfile:/var/run/mysqld/mysqld.pid

# Source function library.

./etc/rc.d/init.d/functions

# Source networkingconfiguration.

. /etc/sysconfig/network

exec="/usr/local/mysql/bin/mysqld_safe"

prog="mysqld"

# Set timeouts here so theycan be overridden from /etc/sysconfig/mysqld

STARTTIMEOUT=120

STOPTIMEOUT=60

[ -e /etc/sysconfig/$prog ]&& . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/$prog

# extract value of a MySQLoption from config files

# Usage: get_mysql_optionSECTION VARNAME DEFAULT

# result is returned in$result

# We use my_print_defaultswhich prints all options from multiple files,

# with the more specificones later; hence take the last match.

get_mysql_option(){

result=`/usr/local/mysql/bin/my_print_defaults "$1" | sed -n"s/^--$2=//p" | tail -n 1`

if [ -z "$result" ]; then

# not found, use default

result="$3"

fi

}

get_mysql_option mysqlddatadir "/usr/local/mysql/data"

datadir="$result"

get_mysql_option mysqldsocket "/tmp/mysql5.sock"

socketfile="$result"

get_mysql_optionmysqld_safe log-error "/d1/data/bj-idc4-proxy51.err"

errlogfile="$result"

get_mysql_option mysqld_safepid-file "/usr/local/mysql/data/bj-idc4-proxy51.pid"

mypidfile="$result"

start(){

[ -x $exec ] || exit 5

# check to see if it's already running

RESPONSE=`/usr/local/mysql/bin/mysqladmin--socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1`

if [ $? = 0 ]; then

# already running, do nothing

action $"Starting $prog: "/bin/true

ret=0

elif echo "$RESPONSE" | grep -q"Access denied for user"

then

# already running, do nothing

action $"Starting $prog: "/bin/true

ret=0

else

# prepare for start

touch "$errlogfile"

chown mysql:mysql"$errlogfile"

chmod 0640 "$errlogfile"

[ -x /sbin/restorecon ] &&/sbin/restorecon "$errlogfile"

if [ ! -d "$datadir/mysql" ]; then

# First, make sure $datadir isthere with correct permissions

if [ ! -e "$datadir" -a !-h "$datadir" ]

then

mkdir -p "$datadir"|| exit 1

fi

chown mysql:mysql"$datadir"

chmod 0755 "$datadir"

[ -x /sbin/restorecon ] &&/sbin/restorecon "$datadir"

# Now create the database

action $"Initializing MySQLdatabase: " /usr/local/mysql/scripts/mysql_install_db--datadir="$datadir" --user=mysql

ret=$?

chown -R mysql:mysql"$datadir"

if [ $ret -ne 0 ] ; then

return $ret

fi

fi

chown mysql:mysql "$datadir"

chmod 0755 "$datadir"

# Pass all the options determinedabove, to ensure consistent behavior.

# In many cases mysqld_safe wouldarrive at the same conclusions anyway

# but we need to be sure. (An exception is that we don't force the

# log-error setting, since this scriptdoesn't really depend on that,

# and some users might prefer toconfigure logging to syslog.)

# Note: set --basedir to prevent probesthat might trigger SELinux

# alarms, per bug #547485

$exec --datadir="$datadir" --socket="$socketfile" \

--pid-file="$mypidfile" \

--basedir=/usr/local/mysql--user=mysql >/dev/null 2>&1 &

safe_pid=$!

# Spin for a maximum of N secondswaiting for the server to come up;

# exit the loop immediately ifmysqld_safe process disappears.

# Rather than assuming we know a validusername, accept an "access

# denied" response as meaning theserver is functioning.

ret=0

TIMEOUT="$STARTTIMEOUT"

while [ $TIMEOUT -gt 0 ]; do

RESPONSE=`/usr/bin/mysqladmin--socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1`&& break

echo "$RESPONSE" | grep-q "Access denied for user" && break

if ! /bin/kill -0 $safe_pid2>/dev/null; then

echo "MySQL Daemon failedto start."

ret=1

break

fi

sleep 1

let TIMEOUT=${TIMEOUT}-1

done

if [ $TIMEOUT -eq 0 ]; then

echo "Timeout error occurredtrying to start MySQL Daemon."

ret=1

fi

if [ $ret -eq 0 ]; then

action $"Starting $prog:" /bin/true

touch $lockfile

else

action $"Starting $prog:" /bin/false

fi

fi

return $ret

}

stop(){

if [ ! -f "$mypidfile" ];then

# not running; per LSB standardsthis is "ok"

action $"Stopping $prog:" /bin/true

return 0

fi

MYSQLPID=`cat "$mypidfile"`

if [ -n "$MYSQLPID" ]; then

/bin/kill "$MYSQLPID">/dev/null 2>&1

ret=$?

if [ $ret -eq 0 ]; then

TIMEOUT="$STOPTIMEOUT"

while [ $TIMEOUT -gt 0 ]; do

/bin/kill -0"$MYSQLPID" >/dev/null 2>&1 || break

sleep 1

let TIMEOUT=${TIMEOUT}-1

done

if [ $TIMEOUT -eq 0 ]; then

echo "Timeout erroroccurred trying to stop MySQL Daemon."

ret=1

action $"Stopping$prog: " /bin/false

else

rm -f $lockfile

rm -f"$socketfile"

action $"Stopping$prog: " /bin/true

fi

else

action $"Stopping $prog:" /bin/false

fi

else

# failed to read pidfile, probablyinsufficient permissions

action $"Stopping $prog:" /bin/false

ret=4

fi

return $ret

}

restart(){

stop

start

}

condrestart(){

[ -e $lockfile ] && restart || :

}

# See how we were called.

case "$1" in

start)

start

;;

stop)

stop

;;

status)

status -p "$mypidfile" $prog

;;

restart)

restart

;;

condrestart|try-restart)

condrestart

;;

reload)

exit 3

;;

force-reload)

restart

;;

*)

echo $"Usage: $0{start|stop|status|restart|condrestart|try-restart|reload|force-reload}"

exit 2

esac

exit $?

源码安装、配置tengine-2.0.0

安装pcreyum install pcre pcre-devel

安装tengine./configure--prefix=/usr/local/tengine

make

make installmkdir -p/usr/local/tengine/conf/conf.d/

useradd -s /sbin/nologinapache

编辑tengine配置文件(/usr/local/tengine/conf/nginx.conf)user apache apache;

worker_processes 16;

worker_cpu_affinity auto;

pid /var/run/nginx.pid;

worker_rlimit_nofile 51200;

events {

use epoll;

worker_connections 51200;

}

http {

include mime.types;

default_type application/octet-stream;

#charset gb2312;

charset utf-8;

server_names_hash_bucket_size 128;

client_max_body_size 10m;

log_format main '$time_local\t$server_addr\t$request_uri\t$query_string\t$request_time\t$remote_addr\t'

'$http_x_forwarded_for\t$http_user_agent\t'

'$http_cookie\t$http_referer\t$server_name\t$status';

access_log on;

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 128k;

fastcgi_buffers 4 128k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

fastcgi_intercept_errors on;

gzip on;

gzip_min_length 1k;

gzip_buffers 16 32k;

gzip_http_version 1.1;

gzip_types text/plain application/x-javascript text/css application/xml;

include conf.d/*;

}

配置vhost配置文件(/usr/local/tengine/conf/conf.d/vhost.conf)

server {

listen 80;

index index.php;

root /d1/www/vhost/;

location ~ .*\.php?$ {

include fastcgi.conf;

access_log /var/log/nginx/vhost_access.log;

}

}

编辑tengine启动文件(/etc/init.d/tengine)#!/bin/sh

#

# nginx - this scriptstarts 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 networkingconfiguration.

. /etc/sysconfig/network

# Check that networking isup.

[ "$NETWORKING" ="no" ] && exit 0

nginx="/usr/local/tengine/sbin/nginx"

prog=$(basename $nginx)

sysconfig="/etc/sysconfig/$prog"

lockfile="/var/lock/subsys/nginx"

pidfile="/var/run/${prog}.pid"

NGINX_CONF_FILE="/usr/local/tengine/conf/nginx.conf"

[ -f $sysconfig ]&& . $sysconfig

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 -p $pidfile $prog

retval=$?

echo

[ $retval -eq 0 ] && rm -f$lockfile

return $retval

}

restart() {

configtest_q || return 6

stop

start

}

reload() {

configtest_q || return 6

echo -n $"Reloading $prog: "

killproc -p $pidfile $prog -HUP

echo

}

configtest() {

$nginx -t -c $NGINX_CONF_FILE

}

configtest_q() {

$nginx -t -q -c $NGINX_CONF_FILE

}

rh_status() {

status $prog

}

rh_status_q() {

rh_status >/dev/null 2>&1

}

# Upgrade the binary withno downtime.

upgrade() {

localoldbin_pidfile="${pidfile}.oldbin"

configtest_q || return 6

echo -n $"Upgrading $prog: "

killproc -p $pidfile $prog -USR2

retval=$?

sleep 1

if [[ -f ${oldbin_pidfile} && -f${pidfile} ]]; then

killproc -p $oldbin_pidfile $prog -QUIT

success $"$prog onlineupgrade"

echo

return 0

else

failure $"$prog onlineupgrade"

echo

return 1

fi

}

# Tell nginx to reopen logs

reopen_logs() {

configtest_q || return 6

echo -n $"Reopening $prog logs: "

killproc -p $pidfile $prog -USR1

retval=$?

echo

return $retval

}

case "$1" in

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart|configtest|reopen_logs)

$1

;;

force-reload|upgrade)

rh_status_q || exit 7

upgrade

;;

reload)

rh_status_q || exit 7

$1

;;

status|status_q)

rh_$1

;;

condrestart|try-restart)

rh_status_q || exit 7

restart

;;

*)

echo $"Usage: $0{start|stop|reload|configtest|status|force-reload|upgrade|restart|reopen_logs}"

exit 2

esac

yum安装phpyum install php php-develphp-mysql php-fpm

配置php(/usr/local/tengine/conf/fastcgi.conf)

在文件最上面加上这两行配置:fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;/etc/init.d/mysqld start

/etc/init.d/tengine start

/etc/init.d/php-fpm start

chkconfig mysqld on

chkconfig tengine on

chkconfig php-fpm on

相关内容