这是我先发表在我的博客上的,请允许我申明下我的文章来源电子创客营 h#ttp://www.eemaker.com/discuzossftpht.html
使用阿里云oss的好处我就不用多说了,最关键可以减轻网站的带宽消耗和空间占用。那么在使用云服务器来搭建ossftp再把discuz的图片已远程附件的形式存放在oss端。阿里官方有个工具ossFtp可以方便实现这个功能。但是很多使用过的站长肯定会遇到我们通过终端连接到服务器安装好ossftp以后,discuz是可以使用远程附件。当终端我们退出以后,或者服务器重启以后这个ossftp就会自动关闭。这样用起来肯定也是够麻烦的了。我的系统是centos5.11 64位,使用ossftp web界面配置自动重启是不起作用的。所以只能自己想办法解决了。
先安装好discuz论坛,登录服务器下载ossftp服务器:执行如下指令:
wget h#ttp://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/32190/cn_zh/1466044382632/ossftp-1.0.2-linux-mac.zip 到时候ossftp升级这个地址可能也会变动。请到阿里云官网找到最新下载连接地址。
解压:unzip ossftp-1.0.2-linux-mac.zip (这些文件默认是在/root文件夹)
cd ossftp-1.0.2-linux-mac
sh ./start.sh 按照正常来讲这两步就可以把ossftp启动起来了。但是你的终端现在是没办法再执行其他指令的,加入退出来你的ossftp也会关闭。
我在网上看了大部分相关的帖子说在/etc/rc.d/rc.local 中添加开机启动ossftp的命令。可是我测试了不管怎么样我的rc.local都执行不了。所以我只能另谋大路了。思路就是,在开机的时候启动的linux的服务。那么这个服务该怎么建,其实也比较简单。
创建linux脚本服务只用在rc.d 文件夹中添加两处软连接。第一个地方在/etc/rc.d/init.d/ 这个目录下。软连接指令如下:
ln -s /root/ossftp-1.0.2-linux-mac/start.sh /etc/rc.d/init.d/ossftp
这个指令的意思也就是在 /etc/rc.d/init.d/这个目录下创建个名字叫做ossftp的软连接指向 start.sh
还有个地方要添加软连接,先运行下runlevel指令看看你的等级是几,我的默认是3.所以我就要在/etc/rc.d/rc3.d/ 目录下创建一个再指向ossftp的软连接。这个软连接的名称是有规定的,必须是已s开头,后面是数字,我用的100,(数字越大启动顺序越靠后)。你实际应用的时候要看看100这个数字有没有被占用。执行下面的命令:
ln -s /etc/rc.d/init.d/ossftp /etc/rc.d/rc3.d/s100ossftp 这样软连接就创建好了。
整体连接顺序就是 s100ossftp->ossftp->start.sh 这个是linux的服务启动规则所决定的要这么建。到这里已经完成了大部分工作。
但这个时候你reboot命令重启以后发现这个ossftp服务还是没有启动。用service ossftp status命令查看是有错误发生的。我们还要做最后一步工作。修改 /root/ossftp-1.0.2-linux-mac/start.sh这个文件。
修改成的形式如下:
if hash python2 2>/dev/null; then
nohup python2 /root/ossftp-1.0.2-linux-mac/launcher/start.py >/root/ossftp-1.0.2-linux-mac/log 2>&1 &
else
nohup python /root/ossftp-1.0.2-linux-mac/launcher/start.py >/root/ossftp-1.0.2-linux-mac/log 2>&1 &
fi
其实也就改了一点东西,我把相对地址改为了绝对地址,并且我使用nohup命令让系统ossftp服务以后到后台中运行。后面的>/root/ossftp-1.0.2-linux-mac/log 2>&1则是把nohup的日志输出到这个地方。保存一下,重启服务器就发现ok了。但是这个服务是在最后面启动,可能要等个几分钟才可以。这样就可以保证ossftp稳定的在后台运行了。
最后就是配置discuz论坛远程附件,这个配置方法阿里云ossftp官方文档里面有说明。我当时真的是配置好了可是就是上传不成功,你就要注意看看你的服务器是不是用的wdcp的面板,这里面的端口你要打开。还有个设置的地方你要关闭,这个可是卡了我两天的地方: