第一步

yum -y install vsftpd

配置

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO 设定不允许匿名访问

去掉chroot_list_enable=YES的注释,并修改为No使用户不能离开主目录

xferlog_file=/var/log/vsftpd.log 设定vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来

去掉

ascii_upload_enable=YES
ascii_download_enable=YES

的注释

添加

guest_enable=YES 设定启用虚拟用户功能。
guest_username=ftp 指定虚拟用户的宿主用户。-CentOS中已经有内置的ftp用户了
user_config_dir=/etc/vsftpd/vuser_conf 设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)

//最近升级了安全设置,删除一些内置系统匿名用户,导致连接ftp出现 vsftpd: cannot locate user specified in 'guest_username':ftp
修改设置如下
guest_username=ftp 修改为 nobody

保存配置文件

touch /var/log/vsftpd.log

touch /etc/vsftpd/chroot_list

将用户ftp加入其中:

echo ftp >> /etc/vsftpd/chroot_list

yum install db4 db4-utils

centos 7 的时候,这里yum会失败,提示没有包 处理如下
---------------------------------------------------
wget ftp://195.220.108.108/linux/centos/7.2.1511/extras/x86_64/Packages/epel-release-7-5.noarch.rpm

rpm -Uvh epel-release-7-5.noarch.rpm
---------------------------------------------------

vim /etc/vsftpd/vuser_passwd.txt 奇行是用户名,偶行是密码

test
123456

保存

生成虚拟用户认证的db文件

db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db

vim /etc/pam.d/vsftpd

全部注释掉原来语句,再增加以下两句:

auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required pam_userdb.so db=/etc/vsftpd/vuser_passwd

创建虚拟用户个性CentOS FTP服务文件

mkdir /etc/vsftpd/vuser_conf/
vi /etc/vsftpd/vuser_conf/test(注:文件名等于vuser_passwd.txt里面的账户名,否则下面设置无效,test为之前的帐户名)

local_root=/var/www/html

write_enable=YES

anon_umask=022

anon_world_readable_only=NO

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

以上一行一行复制和手工打入,全部复制会多出空格导致出错.

保存,设置文件夹权限

mkdir /var/www/html/ftp
chmod -R 755 /var/www/html
chmod -R 777 /var/www/html/test
启动vsftp服务器

service vsftpd start 开启命令
service vsftpd restart 重启
service vsftpd stop 停止

由于在一些主动模式下,ftp可能无法正常连接,无法列出目录,务必还要进行被动模式的设置

设置被动模式,

一为设置vsftp的被动模式端口范围 二为 开启相应防火墙端口

vim /etc/vsftpd/vsftpd.conf

在文件末端添加:
pasv_max_port=6666
pasv_min_port=5555
/etc/init.d/vsftpd restart

添加一条防火墙规则
/etc/init.d/iptables stop
iptables -I INPUT -p tcp --dport 5555:6666 -j ACCEPT
/etc/init.d/iptables save
/etc/init.d/iptables start


/////////////////////////////////////////////////////////
常见问题
#selinux会引起如下情况

#425 Security: Bad IP connecting
vim /etc/vsftpd/vsftpd.conf #文件中添加如下一行
pasv_promiscuous=YES
service vsftpd restart


#500 OOPS:cannot change directory

setsebool -P  ftp_home_dir  on
service vsftpd restart
#553 Could not create file

setsebool allow_ftpd_full_access on
service vsftpd restart

sestatus -b| grep ftp

allow_ftpd_anon_write                       off
allow_ftpd_full_access                      on
allow_ftpd_use_cifs                         off
allow_ftpd_use_nfs                          off
ftp_home_dir                                on
ftpd_connect_db                             off
ftpd_use_passive_mode                       off
httpd_enable_ftp_server                     off
tftp_anon_write                             off

#要ftp_home_dir 和 allow_ftpd_full_access 为on

最近在一个项目中,要实现所有上传功能的上传图片上传到另一台服务器一个二级域名下。
一般的上传接口和页面都已处理实现,但是富文件编辑器这块,kindeditor的跨域远程上传还是花了点时间。
特别记一下。
将kindeditor文件夹php和里面的文件 JSON.php upload_json.php 放到远程二级域名目录下的 也同样以php目录命名中。
修改 upload_json.php 返回数据的样式,这里是核心。

$json = new Services_JSON();
//echo $json->encode(array('error' => 0, 'url' => $return_path));

$data = array('error'=>0,'url'=>'http://img2.silent.ws/'.$return_path);
$url = 'http://www.silent.ws/shwredirect/redirect.html?s='.json_encode($data);
header("Location: ".$url);

exit;

在主域名主站的目录下,新建一个 文件夹 shwredirect ,添加一页面 redirect.html。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>redirect</title>
<script type="text/javascript">
//获取url参数
function getParameter(val) {
var uri = window.location.search;
var re = new RegExp("" + val + "=([^&?]*)", "ig");
return ((uri.match(re)) ? (uri.match(re)[0].substr(val.length + 1)) : null);
}
var upload_callback = function(){
var data=getParameter("s");
var location_hash=location.hash;
if(location_hash!=null && location_hash!="" && location_hash){
var data = location.hash ? location.hash.substring(1) : '';
data = decodeURIComponent(data);
document.getElementsByTagName("body")[0].innerHTML = '<pre>' + data + '</pre>';
}else{
data = decodeURIComponent(data);
document.getElementsByTagName("body")[0].innerHTML = '<pre>' + data + '</pre>';
}
};
</script>
</head>
<body onload="upload_callback();">
</body>
</html>

修改kindeditor调用页面中的 hander地址。

uploadJson: 'http://img2.silent.ws/php/upload_json.php',

这样就OK了。

这是一个很奇葩的需求,但有时候也有用!
smarty有静态缓存,而且能够设置缓存时间为永久,但还是要做html页面静态化.
比如交易网站,要把页面和静态数据交易出去,但保留数据库等.


fetch

取得输出的内容
string fetch (string template [, string cache_id [, string compile_id]])

返回一个模板输出的内容(HTML代码),而不是直接显示出来,需要指定一个合法的模 板资源的类型和路径。你还可以通过 第二个可选参数指定一个缓存号,相关的信息可以查看缓存。

通过第三个可选参数,可以指定一个编译号。
$smarty = new Smarty();
//其它模板替换语法...

//下面这句取得页面中所有内容, 注意最后一个参数为false
$content = $smarty->fetch('模板名称.tpl', null, null, false);

//下面将内容写入至一个静态文件
$fp = fopen('news.html', 'w');
fwrite($fp, $content);
fclose($fp);

常用美国服务器 ,有时候有些情况下需要调整系统时区和时间的。
修改linux 系统时区

tzselect -》 5) Asia =》9) China =》1) Beijing Time =》1) Beijing Time

export TZ=Asia/Shanghai

vi /etc/sysconfig/clock

ZONE="Asia/Shanghai"

rm /etc/localtime

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

hwclock

重启服务器

2.设置时间和日期 或者同步互联网时间

同步互联网时间

ntpdate time.nuri.net;
hwclock -w 

完成

例如:将系统日期设定成2009年11月3日的命令
命令 : "date -s 11/03/2009"
将系统时间设定成下午5点55分55秒的命令
命令 : "date -s 17:55:55"

3.将当前时间和日期写入BIOS,避免重启后失效
命令 : "hwclock -w"
注:
date
不加参数可以直接看到当前日期时间
cal
不加参数可以直接看到本月月历