blog-7tips-BaiduSEO.png

提高Drupal网站百度SEO的7个技巧

Drupal是一个功能强大的内容管理系统。它对SEO(搜索引擎优化)来说也是一个很好的CMS(内容管理系统)。全球最大的搜索引擎是谷歌。但是在中国,百度才是最大的一个。我们的客户总是有兴趣知道Drupal网站如何能更好地适用于百度SEO。我们将在这里分享7个小窍门。

1.中文网址

在中文,英文和拼音URL中,哪一个才是最适合百度SEO的呢?根据我们的实践,其中运行良好的肯定不是英文,而是中文和拼音的网址。目前的趋势是越来越多的网站拥有中文网址。只要中文网址不是太长,百度对于索引页面就不会有问题。

2.中文的元标签、元描述和页面标题

不要将元标签,元描述和页面标题留空或加入非中文字符。这三部分内容将会帮助百度蜘蛛识别您的网页,也将会被显示在搜索结果中。在元标签、元描述和页面标题中,使用人类可读的内容,不要只使用关键字填充,这对页面的排名并没有帮助。

3.百度统计和百度搜索资源平台

如果你想为百度做SEO,那么使用百度分析就是必须的。就功能而言,百度统计没有谷歌分析那么强大,但它有专门针对百度搜索引擎的数据。我们建议您在网站上同时应用谷歌分析和百度统计。您可以同时使用两边的数据来帮助您做出决定。与谷歌搜索资源平台一样,百度也拥有百度搜索资源平台。百度搜索资源平台也会提供有价值的信息来做SEO。使用百度分析的缺点是没有英文版本。你必须有一个懂中文的人。

4. Drupal搜索引擎优化模块

有一些有用的Drupal SEO模块可以帮助您改进SEO。但是你不能很好地安装和使用它们,这会要求一定的配置。有关详细信息,我会推荐阅读这两本书,《Drupal 6 SEO》和《Drupal 8 SEO》 。

5.网站地图提交

每当您启动或重新启动您的网站时,请记住通过百度搜索资源平台将您的网站提交给百度。当然,您可以随时等待百度蜘蛛抓取您的网站。风险是百度蜘蛛可能会因为某些原因无法抓取到您的网站。我们建议您先在百度搜索资源平台自行提交您的网站,稍后再去查看。

6.网站速度和稳定性

像谷歌SEO一样,网站速度和稳定性也是百度排名考虑的变量。您可以通过百度分析了解您的网站速度。此外,您还可以使用中国特有的网站监控服务,如监控宝,去监控您的网站稳定性。如果您在中国大陆以外的地区托管您的网站,则需要确保您的网站没有被防火墙拦截。

7.良好的内容和UX(用户体验)

这是最重要的提示,但可能也是最难执行的。如果您有很好的内容,那么您已经完成了50%的SEO工作。好的内容意味着什么?这意味着您的内容确实为访问者提供了有价值的信息。搜索引擎有三个变量可以被视为优质内容,即:跳出率低、会话持续时间长、回访人数高。它还带来了另一个话题,即良好的用户体验(UX)。一个更好的用户体验网站可以让访问者停留更长时间。一旦你的网站有宝贵的内容和更好的用户体验,即:高度人性化的内容,你的网站将有更好的搜索引擎优化。这是百度和谷歌长期的搜索引擎优化工作。

结论

百度和谷歌的搜索引擎优化是没有捷径的。在完成第一个阶段的SEO工作后,至少需要三个月才能看到结果。另外,这是一项长期的工作。您必须始终监控分析数据来不断改进您的网站搜索引擎优化。如果您计划长期托管您的网站,那么在基本搜索引擎优化中投入时间是值得的。

虽然这对Drupal 6来说是有价值的搜索引擎优化模块,但你还是可以使用在Drupal7

blog-7tips-BaiduSEO.png

DRUPAL6/7升级到Drupal8

第一章前言
这篇文章主要针对有意向将Drupal6或者Drupal7的读者,在升级前,请务必作好备份。

下面插播一则新闻 :长风Drupal开发团队从2008年开始专注Drupal整体解决方案、Drupal主题开发、Drupal模块开发,积累了大量Drupal开发的成功案例,我们只创作精品,希望有幸能和您诚信合作。

网址:http://www.5188jxt.com

