当你的wordpress需要FTP时,我们有两种解决方法来解决(针对LNMP架构来说)
将Nginx的www目录改变权限(我的目录在/data下)
chown -R nginx.nginx /data/www
当然修改为777也是可以的,不过相当不安全就是了
也可采用下面的方式
环境:Centos7(防火墙已关闭,seLinux已关闭)
1.安装 服务
yum install -y vsftpd
2.修改配置文件
2.1 编辑配置文件:
vim /etc/vsftpd/vsftpd.conf
2.2 修改配置
# 禁止匿名登录
anonymous_enable=NO
# 用户只能访问自己的目录
chroot_local_user=YES
# 允许用户目录的写入权限
allow_writeable_chroot=YES
# 启用用户列表登录控制
userlist_enable=YES
# 设置成白名单列表(允许登录)
userlist_deny=NO
这里仅列出需要变动的选项,必须严格按照此内容配置,否则使用本地用户登录会验证失败
3.创建 FTP 用户
3.1 创建 FTP 根目录:
mkdir /home/ftp
3.2 创建 FTP 登录用户:
useradd -s /sbin/nologin -d /data/www/wp-content wp-ftp
创建用户(wp-ftp),不允许登录系统(/sbin/nologin),文件存放位置(/data/www/wp-content) 3.3 设置登录密码:
echo '123456' | passwd --stdin wp-ftp
用户名:wp-ftp,密码:123456 3.4 将用户添加到登录白名单:
echo 'wp-ftp' >> /etc/vsftpd/user_list
由于设置了白名单列表,所以必须将用户添加进来,否则无法登录 如果用户在 ftpusers 中存在,也一样无法登录 3.5 添加用户的:
echo '/sbin/nologin' >> /etc/shells
由于用户被设置为 nologin,所以必须添加该解释器,否则 pam 验证不通过,会导致登录失败
4.进行登录测试
4.1 重启 服务:
systemctl restart vsftpd
4.2打开浏览器输入 ftp://服务器IP地址 按照提示输入用户名密码,如果显示目录则代表服务搭建成功了 4.3 设置 ftp 服务自启:systemctl enable vsftpd
5.安装主题或插件
如Wordpress安装插件主题时发现如下错误:“无法定位WordPress Content目录(wp-content)” / “未能到WordPress内容目录(wp-content)”的解决方法非常简单。 这个错误一般都是发生在WordPress网站后台安装升级插件或者在线安装主题的过程中,有的需要输入FTP的主机、用户名和密码后,每次都会失败,提示“无法定位WordPress Content目录(wp-content)” / “未能找到WordPress内容目录(wp-content)”等错误信息。 在新版的WordPress自动升级至最新版本时,也会出现这种错误提示。 解决方法1 通过FTP,找到WordPress网站根目录里的wp-config.php 配置文件,把下面这段代码加到该文件末尾(最后一行的”?>”之前):/** Override default file permissions */ if(is_admin()) { add_filter('filesystem_method', create_function('$a', 'return "direct";' )); define( 'FS_CHMOD_DIR', 0751 ); } 添加代码保存文件后,再重新进入后台安装更新插件主题就没问题了。不会再出现发生了错误:“无法定位WordPress Content目录(wp-content)” / “未能找到WordPress内容目录(wp-content)”的情况。 如果上面的方法无法解决,请继续往下看。 解决办法2(较推荐) 通过FTP,找到WordPress网站根目录里的wp-config.php 配置文件,把下面这段代码加到该文件末尾(最后一行的”?>”之前):(以我的根目录为‘www’为例):define('FTP_BASE', 'www'); define('FTP_CONTENT_DIR', 'www/wp-content'); define('FTP_PLUGIN_DIR', 'www/wp-content/plugins/'); define('FTP_THEMES_DIR', 'www/wp-content/themes/');
define('FS_METHOD', 'direct');其中的参数信息如下: FTP_BASE:你的WordPress的安装的根目录 FTP_CONTENT_DIR:你的WordPress的内容目录 FTP_PLUGIN_DIR:你的WordPress的插件目录 FTP_THEMES_DIR:你的WordPress的主题目录 FS_METHOD:你的安装方法 (一般无需修改) 例:
define('FTP_BASE', 'www');
define('FTP_CONTENT_DIR', 'www/wp-content');
define('FTP_PLUGIN_DIR', 'www/wp-content/plugins/');
define('FTP_THEMES_DIR', 'www/wp-content/themes/');
define('FS_METHOD', 'direct');
文章评论