Centos服务器组建 Nginx Php Mysql Proftp Vsftp

时间: 2012-05-18  分类: Linux  收藏

@关闭SELinux
        #vi /etc/selinux/config
                设置: SELINUX="disabled"

@升级必备程序
        #yum -y install gcc gcc-c++ 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 libevent-devel libtool-ltdl libtool-ltdl-devel

@安装libiconv
        #wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
        #tar zxvf libiconv-1.14.tar.gz
        #cd libiconv-1.14
        #./configure --prefix=/usr/local         ====这里的路径必须是这个,不然php编译会出错
        #make && make install

@安装libmcrypt
        #wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz
        #tar zxvf libmcrypt-2.5.8.tar.gz
        #cd libmcrypt-2.5.8
        #./configure
        #make && make install
        #/sbin/ldconfig
        #cd libltdl/
        #./configure --enable-ltdl-install
        #make & make install

@安装mhash
        #wget http://downloads.sourceforge.net/mhash/mhash-0.9.9.9.tar.gz
        #tar zxvf mhash-0.9.9.9.tar.gz
        #cd mhash-0.9.9.9
        #./configure
        #make && make install
        #cd ../
        #ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
        #ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
        #ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
        #ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
        #ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
        #ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
        #ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
        #ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
        #ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
        #ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config

@安装mcrypt
        #wget http://nchc.dl.sourceforge.net/project/mcrypt/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz
        #tar zxvf mcrypt-2.6.8.tar.gz
        #cd mcrypt-2.6.8
        #./configure
        #make && make install

@安装cmake(mysql5.5之后要使用cmake编译安装)
        # yum -y install cmake

@创建webserver目录,nignx php mysql pcre ftp等装在这里
        #mkdir /usr/local/webserver

@安装mysql
        #groupadd mysql
        #useradd -g mysql mysql
        #wget http://downloads.mysql.com/archives/mysql-5.5/mysql-5.5.16.tar.gz
        #tar zxvf mysql-5.5.16.tar.gz

        #cd mysql-5.5.16
        #cmake -DCMAKE_INSTALL_PREFIX=/usr/local/webserver/mysql -DMYSQL_UNIX_ADDR=/usr/local/webserver/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql_datas -DMYSQL_USER=mysql
                最后出现: -- Build files have been written to: /usr/local/mysql-5.5.16,配置结束
        #make && make install
        创建/data目录  用于生成mysql_datas数据库目录
        #cd ../webserver
        #chown -R mysql mysql             //增加写权限,以便启动时生成 mysql.sock文件

              #cd mysql
        #cp support-files/my-medium.cnf /etc/my.cnf
        #cp support-files/mysql.server mysqld

        #chmod +x mysqld
        #vi /etc/my.cnf
                在[mysqld]下添加, 保存
                datadir = /data/mysql_datas
        #scripts/mysql_install_db --user=mysql --defaults-file=/etc/my.cnf --basedir=/usr/local/webserver/mysql --datadir=/data/mysql_datas         //初始化数据库
        #chown -R mysql:mysql /data/mysql_datas
        ./mysqld start   //启动mysql        有: stop status reload等参数
                若出错:Starting MySQL...The server quit without updating PID file (/data/mysql_datas/uhz001337.hichina.com.pid).[FAILED]
                mysql, 初始化出错,是否生成mysql数据库?,没有则执行scripts/mysql_install_db以及其参数

                /usr/local/webserver/mysql目录 chown -R mysql:mysql /usr/local/webserver/mysql
                出错:
                MySQL server PID file could not be found![FAILED]
                查看日志:
                #tail /data/mysql_datas/uhz001337.hichina.com.pid 有如下错误:
                mysqld_safe mysqld from pid file /data/mysql_datas/uhz001337.hichina.com.pid ended
                        解决方法: 结束进程中的mysql,再启动
        增加开机启动
        #chkconfig --add mysqld
        #chkconfig mysqld on
        #service mysqld start  ----->启动             stop restart status
        #/usr/local/webserver/mysql/bin/mysql -u root -p             ---->连接数据库
        #mysql> set password for root@localhost=password('在这里填入root密码');            ----->设置root密码
        #mysql> set password for root@127.0.0.1=password('在这里填入root密码');            ----->设置root密码
        #mysql> delete from mysql.user where user='';  ← 删除匿名用户