第二章 Drupal 6/7升级到Drupal8的准备
一、准备升级
在把你的Drupal6或者Drual7网站升级为Drupal8前,建议采取措施,以确保过程将顺利,并有希望的结果。不同于以往的Drupal核心版本的升级,Drupal8升级的过程不升级源站点。相反,一个新的Drupal实例从源站点拉取配置和内容。尽管升级不改变源站点,建议不要直接在线操作,使用一个在线站点的备份是一个不错的主意,防止任何影响在线在点的操作。

二、必要条件
1、一个全新的Drupal8安装的站点,并且启用Migrate Drupal模块

2、能够从新安装的Drupal8站点访问Drupal6或者Drual7的数据库

3、能够访问源站点的文件,如果只有public files被使用,可以通过源站点的域名访问,如果private files需要迁移,文件的目录需要从Drupal8站点直接被访问

4、Migrate Upgrade模块在Drupal8站点上被安装并开启。

5、如果你计划从drush升级,你需要安装drush8

6、如果你要从Drual7迁移private files,你必须在运行upgrade前,在setting.php配置drupal8的file_private_path 路径。

三、启用必须的模块
迁移过程不会在Drupal8的目标站点安装模块,只迁移在目标站点和源站点都安装了的模块相关的数据。因此,在运行迁移前,你需要在drupal8上启用你想从源站点迁移的数据相关的所有模块,比如,如果你在源站点安装有book模块,并且希望保持图书的层次结构,开始升级过程前,你必须在drupal上启用book模块,同时需要注意,Drupal6/7的模块不需要一对一地与Drupal8上的模块对应。比如,Drupal6和Drual7的block模块在Drupal8上是被分开成block和custom block模块。

四、不要配置Drupal8
注意升级的过程会覆盖drupal8上的配置,所以在升级过程完成前,不要在Drupal8上做任何配置。这意味着在运行升级前,你不需要创建内容类型和字段。括号内可能存在错误,感谢龙马兄指出。(Migrate module 将创建这些东西,这和Migrate在Drual7或者更早的版本上运行不同,在以前版本,运行迁移前,你不得不准备好所有的内容类型和字段。)

继续,你有两个选择运行迁移:

1)使用migrate upgreade interface,这是一个较早的方法,可以通过Drupal8上的用户界面完成操作,但是,它提供更少的控制机会。

2)使用drush,这个更稳定,更快速,允许选择性的迁移,但是需要一个额外的模块,它必须在命令行被执行。

第三章 通过WEB界面执行升级
一、通过WEB界面执行升级
一旦你看了Drupal6/7升级到Drupal8(一),使用web界面是一个可行的执行迁移的方法。

贡献的第三方Migrate Upgrade 模块(https://www.drupal.org/project/migrate_upgrade)是针对从drupal6/7升级到Drupal8提出的用户界面。它仍然在开发中,所以过程可能中断,如果有报错产生,首先查看https://www.drupal.org/project/issues/migrate_upgrade,这里可能已经修复了错误,如果没有,和开发者核对,https://www.drupal.org/irc。

安装模块后,访问你的Drupal8站点的/upgrade页面,你会看到一下页面。当你已经准备好进行升级,点击continue按钮,这将带你到下面显示的migrate upgrade页面。输入数据库的访问凭证以及drupal6或者Drual7的文件访问路径,点击review upgrade,如果你的drupal6或者Drual7站点使用数据库前缀,确保展开advanced options 并且填入前缀信息。

http://5188jxt.com/sites/all/libraries/ueditor/php/upload/20160213/1455370273290.png

如果数据库访问凭证正确,升级预览页面将基于源站点模块展示源和目标的匹配和不匹配项。

你不能在这个页面直接做任何动作来修复哪些显示missing的项。他们中的一些没有实现,需要进行开发,然而另一些表示模块在目标站点没有被安装。在这个例子中,book模块在源站点中被安装了,但是在目标站点中没有被安装,所以显示missing。

http://5188jxt.com/sites/all/libraries/ueditor/php/upload/20160213/14553702639947.png

可以迁移的部分被列出来,默认是收起的。

http://5188jxt.com/sites/all/libraries/ueditor/php/upload/20160213/14553702713995.png

这是执行真正升级之前的最后的页面,所以,这是点击取消的最后机会,一旦你点击perform upgrade 按钮,升级进程就正式开始了。根据目标站点的内容和配置的大小和类型,升级可能花费很长一段时间,做好让进程长时间运行的准备。

新的信息显示在页面的顶端,较老的信息将在页面的底端消失随着进程的继续,所有的信息都将被记录,并且可以稍后被查看。一旦进程结束,将带着总览的结果信息跳转到站点首页。

在日志页面可以查看被记录的信息。

http://5188jxt.com/sites/all/libraries/ueditor/php/upload/20160213/14553702677032.png

第四章 使用DRUSH执行升级
一、获取合适的Drush版本
确保你使用的是从composer或者Github获取的最新的drush。如果你使用Github版本,你仍然需要Composer下载相关的依赖。 Drupal.org/PECL/Pear/etc的Drush已经过期了。

对桌面端开发用户来说,你可以在桌面开发端通过发起一个命令提示符,运行下面的命令:[c:\your_path_to_acquia]\drush\composer global require drush/drush:dev-master 来使用composer更新drush。

检查Drush的版本drush –version

二、必要的Drupal模块
要使用Drush迁移,你需要下载并启用Migrate Upgrade模块,如果你计划做的不止一次性的升级,你需要下载migrate tools

三、简单的方法:使用 migrate-upgrade
迁移工具将添加 drush迁移的命令,比如drush migrate-staus(ms) 以及migrate-import(mi).如果你启用这个模块并运行drush migrate-status 而没有通过migte upgrade 模块做任何动作,你不会看到任何可用的迁移在运行。

这是因为独特的迁移被基于你设置的源数据动态地创建。只要Migrate 不知道使用的源,就不会有迁移被创建。

为了解决这个问题,我们使用migrate upgrade 模块,migrate upgrade 模块来自Drush命令 drush migrate-upgrade.这个模块做两件事情:

1)它将为你的网站生成迁移,基于你配置的源网站,比如,如果book 模块在你的Drupal6和Drupal8网站同时被启用,D6的book 迁移会被创建。

