部署网站平台

安装MySQL

编译安装MySQL-5.1

# ./configure --prefix=/usr/local/mysql--with-charset=utf8 --enable-assembler --with-extra-charsets=all--with-plugins=all

# make -j8        //多核心编译# make install# cp support-files/mysql.server/etc/init.d/mysqld            //为mysql提供SysV启动脚本;# chmod +x /etc/init.d/mysqld # chkconfig --add mysqld# useradd –r mysql# chown -R mysql /usr/local/mysql# ./mysql_install_db --user=mysql                             //初始化;# cat /etc/my.cnf
# vim /etc/my.cnf

                                                 

[client]port              = 10861socket          = /tmp/mysql.sock[mysqld]port              = 10861socket          = /tmp/mysql.sock#skip-lockingkey_buffer = 384Mmax_allowed_packet = 1Mtable_cache = 512sort_buffer_size = 2Mread_buffer_size = 2Mread_rnd_buffer_size =8Mmyisam_sort_buffer_size= 64Mthread_cache_size = 8query_cache_size = 32Mthread_concurrency = 8max_connect_errors =2000max_user_connections =2000max_error_count = 2000wait_timeout    = 300max_connections = 2000skip-federatedlog-bin=mysql-binserver-id       = 1[mysqldump]quickmax_allowed_packet = 16M[mysql]no-auto-rehash#safe-updates[isamchk]key_buffer = 256Msort_buffer_size = 256Mread_buffer = 2Mwrite_buffer = 2M[myisamchk]key_buffer = 256Msort_buffer_size = 256Mread_buffer = 2Mwrite_buffer = 2M[mysqlhotcopy]interactive-timeout

安装MySQL5.6

# tar xf mysql-5.6.10-linux-glibc2.5-x86_64.tar.gz-C /usr/local/# ln -s/usr/local/mysql-5.6.10-linux-glibc2.5-x86_64/ /usr/local/mysql# useradd -r mysql# cd /usr/local/mysql# chown -R mysql .# mkdir /data/db# chown -R mysql.mysql /data/db/# scripts/mysql_install_db --user=mysql--datadir=/data/db/             //初始化;# grep-E -v "^( )*#|^$" /usr/local/mysql/my.cnf

[mysqld]server_id           = 1port                    = 3306socket                = /tmp/mysql.sockdatadir                     = /data/dbskip-name-resolvemax_user_connections   = 2000max_connections      = 2000log-bin               = mysql-binexpire_logs_days  = 7binlog_format        = mixedsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# cp support-files/mysql.server/etc/init.d/mysqld# chmod +x /etc/init.d/mysqld # chkconfig --add mysqld

 

安装Apache-2.4.6

安装apr-1.4.6

# tar xf apr-1.4.6.tar.gz # cd apr-1.4.6# ./configure --prefix=/usr/local/apr# make && make install

安装apr-util-1.4.1

# tar xf apr-util-1.4.1.tar.gz # ./configure --prefix=/usr/local/apr-util--with-apr=/usr/local/apr/# make && make install

安装pcre-8.32

# tar xf pcre-8.32.tar.gz# cd pcre-8.32# ./configure --prefix=/usr/local/pcre# make && make install

安装httpd-2.4.6

# tar xf httpd-2.4.6.tar.gz# cd httpd-2.4.6# ./configure \--prefix=/usr/local/apache \--sysconfdir=/etc/httpd/ \--enable-so \--enable-ssl \--enable-rewrite \--with-zlib \--with-pcre=/usr/local/pcre/ \--with-apr=/usr/local/apr \--with-apr-util=/usr/local/apr-util/ \--enable-modules=most \--enable-mpms-shared=all \--with-mpm=event# cp build/rpm/httpd.init /etc/init.d/httpd# chmod +x /etc/init.d/httpd # vim /etc.init.d/httpd

CONFFILE=/etc/httpd/httpd.confhttpd=${HTTPD-/usr/local/apache/bin/httpd}pidfile=${PIDFILE-/usr/local/apache/logs/${prog}.pid}

# service httpd startStarting httpd:                                           [  OK  ]

安装Nginx-1.4.7

# tar xf nginx-1.4.7.tar.gz# ./configure \--prefix=/usr\--sbin-path=/usr/sbin/nginx\--conf-path=/etc/nginx/nginx.conf\--error-log-path=/var/log/nginx/error.log\--http-log-path=/var/log/nginx/access.log\--pid-path=/var/run/nginx/nginx.pid\--lock-path=/var/lock/nginx.lock\--user=www\--group=www\--with-http_ssl_module\--with-http_flv_module\--with-http_stub_status_module\--with-http_gzip_static_module\--http-client-body-temp-path=/var/tmp/nginx/client/\--http-proxy-temp-path=/var/tmp/nginx/proxy/\--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/\--with-pcre# mkdir –p /var/tmp/nginx/{client,proxy,fcgi}# chown –R www.www/var/tmp/nginx# make && make install# 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# Checkthat networking is up.["$NETWORKING" = "no" ] && exit 0nginx="/usr/sbin/nginx"prog=$(basename$nginx)NGINX_CONF_FILE="/etc/nginx/nginx.conf"[ -f/etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginxmake_dirs(){       # make required directories     user=`nginx-V 2>&1 | grep "configure arguments:" | sed's/[^*]*--user=\([^ ]*\).*/\1/g' -`   options=`$nginx-V 2>&1 | grep 'configure arguments:'`   foropt 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          sleep1          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 2esac

# chmod +x /etc/init.d/nginx# chkconfig --add nginx

安装PHP

# ./configure \--prefix=/usr/local/php \--with-openssl \--enable-mbstring \--with-freetype-dir \--with-jpeg-dir \--with-png-dir \--with-zlib \--with-libxml-dir=/usr \--enable-xml \--enable-sockets \--with-mcrypt \--with-config-file-path=/etc  \--with-config-file-scan-dir=/etc/php.d \--with-bz2 \--enable-maintainer-zts--with-mysql=mysqlnd \--with-pdo-mysql=mysqlnd \--with-mysqli=mysqlnd \--enable-fpm \--with-gd

# make && make install# cp php.ini-production /etc/php.ini# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm# chmod +x /etc/init.d/php-fpm # chkconfig --add php-fpm # cp /usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf# vim /usr/local/php/etc/php-fpm.conf# service php-fpm startStarting php-fpm done# tar xf xcache-3.0.4.tar.gz

# ./configure --enable-xcache--enable-xcache-coverager --enable-xcache-optimizer--with-php-config=/usr/local/php/bin/php-config # 注意:--enable-xcache            # 启用xcache--enable-xcache-vocerager  # 附加特性--enable-xcache-optimizer  # 启用操作码优化# make && make install# tar zxvf ImageMagick.tar.gz# cd ImageMagick-6.5.1-2/# make clean# ./configure# make && make install

整合Apache与PHP

# vim /etc/httpd/httpd.conf

ServerRoot"/usr/local/apache"Listen80LoadModuleauthn_file_module modules/mod_authn_file.soLoadModuleauthn_core_module modules/mod_authn_core.soLoadModuleauthz_host_module modules/mod_authz_host.soLoadModuleauthz_groupfile_module modules/mod_authz_groupfile.soLoadModuleauthz_user_module modules/mod_authz_user.soLoadModuleauthz_core_module modules/mod_authz_core.soLoadModuleaccess_compat_module modules/mod_access_compat.soLoadModuleauth_basic_module modules/mod_auth_basic.soLoadModulereqtimeout_module modules/mod_reqtimeout.soLoadModulefilter_module modules/mod_filter.soLoadModulemime_module modules/mod_mime.soLoadModulelog_config_module modules/mod_log_config.soLoadModuleenv_module modules/mod_env.soLoadModuleheaders_module modules/mod_headers.soLoadModulesetenvif_module modules/mod_setenvif.soLoadModuleversion_module modules/mod_version.soLoadModule proxy_module modules/mod_proxy.soLoadModule proxy_fcgi_module modules/mod_proxy_fcgi.soLoadModulempm_event_module modules/mod_mpm_event.soLoadModuleunixd_module modules/mod_unixd.soLoadModulestatus_module modules/mod_status.soLoadModuleautoindex_module modules/mod_autoindex.soLoadModuledir_module modules/mod_dir.soLoadModulealias_module modules/mod_alias.soLoadModule rewrite_module modules/mod_rewrite.so
UserwwwGroupwwwServerAdminyou@example.comServerName127.0.0.1
    AllowOverride none    Require all denied
    Options Indexes FollowSymLinks    AllowOverride None    Require all granted
    DirectoryIndex index.phpindex.html index.htm
    Require all deniedErrorLog"logs/error_log"LogLevelwarn
    LogFormat "%h %l %u %t\"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined    LogFormat "%h %l %u %t\"%r\" %>s %b" common    
      LogFormat "%h %l %u %t\"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\" %I %O" combinedio        CustomLog "logs/access_log"common
    ScriptAlias /cgi-bin/"/usr/local/apache/cgi-bin/"
    AllowOverride None    Options None    Require all granted
    TypesConfig /etc/httpd/mime.types    AddType application/x-compress .Z    AddType application/x-gzip .gz .tgz    AddTypeapplication/x-httpd-php .php    AddType application/x-httpd-php-source.phpsInclude /etc/httpd/extra/httpd-vhosts.conf