@安装php(包含php-fpm)
        #wget http://cn2.php.net/get/php-5.3.8.tar.gz/from/cn.php.net/mirror
        #tar -zxvf php-5.3.8.tar.gz
        #cd php-5.3.8

        //注意最后--with-freetype-dir的路径正确性
        #./configure --prefix=/usr/local/webserver/php --enable-fpm --with-mysql=/usr/local/webserver/mysql --with-mysqli=/usr/local/webserver/mysql/bin/mysql_config --with-mysql-sock=/usr/local/webserver/mysql/mysql.sock --with-pdo-mysql=/usr/local/webserver/mysql --with-mcrypt --with-zlib --enable-mbstring --with-openssl --with-gd --with-jpeg-dir --enable-gd-native-ttf --without-sqlite --enable-pdo --with-gettext --with-curl --enable-sockets --enable-bcmath --enable-xml --with-bz2 --with-gettext --enable-zip --with-png-dir --with-snmp --with-freetype-dir=/usr/include/freetype2/freetype
                出现下面错误, 原因:未指定pdo-mysql路径,
                checking for mysql_config... not found
                configure: error: Unable to find your mysql installation
                        解决方法: --with-pdo-mysql=/usr/local/webserver/mysql
                        再次执行./configure(包含参数)
                出错:
                checking for net-snmp-config... no
                configure: error: snmp.h not found. Check your SNMP installation.
                        解决方法: #yum install net-snmp-devel  net-snmp net-snmp-utils
                        再次执行./configure(包含参数)
                出现snmp错误,若编译安装snmp,要指定路径--with-snmp=/usr/local/webserver/net-snmp


        #make ZEND_EXTRA_LIBS='-liconv'
                出错:
                /usr/bin/ld: cannot find -lltdl
                collect2: ld returned 1 exit status
                make: *** [sapi/fpm/php-fpm] Error 1
                        解决方法:
                        yum -y install libtool-ltdl*
                出错:
                /usr/bin/ld: cannot find -liconv
                collect2: ld returned 1 exit status
                make: *** [sapi/fpm/php-fpm] Error 1
                        解决方法:
                        检查libiconv是否有安装,其次,确认libiconv的安装目录为/usr/local,
                        然后#ldconfig
                                出错:ldconfig: /usr/lib/libmysqlclient.so.18 is not a symbolic link
                                        解决方法:
                                        #ln -sf /usr/local/webserver/mysql/lib/mysql/libmysqlclient_r.so.18 /usr/lib/libmysqlclient_r.so.18

                出错:

                error: syntax error before "pthread_rwlock_t"

                        解决办法:

                            升级gcc版本

                出错:

                make: *** [ext/mysqli/mysqli.lo] Error 1

                        解决办法:

                            #mkdir /usr/local/webserver/mysql/include/mysql

                                                 #ln -s /usr/local/webserver/mysql/include/* /usr/local/webserver/mysql/include/mysql
        #make install
        # cp php.ini-development /usr/local/webserver/php/lib/php.ini
        #cd ../webserver/php/etc
        启动内置php-fpm
        #cp php-fpm.conf.default php-fpm.conf
        #/usr/local/webserver/php/sbin/php-fpm             ========启动php-fpm
                出错:
                ALERT: [pool www] pm.min_spare_servers(0) must be a positive value
                        编辑php-fpm.conf找到pm.min_spare_servers  去除;号,注意非注释内容pm.min_spare_servers
                ALERT: [pool www] pm.max_spare_servers(0) must be a positive value
                        编辑php-fpm.conf找到pm.max_spare_servers  去除;号,同样非注释内容pm.max_spare_servers
                WARNING: [pool www] pm.start_servers is not set. It's been set to 20.
                        编辑php-fpm.conf找到pm.start_servers  去除;号,同样非注释内容pm.start_servers
                ERROR: bind() for address '127.0.0.1:9000' failed: Address already in use (98)
                        # netstat -ntlpps -ef|grep php查看进程,有N多进程
                        nobody   26152 26151  0 15:45 ?        00:00:00 php-fpm: pool www
                        nobody   26153 26151  0 15:45 ?        00:00:00 php-fpm: pool www
                        nobody   26154 26151  0 15:45 ?        00:00:00 php-fpm: pool www
                        nobody   26155 26151  0 15:45 ?        00:00:00 php-fpm: pool www
                        #killall php-fpm
                                结束所有php-fpm进程,
                                再启动php-fpm #/usr/local/webserver/php/sbin/php-fpm

@安装pcre(Nginx的Urlrewrite模块依赖PCRE)
        # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.gz
        # tar zxvf pcre-8.12.tar.gz
        # cd pcre-8.12
        # ./configure --prefix=/usr/local/webserver/pcre
        # make && make install
        # cp /usr/local/webserver/pcre/lib/libpcre.a /usr/local/webserver/pcre/libpcre.a
        # cp /usr/local/webserver/pcre/lib/libpcre.la /usr/local/webserver/pcre/libpcre.la
        # cp /usr/local/webserver/pcre/include/pcre.h /usr/local/webserver/pcre/pcre.h
                复制到pcre目录
        # mkdir /usr/local/webserver/pcre/.libs
                创建.libs文件夹
        # cp /usr/local/webserver/pcre/lib/libpcre.a /usr/local/webserver/pcre/.libs/libpcre.a
        # cp /usr/local/webserver/pcre/lib/libpcre.la /usr/local/webserver/pcre/.libs/libpcre.la
        # cp /usr/local/webserver/pcre/include/pcre.h /usr/local/webserver/pcre/.libs/pcre.h
                复制到.lib文件夹

@安装nginx /usr/local/nginx
        # wget http://nginx.org/download/nginx-1.0.10.tar.gz
        # tar zxvf nginx-1.0.10.tar.gz
        # cd nginx-1.0.10
        # ./configure --user=nobody --group=nobody --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module
                配置时出错, pcre为编译安装,要指定pcre路径
                ./configure: error: the HTTP rewrite module requires the PCRE library.
                You can either disable the module by using --without-http_rewrite_module
                option, or install the PCRE library into the system, or build the PCRE library
                statically from the source with nginx by using --with-pcre= option.
        # ./configure --user=nobody --group=nobody --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/webserver/pcre
        # make && make install
                报错: Nginx不能很好的识别到系统中的PCRE
                make -f objs/Makefile
                make[1]: Entering directory `/usr/local/nginx-1.0.10'
                cd /usr/local/webserver/pcre
                        && if [ -f Makefile ]; then make distclean; fi
                        && CC="gcc" CFLAGS="-O2 -fomit-frame-pointer -pipe "
                        ./configure --disable-shared
                /bin/sh: line 2: ./configure: No such file or directory
                make[1]: *** [/usr/local/webserver/pcre/Makefile] Error 127
                make[1]: Leaving directory `/usr/local/nginx-1.0.10'
                make: *** [build] Error 2
        # ./configure --user=nobody --group=nobody --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/webserver/pcre
        # vi objs/Makefile
                查找configure --disable-shared,在1089行,删除./configure --disable-shared, 保存
                :st nu可显示行号
                :1089直接跳到1089行
        #make && make install


@创建Nginx日志目录
        mkdir -p /var/log/nginx
        chmod +w /var/log/nginx
        chown -R nobody:nobody /var/log/nginx

@创建Nginx配置文件
        #mv /usr/local/webserver/nginx/conf/nginx.conf  nginx.conf-
        #vi /usr/local/webserver/nginx/conf/nginx.conf
================================================
        复制进以下内容,保存