2)它通过依赖顺序,执行每一个创建的迁移。

尽管如此,为了更多的控制,你可能想通过–configure-only选项,这样,他只执行第一步的创建迁移。

drush migrate-upgrade –legacy-db-url=mysql://user:password@server/db –legacy-root=http://mydrupal6site.com –configure-only

加上configure-only 参数运行drush迁移Drupal后,你可以运行drush migrate-status 来列出可能执行的迁移。这时,你可以概览或者选择实行某些迁移。drush migrate-import {migrate name} 可以被用来分别执行他们,或者drush migrate-import –all 执行整个列表。

四、复杂的方法:使用 migrate-manifest
也可以通过一个manifest文件来设置一个特殊的迁移设置。这个让你可以以重复的方式运行成组的迁移。使用这种方法,你需要migrate manifest模块,当你有所有单元的设置,你可以通过运行drush config-list|grep migrate 得到全部可用的迁移。

这时,你需要创建一个可用的yaml文件,它看起来像下面的代码例子。你只需列出你需要的部分,你需要添加迁移来解决所有依赖,迁移能够被列出来,迁移将基于依赖为他们排序。

# user
– d6_user
– d6_user_profile_field
– d6_user_profile_field_instance
– d6_user_profile_entity_display
– d6_user_profile_entity_form_display
– d6_profile_values:user
– d6_filter_format
– d6_user_role
– d6_user_picture_entity_display
– d6_user_picture_entity_form_display
– d6_user_picture_file
– d6_user_picture_field
– d6_user_picture_field_instance
# taxonomy
– d6_taxonomy_vocabulary
– d6_taxonomy_settings
– d6_taxonomy_term
# nodes
– d6_node
– d6_node_revision
– d6_node_type
– d6_view_modes
– d6_filter_format
– d6_field_instance_per_form_display
– d6_field_instance_widget_settings
– d6_field_formatter_settings
– d6_field_instance
– d6_field
– d6_field_settings
– d6_node_settings
– d6_cck_field_values:*
– d6_cck_field_revision:*
# taxonomy fields
– d6_term_node_revision
– d6_term_node
– d6_vocabulary_entity_display
– d6_vocabulary_entity_form_display
– d6_vocabulary_field_instance
– d6_vocabulary_field
# blocks
– d6_block
– d6_menu
# custom blocks
– d6_custom_block
– d6_filter_format
# book
– d6_book
– d6_book_settings
# file migrations are configurable, see https://www.drupal.org/node/2257723
– d6_file:
  source:
  conf_path: sites/assets
  destination:
  source_base_path: destination/base/path
  destination_path_property: uri

via : http://drupalchina.cn/node/6586

Drupal 网站安全检查常见问题

