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

 


更多专业前端知识,请上 【猿2048】www.mk2048.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值