Include/etc/httpd/extra/proxy-html.conf
SSLRandomSeedstartup builtinSSLRandomSeedconnect builtin# vim /etc/httpd/extra/httpd-vhost.conf
    DocumentRoot /data/htdocs/xxx_bbs    ServerName bbs.xxx.com    ErrorLog"/data/logs/apache/bbs.xxx.com.error"    SetEnvIf Request_URI "^/ok\.htm$"dontlog    
       AllowOverride FileInfo       AllowOverride All       Options FollowSymlinks       Require all granted        ProxyRequests off    ProxyPassMatch ^/(.*)\.php$fcgi://127.0.0.1:9000/data/htdocs/xxx/$1.php# vim /data/htdocs/xxx_bbs/.htaccessRewriteEngineOnRewriteBase/RewriteCond%{QUERY_STRING} ^(.*)$RewriteRule^topic-(.+)\.html$ portal.php?mod=topic&topic=$1&%1RewriteCond%{QUERY_STRING} ^(.*)$RewriteRule^article-([0-9]+)-([0-9]+)\.html$portal.php?mod=view&aid=$1&page=$2&%1RewriteCond%{QUERY_STRING} ^(.*)$RewriteRule^forum-(\w+)-([0-9]+)\.html$forum.php?mod=forumdisplay&fid=$1&page=$2&%1RewriteCond%{QUERY_STRING} ^(.*)$RewriteRule^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1RewriteCond%{QUERY_STRING} ^(.*)$RewriteRule^group-([0-9]+)-([0-9]+)\.html$forum.php?mod=group&fid=$1&page=$2&%1RewriteCond%{QUERY_STRING} ^(.*)$RewriteRule^space-(username|uid)-(.+)\.html$ home.php?mod=space&$1=$2&%1RewriteCond%{QUERY_STRING} ^(.*)$RewriteRule^blog-([0-9]+)-([0-9]+)\.html$home.php?mod=space&uid=$1&do=blog&id=$2&%1RewriteCond%{QUERY_STRING} ^(.*)$RewriteRule^archiver/(fid|tid)-([0-9]+)\.html$ archiver/index.php?action=$1&value=$2&%1RewriteCond%{QUERY_STRING} ^(.*)$RewriteRule^([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ plugin.php?id=$1:$2&%1RewriteCond%{http_host} ^xxx.com [NC]RewriteRule^(.*)$  [L,R=301]ErrorDocument404 /404.shtmlRewriteCond%{HTTP_REFERER} !^$ [NC]RewriteCond%{HTTP_REFERER} !baidu.com [NC]RewriteCond%{HTTP_REFERER} !google.com [NC]RewriteCond%{HTTP_REFERER} !google.com.hk [NC]RewriteCond%{HTTP_REFERER} !xxx.com [NC]RewriteRule.*\.(gif|jpg)$  [R,NC,L]

整合Nginx与PHPgame

# vim /etc/nginx/nginx.conf

worker_processes  4;

events{

    worker_connections  65535;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    #log_format main  '$remote_addr - $remote_user[$time_local] "$request" '

    #                  '$status $body_bytes_sent"$http_referer" '

    #                  '"$http_user_agent""$http_x_forwarded_for"';

    server_names_hash_bucket_size 128;

    client_header_buffer_size 32k;

    large_client_header_buffers 4 32k;

    client_max_body_size 8m;

     

    sendfile on;

    tcp_nopush     on;

    keepalive_timeout 60;

    tcp_nodelay on;

    fastcgi_connect_timeout 300;

    fastcgi_send_timeout 300;

    fastcgi_read_timeout 300;

    fastcgi_buffer_size 64k;

    fastcgi_buffers 4 64k;

    fastcgi_busy_buffers_size 128k;

    fastcgi_temp_file_write_size 128k;

    gzip on;

    gzip_min_length  1k;

    gzip_buffers     4 16k;

    gzip_http_version 1.0;

    gzip_comp_level 2;

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

    gzip_vary on;

    server {

        listen       80;

        server_name  bbs.xxx.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {

            root   /data/htdocs/xxx_bbs;

            index  index.html index.htm;

           location ~* \.php$ {

                root             /data/htdocs/xxx_bbs;

                fastcgi_pass     127.0.0.1:9000;

                include              fastcgi_params;

                        }

            include /etc/nginx/rewrite.conf;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

}

# vim /etc/nginx/fastcgi_params

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;fastcgi_param  SERVER_SOFTWARE    nginx; fastcgi_param  QUERY_STRING       $query_string;fastcgi_param  REQUEST_METHOD     $request_method;fastcgi_param  CONTENT_TYPE       $content_type;fastcgi_param  CONTENT_LENGTH     $content_length;fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;fastcgi_param  REQUEST_URI        $request_uri;fastcgi_param  DOCUMENT_URI       $document_uri;fastcgi_param  DOCUMENT_ROOT      $document_root;fastcgi_param  SERVER_PROTOCOL    $server_protocol;fastcgi_param  REMOTE_ADDR        $remote_addr;fastcgi_param  REMOTE_PORT        $remote_port;fastcgi_param  SERVER_ADDR        $server_addr;fastcgi_param  SERVER_PORT        $server_port;fastcgi_param SERVER_NAME        $server_name;

# vim /etc/nginx/rewrite.conf

rewrite^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;rewrite^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$$1/portal.php?mod=view&aid=$2&page=$3 last;rewrite^([^\.]*)/forum-(\w+)-([0-9]+)\.html$$1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;rewrite^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$$1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;rewrite^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$$1/forum.php?mod=group&fid=$2&page=$3 last;rewrite^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3last;rewrite^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$$1/home.php?mod=space&uid=$2&do=blog&id=$3 last;rewrite^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;rewrite^([^\.]*)/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ $1/plugin.php?id=$2:$3 last;if (!-e$request_filename) {        return 404;}