下面的问题,是客户接受上级单位安全检查,所涉及的问题,应该具有很高的代表性。经过上级检查,Drupal的安全性得到了高度的认可。

1,有无登录失败次数限制,

有,6次封IP

2,用户在线有效时长,越短越好

可以在settings.php里面配置

3,一个账号同时只能有一个人在线。

session_limit,可以配置限制次数。限制为1,自动踢出旧有登陆

4,搜索框,有过滤么

有。

5,恶意文件防护

自带防护PHP可执行文件的上传。

6,网站日志:

apache有日志, 网站本身有日志。

7,同时在线用户数,500?

8,密码强度

https://www.drupal.org/project/password_policy

9,windows 文件夹共享默认打开了, net share

https://jingyan.baidu.com/article/fdbd4277bce713b89f3f486a.html

运行窗口,在窗口中输入命令gpedit.msc

点击“用户配置/管理模板/共享文件夹”菜单项

在右侧窗口中找到“允许发布共享文件夹”设置项。

右键点击“允许发布共享文件夹”的设置项后,在弹出菜单中选择编辑菜单项。

这时就会弹出“允许发布共享文件夹”的编辑窗口,在窗口中点击“已禁用”设置项,最后点击确定按钮。

via :http://www.thinkindrupal.com/node/6065

Drupal 7, 8 ,9

Drupal创始人,在Drupal欧洲大会上,讲了Drupal9的大致发布时间。经过社区激烈的讨论,Drupal9的发布日期将会在2020年,距今一年多的时间发布。Drupal9发布以后,2021年11月,Drupal8结束维护。Drupal7的维护期延长到2021年11月,过后,同时将会有商业的维护支持。

Drupal8的短命,这将会是一个不争的事实。毫无疑问,Drupal8自问世以来,并未在市场上取得成功,来自替代技术的压力,Drupal社区的分裂。向新技术转换的阵痛。

以前,Drupal核心开发者webchick曾发文说,Drupal9最早也是2021年的事了,现在往前提了整整一年。Drupal核心人员终于达成一致。乐观一点,明年的这个时候,Drupal9的alpha版本就会出现。

Drupal9无意是一个值得期待的版本,作为Drupal8的替代者,他将继承Drupal8现有的安装量,推广起来数字方便要好看很多。最重要的是,Drupal8里面遗留的代码,将会被删除,优秀的将会保留,Drupal以来的库的版本将会升级,使用新版本来替代就有版本,据说新版的symfony,具有更为优良的性能。React js将会引入,Drupal开发者的技术堆栈,将会内置React,这让Drupal开发者,更值钱。多媒体处理,panel布局,迁移都会更加稳定,Json API将会内置到内核中。

那些没有升级到Drupal8的Drupal7用户,可以考虑两年后直接升级到Drupal9。那些已经升级到Drupal8的用户,升级到Drupal9则是平滑的。

Drupal仍然是一个让人振奋的PHP框架平台。

via :http://www.thinkindrupal.com/node/6066

drupal-cluster

如何在阿里云上部署Drupal站点

鉴于大家经常使用阿里云做为站点部署服务器,很多朋友咨询有没有drupal在阿里云上的部署建议,所以将之前部署阿里云的一些经验写下来共享一下,欢迎拍砖。

ECS的选择:

  1. CPU相对要高,Drupal比较消耗CPU,开启OPCache
  2. 硬盘,选择高速IO硬盘,读写文件较快
  3. 定期备份相关文件
  4. 防火墙策略,建议修改SSH默认端口,以免被攻击

数据库:

  1. 选择RDS,不推荐自建MySQL服务,RDS做好定期备份策略
  2. 做好相关mysql配置
  3. 多并发可以做MySQL主从配置

大文件图片:

  1. 推荐使用OSS,搭配相关Drupal模块
  2. 为节省OSS流量,可以配搭CDN,流媒体一定要通过OSS播放

多站点集群:

  1. 可以通过varnish + 多个ECS做集群,提高并发
  2. 多个站点可以搭配多个Drupal站点,API站点单独部署
  3. 推荐将OSS挂载到一台服务器上,方便做为文件备份服务器
drupal-cluster

Docker和虚拟化:

  1. 推荐使用CentOS7.x做为镜像
  2. 推荐使用阿里云的容器服务 dev.aliyun.com
  3. 推荐将常用的Docker提交成自有镜像

