安裝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安裝:php
CentOS 5.6 x86_64
ip:192.168.10.100mysql
2、編譯依賴組件linux
yum -y install gcc gcc-c++ db4-utils pam-develnginx
yum -y install gcc gcc-c++ db-utils pam-develc++
3、編譯安裝配置vsftpdgit
一、編譯github
依賴:web
yum install tcp_wrappers正則表達式
yum install tcp_wrappers-develsql
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
三、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