• Linux上web服务器搭建


    安装php依赖包:
    yum -y install gcc gcc++ libxml2 libxml2-devel
    yum install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel -y
    yum -y install curl-devel
    yum install openssl openssl-devel
    yum install libmcrypt libmcrypt-devel mcrypt mhash
    
    首先,我们需要下载安装php5.5
    
    cd /usr/local/src/
    wget http://www.php.net/get/php-5.5.30.tar.bz2/from/jp1.php.net/mirror
    
    
    如果以上PHP不存在了,大家可以直接到官方下载. 如果还是找不到可以留言,我将会通过邮箱发送.
    
    确保安装之前有安装gd,png,curl,xml等等lib开发库。如果不确定,执行以下命令:
    
    yum install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel -y
    
    以下参数支持,ftp,图片函数,pdo等支持,因为使用了php自带的mysqlnd,所以不需要额外安装mysql的lib库了.如果你是64位系统,参数后面加上–with-libdir=lib64,如果不是可以跳过。
    
    
    tar zxvf php-5.5.30.tar.gz
    cd php-5.5.30
    ./configure --prefix=/usr/local/php-5.5.30 --with-config-file-path=/usr/local/php-5.5.30/etc --with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --enable-pcntl --with-mcrypt=/usr/local/ --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --with-openssl
    make
    make install
    
    备注:如果PHP不需要curl和ftp的支持,可以将以上的–with-curl –enable-ftp去掉. 如果你是专业的linux从业人员,你完全可以看着help来选择你的安装参数,如果你不是的话,我建议你直接复制黏贴我的配置参数.这样可以少走一些弯路.
    
    已经安装完成了php,下面我们针对php,配置php 
    
    
    cp php.ini-production /usr/local/php-5.5.30/etc/php.ini
    cp /usr/local/php-5.5.30/etc/php-fpm.conf.default /usr/local/php-5.5.30/etc/php-fpm.conf
    
    其实我们只是使用它默认提供给我们的一个配置,当然大家也可以根据自己需要进行修改配置信息,然后进行启动php-fpm
    
    
    /usr/local/php-5.5.30/sbin/php-fpm
    
    执行以上命令,如果没报错一般情况下表示启动正常,如果不放心,也可以通过端口判断是PHP否启动
    
    # netstat -lnt | grep 9000
    tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
    
    
    安装mysql依赖包:
    yum -y install wget gcc gcc-c++ make cmake ncurses-devel libtool zilib-devel
    安装mysql:
    
    
    locate安装:
    yum -y install mlocate
    lsof安装:
    yum -y install lsof
    
    安装nginx:
    yum -y install pcre-devel
    yum -y install openssl openssl-devel
    
    安装:
    ./configure
    make
    make install
    //nginx设置pathinfo:
               fastcgi_pass 127.0.0.1:9000;
               fastcgi_index index.php;
    
               set $path_info "";  #定义变量 $path_info ,用于存放pathinfo信息
    
               set $real_script_name $fastcgi_script_name;  #定义变量 $real_script_name,用于存放真实地址
    
               if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {  #如果地址与引号内的正则表达式匹配
    
                  set $real_script_name $1; #将文件地址赋值给变量 $real_script_name
    
                  set $path_info $2; #将文件地址后的参数赋值给变量 $path_info
    
                }
    
                fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
                fastcgi_param SCRIPT_NAME $real_script_name;
                fastcgi_param PATH_INFO $path_info;
                include fastcgi_params;
    
    memcache安装:
    yum install libevent-devel
    
    
    安装libmemcached-1.0.18依赖
    gcc版本过低或导致错误,下面是升级版本
    yum install gcc44 gcc44-c++ libstdc++44-devel
    # export CC=/usr/bin/gcc44
    # export CXX=/usr/bin/g++44
    # ./configure
    #make
    #make install
    安装php的memcache扩张:
    下载地址:https://pecl.php.net/package/memcached
    memcached-2.2.0.tgz
    tar -zxvf memcached-2.2.0.tgz
    cd memcached-2.2.0
    /usr/local/php-5.5.30/bin/phpize
    ./configure --with-php-config=/usr/local/php-5.5.30/bin/php-config  --disable-memcached-sasl --enable-memcached --enable-memcached-json 
    make
    make install
    
    
    /usr/local/php-5.5.30/lib/php/extensions/no-debug-non-zts-20121212/
    
    benstalkd:
    https://github.com/kr/beanstalkd/archive/v1.10.zip
    unzip beanstalkd-1.10
    make
    make install
    nohup /usr/local/bin/beanstalkd -l 127.0.0.1 -p 11300 >> /var/log/beanstalk.log &
    
    
    安装pcntl扩张单独安装:
    cd ext/pcntl
    #先执行phpize
    /usr/local/php-5.5.30/bin/phpize
    ./configure --with-php-config=/usr/local/php-5.5.30/bin/php-config
    (ps:请正确的指定php-config的目录)
    make
    make install
    
    编辑/etc/php.ini,加入
    extension=pcntl.so

    vsftpd安装:

    CentOS 5.6 x86_64
    ip:192.168.10.100

    二、编译依赖组件

    yum -y install gcc gcc-c++ db4-utils pam-devel

    yum -y install gcc gcc-c++ db-utils pam-devel

    三、编译安装配置vsftpd

    1、编译

    依赖:

    yum install tcp_wrappers

    yum install tcp_wrappers-devel

    wget https://security.appspot.com/downloads/vsftpd-3.0.2.tar.gz

    tar -zxf vsftpd-3.0.2.tar.gz

    cd vsftpd-3.0.2

    #vi builddefs.h

    #define VSF_BUILD_TCPWRAPPERS //允许使用TCP Wrappers(默认是undef)

    #define VSF_BUILD_PAM //允许使用PAM认证

    #define VSF_BUILD_SSL //允许使用SSL(默认是undef)

    make && make install

    mkdir /etc/vsftpd/

    cp vsftpd.conf /etc/vsftpd/vsftpd.bak

    grep -v '^#' /etc/vsftpd/vsftpd.bak > /etc/vsftpd/vsftpd.conf

    #为了让vsftpd支持本地用户登录,讲身份认证模块拷贝至系统目录中

    cp RedHat/vsftpd.pam /etc/pam.d/vsftpd

    1. 添加虚拟用户口令文件

     

    [root@ftp /]#vi /etc/vsftpd/vuser.txt

    添加虚拟用户名和密码,一行用户名,一行密码,以此类推。奇数行为用户名,偶数行为密码。

     

    test001 #用户名

    123456 #密码

    test002 #用户名

    123456 #密码

    2. 生成虚拟用户口令认证文件

    将刚添加的vuser.txt虚拟用户口令文件转换成系统识别的口令认证文件。

     

    [root@CentOS5 /]#db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db

    3. 编辑vsftpd的PAM认证文件

     

    [root@CentOS5 /]#vi /etc/pam.d/vsftpd

    将里面其他的都注释掉,添加下面这两行:

     

    auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser

    account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser

    4. 建立本地映射用户并设置宿主目录权限

    所有的FTP虚拟用户需要使用一个系统用户,这个系统用户不需要密码。

     

    [root@CentOS5 /]#useradd vftp -d /var/www -s /bin/false

    5. 配置vsftpd.conf(设置虚拟用户配置项)

     

    [root@CentOS5 /]#vi /etc/vsftpd/vsftpd.conf

    guest_enable=YES #开启虚拟用户

    guest_username=vftp #FTP虚拟用户对应的系统用户

    pam_service_name=vsftpd #PAM认证文件

     配置文件实例

    /etc/vsftpd/vsftpd.conf

    listen=YES

    userlist_enable=NO

    pam_service_name=vsftpd

    tcp_wrappers=YES

    guest_enable=YES

    guest_username=vftp

    virtual_use_local_privs=YES

    user_config_dir=/etc/vsftpd/userconfig

    anonymous_enable=NO

    local_enable=YES

    write_enable=YES

    anon_upload_enable=NO

    anon_mkdir_write_enable=NO

    dirmessage_enable=YES

    use_localtime=YES

    xferlog_enable=YES

    connect_from_port_20=YES

    chown_uploads=NO

    xferlog_file=/var/log/vsftpd.log

    xferlog_std_format=YES

    nopriv_user=vftp

    async_abor_enable=YES

    ascii_upload_enable=YES

    ascii_download_enable=YES

    ftpd_banner=This Vsftp server support virtual users ^_^!

    chroot_local_user=YES

    chroot_list_enable=NO

     虚拟用户配置实例

     

    /etc/vsftpd/userconfig/test001

    test001的根目录为/data,权限为可上传、下载、创建、改名和删除的权限。

    local_root=/var/www

    write_enable=YES

    anonymous_enable=NO

    anon_upload_enable=NO

    anon_other_write_enable=NO

    anon_mkdir_write_enable=NO

    遇到的问题及解决方法:

     

    /lib/libcap.so.1: could not read symbols: file in wrong format

    collect2: ld returned 1 exit status

    make: *** [vsftpd] Error 1

    解决方法:

     

    修改vsftpd 源码包的vsf_findlibs.sh

    vi vsf_findlibs.sh

    将locate_library /lib/libpam.so.0 && echo "/lib/libpam.so.0";

    改为locate_library /lib64/libpam.so.0 && echo "/lib64/libpam.so.0";

     

    /lib/libcap.so.1: could not read symbols: File in wrong format

    collect2: ld returned 1 exit status

    make: *** [vsftpd] Error 1

    解决方法:

     

    同样修改vsf_findlibs.sh

    # look for libcap (capabilities)

    if locate_library /lib/libcap.so.1; then

      echo "/lib/libcap.so.1";

    else

      locate_library /usr/lib/libcap.so && echo "-lcap";

      locate_library /lib/libcap.so && echo "-lcap";

    fi

    修改为

    # Look for libcap (capabilities)

    if locate_library /lib64/libcap.so.1; then

      echo "/lib64/libcap.so.1";

    else

      locate_library /usr/lib64/libcap.so && echo "-lcap";

      locate_library /lib64/libcap.so && echo "-lcap";

    fi

     3、500 OOPS: vsftpd: refusing to run with writable root inside chroot()

    解决方法:

    这个错误是在v2.3.5以后才有的,见官方changlog如下(意思是不能使用chroot限制可写的根目录):

    Add stronger checks for the configuration error of running with a writeable root directory inside a chroot(). This may bite people who carelessly turned on chroot_local_user but such is life.

    好吧,我们如果启用chroot,必须保证ftp根目录不可写,这样对于ftp根直接为网站根目录的用户不方便,所以建议假如ftp根目录是/data,那么网站结构可以这样分,/data/log为日志目录,/data/web为网站根目录,这样我们就可以去掉/data目录的写入权限而不影响网站的正常运行。

    chmod a-w /data

    vsftpd默认加载配置文件位置:/etc/vsftpd.conf

    无需独立方式启动,直接启动:

    nohup /usr/local/sbin/vsftpd &

    扩展插件云盘: 链接:http://pan.baidu.com/s/1kVIu5Zh 密码:0wul

    扩展插件云盘: 链接:http://pan.baidu.com/s/1kVIu5Zh 密码:0wul

  • 相关阅读:
    数据结构与算法入门---基本概念
    java 的异常处理
    RESTful API
    数据结构
    错误代码 2003不能连接到MySQL服务器在*.*.*.*(10061)
    MySQL有四种BLOB类型
    如何彻底卸载MySQL
    Mysql 逗号分隔行列转换总结
    如何判断滚动条滚到页面底部并执行事件
    响应式布局之浮动圣杯布局(双飞翼布局)—-自适应宽度布局
  • 原文地址:https://www.cnblogs.com/diguaer/p/5719226.html
Copyright © 2020-2023  润新知