RDS数据库

  1. RDS回滚风险须知
    目前RDS支持数据回滚,回滚是针对整个实例的,不支持单表单库,在回滚之前备份好重要数据,以免回滚完成以后导致数据丢失。如果只是部分表格或者部分数据需要回滚,我们建议您通过创建临时实例来恢复数据,临时实例创建成功后从临时实例中把需要的数据导回到生产库。
  2. RDS锁定策略
    RDS具有锁定机制,如果您的实例存储空间满了,系统就会将您的实例锁定,实例被锁定以后会变成只读,建议定期检查存储空间使用情况,同时也可以在RDS控制台中设置空间占用短信提醒。
  3. RDS故障切换 RDS
    采用一主一备的高可用模式,当主库出现故障时,RDS会在30秒钟之内切换到备库。切换过程中有(小于等于)30秒钟的不可访问,需要您设置好程序跟RDS的自动重连,避免因为切换导致您的服务不可用。
  4. RDS切换内外网存在的风险
    RDS在切换内外网的过程中会出现服务器跟RDS的连接断开,切换完成以后请及时更新程序中的连接地址,同时切换内外网会导致IP地址变更。

购买及费用建议:

  1. 建议购买1M带宽的多台服务器做为后端Drupal节点,一次性购买一年以上有优惠
  2. 建议购买弹性带宽的服务器做为负载均衡服务器,安装varnish,内存和CPU不用太高。
  3. RDS建议将不经常访问的archive数据库删掉,自建MySQL用于存储,因为RDS费用较高。此外MySQL的inodb即使删除数据也没法将RDS的存储降下来,如果要降下来,最好擅长数据库,重新导入一遍。

转载 自: http://www.drupal001.com/2017/05/drupal-aliyun/ 

解决 WordPress“正在执行例行维护,请一分钟后回来”

WordPress在升级程序、主题、插件时,都会先切换到维护模式,也就是显示 “正在执行例行维护,请一分钟后回来(Briefly unavailable for scheduled maintenance. Check back in a minute)”,如果升级顺利,也就几秒左右就恢复正常;但是如果由于网速不佳等原因导致升级中断,WordPress就会一直停留在维护模式,不论前台还是后台,都一直显示“正在执行例行维护,请一分钟后回来“。

如何解决这个问题呢?

1.马上通过FTP登录你的网站,删除WordPress根目录下的 .maintenance ,刷新网页即可。

2.但是有时候你会发现,根目录根本就没有 .maintenance!倡萌最近就遇到这个问题,最初以为是隐藏了,所以使用SSH登录服务器,但是依旧没有看到,怎么办?其实有一个比较简单的办法,直接新建一个空的txt文本,上传到主机空间中,然后重命名为 .maintenance,然后你会发现 .maintenance 居然不见了!不用担心,重新刷新你的网站,是不是正常了?!

3.如果还是不行,或者你想让它以后可以显示 .maintenance ,那就打开 /wp-admin/includes/class-wp-filesystem-direct.php

找到下面的代码:

	function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
		// safe mode fails with a trailing slash under certain PHP versions.
		$path = untrailingslashit($path);
		if ( empty($path) )
			return false;
 
		if ( ! $chmod )
			$chmod = FS_CHMOD_DIR;
 
		if ( ! @mkdir($path) )
			return false;
		$this->chmod($path, $chmod);
		if ( $chown )
			$this->chown($path, $chown);
		if ( $chgrp )
			$this->chgrp($path, $chgrp);
		return true;
	}

将其改为:

function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
 // safe mode fails with a trailing slash under certain PHP versions.
 if ( ! $chmod )
 $chmod = $this->permission;
 
if(ini_get('safe_mode') && substr($path, -1) == '/')
 {
 $path = substr($path, 0, -1);
 }
 
if ( ! @mkdir($path) )
 return false;
 $this->chmod($path, $chmod);
 if ( $chown )
 $this->chown($path, $chown);
 if ( $chgrp )
 $this->chgrp($path, $chgrp);
 return true;
}

将其改为:然后刷新FTP目录,是不是看到.maintenance了,删除它吧!

Phpcms V9广告位循环数据调用方法详解

Phpcms V9广告位循环数据调用方法详解

你对Phpcms V9广告位的了解有多少?在没看本文之前,你可能不会用,或者只用到过其中一两种,而在本教程之后,相信你对Phpcms V9广告位有更深的了解,希望你能灵活运用!下面CMSYOU从广告位的分类,到广告位循环调用做一个系统的详细介绍!

Read More