一、初衷
由于写博客可能需要图片,而在网上找了一下资料,虽然国内都有提供一些免费的云存储,如又拍,七牛,但是这又拍需要手机认证,而七牛更严格地需要身份验证,虽然写博客并不是为了什么,但是也不想提供一些真实的资料。而对于国外的云存储,如GoogleDrive,OneDrive,Dropbox,还有其他一些提供图床服务的网站,基本上都被墙。
另外,这些网站提供的外链方式获取比较麻烦,而本身图片也不多,因此就想在vps建立一个ftp服务器,把图片保存在上面,然后再建立一个虚拟主机,如img.gulucn.tk,这样也可以获取到图片。
二、部署
安装vsftpd
apt-get install vsftpd
修改vsftpd.conf配置
打开或增加以下配置
listen=YES
listen_port=xxx # 监听端口
anonymous_enable=NO # 禁止匿名访问
local_enable=YES #允许本地用户访问
write_enable=YES #允许本地用户修改和删除
local_umask=022 #默认的umask码
local_root=/var/www/ftpdata # 登录固定到 /var/www/ftpdata目录
max_clients=3 # 最大连接
dirmessage_enable=YES #当切换目录时,是否显示该目录下message隐藏文件的内容
use_localtime=YES
idle_session_timeout=600
data_connection_timeout=120
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
有一些配置已默认打开
增加ftpuser用户
useradd -s /usr/sbin/nologin ftpuser
passwd ftpuser
禁止切换到主目录外的其他目录
需要修改vsftpd.conf配置
chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list
这三个选项不同的配置将会有不同的效果,具体可以查看对chroot_list_file=/etc/vsftpd.chroot_list的一点说明
- 在/etc/vsftpd.chroot_list增加ftpuser用户
调整文件夹权限
如果直接启动服务器与测试,使用ftpuser用户登录时,可能会出现以下错误
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
因此,需要修改 /var/www/ftpdata权限与建立一个子目录
chmod a-w /var/www/ftpdata/
mkdir images
chonw -R ftpuser.ftpuser images/
在使用ftpuser用户上传图片时,只能上面到images文件夹
启动与闭关
启动vsftpd
service vsftpd start
关闭vsftpd
service vsftpd stop
三、设置图片虚拟主机
在apache2中增加一个虚拟主机,用来访问这些图片
<VirtualHost *:80>
ServerName img.gulucn.tk
ServerAdmin webmaster@localhost
DocumentRoot /var/www/ftpdata/images
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
这样,上存到ftp的图片就可以用img.gulucn.tk/xxxx来访问