user  nobody nobody;
worker_processes 8;
error_log  /var/log/nginx/nginx_error.log  crit;
pid        /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events {
    use epoll;
    worker_connections 51200;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    #charset  gb2312;

    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-javascript text/css application/xml;
    gzip_vary on;

    #limit_zone  crawler  $binary_remote_addr  10m;

    server {
        listen       80;
        server_name  114.80.232.167;
        index index.html index.htm index.php;
        root  /data/www;

        #limit_conn   crawler  20;

        location ~.php {
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index index.php;
            include fcgi.conf;
        }

        location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
            expires      30d;
        }

        location ~ .*.(js|css)?$ {
            expires      1h;
        }

        location /status/ {
            stub_status on;
            access_log   off;
        }

        log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
        '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent" $http_x_forwarded_for';
        access_log  /var/log/nginx/access.log  access;
     }
}
================================================

@在/usr/local/webserver/nginx/conf/目录中创建fcgi.conf文件
        #vi /usr/local/webserver/nginx/conf/fcgi.conf
================================================
        复制以下内容,保存
     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
     include        fastcgi_params;
     fastcgi_split_path_info ^(.*.php)(.*)$;
     fastcgi_param  PATH_INFO $fastcgi_path_info;
================================================

@启动Nginx
        #ulimit -SHn 51200
                使用ulimit -a 可以查看当前系统的所有限制值,使用ulimit -n 可以查看当前的最大打开文件数。
                新装的linux默认只有1024,当作负载较大的服务器时,很容易遇到error: too many open files。因此,需要将其改大。
                使用 ulimit -n 65535 可即时修改,但重启后就无效了。(注ulimit -SHn 65535 等效 ulimit -n 65535,-S指soft,-H指hard)
        #/usr/local/webserver/nginx/sbin/nginx     ----->启动
        设定web目录

@每天定时切割Nginx日志
        #vi /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
================================================
        输入以下内容, 保存:
#!/bin/bash
# This script run at 00:00

# The Nginx logs path
logs_path="/var/log/nginx/"
logs_bak_path="/var/log/nginx_bak/"

mkdir -p ${logs_bak_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
cp ${logs_path}access.log ${logs_bak_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
rm -rf ${logs_path}*.log
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`
================================================
        #crontab -e        ------->设置crontab,每天凌晨00:00切割nginx访问日志
================================================
    输入以下内容
00 00 * * * /bin/bash  /usr/local/webserver/nginx/sbin/cut_nginx_log.sh
================================================

@安装proftpd
        #cd /usr/local
        #wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.4a.tar.gz
        #tar zxvf proftpd-1.3.4a.tar.gz
        #cd proftpd-1.3.4a
        #./configure --prefix=/usr/local/webserver/proftpd
        #make
        #make install
        #groupadd proftp
        #useradd  testftp -g proftp -d /data/www  -s /sbin/nologin
        #passwd testftp
        #chown testftp.proftp /data/www
        #mv /usr/local/webserver/proftpd/etc/proftpd.conf proftpd.conf-
        #vi /usr/local/webserver/proftpd/etc/proftpd.conf
================================================
        输入以下内容, 保存:
ServerName                      "Ftp server..."
ServerType                        standalone
DefaultServer                    on
Port                                  21
Umask                              022
MaxInstances                    3
User                                 nobody
Group                               proftp

DefaultRoot ~                                              限制在自己目录下,禁止更换目录(复制时)
UseReverseDNS off
IdentLookups off
MaxLoginAttempts 3
MaxHostsPerUser 2
MaxClientsPerUser 2
MaxClientsPerHost 3
MaxClients 20

SystemLog /var/log/proftpd.log
ServerIdent off


  AllowOverwrite                on
  AllowStoreRestart             on

AllowAll





DenyUser testftp


================================================
        #cp contrib/dist/rpm/proftpd.init.d /etc/rc.d/init.d/proftpd        ------>启动及停止脚本
        #chmod +x /etc/rc.d/init.d/proftpd
        #cp /usr/local/webserver/proftpd/sbin/proftpd /usr/sbin           ------->以便proftpd调用
        添加开机启动
        #chkconfig --add proftpd
        #chkconfig proftpd on
        #service proftpd start            --------->启动               start stop restart status
分享到:

评论

昵 称: