1. directoryinfo,怎么利用谷歌找外贸客户?
外贸主动营销的基础是网络搜索,网络搜索的基础是搜索引擎,要使用搜索引擎主动搜索客户,要先了解主动搜索的基本原理。这里为什么强调“主动搜索”呢?因为很多人把主动搜索跟SEO混淆,主动搜索是我们用关键词去搜索客户,而SEO是客户用关键词搜索我们,属于“被动搜索”,所以“我们搜客户”和“客户搜我们”,是2种不同的概念,千万不可以混淆。
主动搜索的基本原理,以Google为例,请看下图Google搜索结果页面截图:
我们可以看到,每一条的搜索结果都是由3个部分内容组成,分别是一条标题(title),一个网址(URL)和一段描述(description/text),而我们输入的关键词要么在标题、网址和描述中都有,要么只在其中一项中出现。
那么这三项内容是从哪里提取的呢?我们点击每一条搜索结果,即可打开一个链接,通常这个链接是客户的网站,所以显然我们可以得到这个结论:这三项内容是来自于客户的网站。也就是说当客户网站里面的标题、网址、描述中有我们输入的关键词的时候,他的网站才有可能被我们搜索到。
那我们怎么知道客户网站里面的这三项内容里面有没有我们输入的关键词呢?这几项内容出现在网站哪里,怎么查找?以上面搜索结果的第一个网站为例,首先,最简单的是网址和标题,打开客户网站,直接查看网址域名和标题内容就可以了。
描述则一般要进入到网页的源代码里面查找,在网页点击鼠标右键,选择“查看源文件”,打开源代码之后,按Ctrl+F查找“description”字段的内容即可
同样的方法也可以在源代码里面查询到标题的内容:
通常源代码里面title和description的内容都是挨在一起的,所以只要查询其中一项就能看到另外一项,但也不是每个网站的源代码里面都有description,有些网站源代码里面没有description,搜索结果页面里面的描述内容是来自网站里面其他About us 或者其他简介的内容。
这里面我们回头来对比下搜索结果页面第一条的标题、网址、描述和我们通过客户网站找出来的这三项内容是否一致呢?
显然,跟我们上面通过网站和源代码里面找出来的这3项内容是完全一致的。所以,如果我们要去搜索我们的目标客户,我们必须要用目标客户网站里面的关键词搜索,尤其是客户网站里面出现在标题、网址、描述中的关键词。如果我们只是单纯利用我们自己的产品名称来搜索,那么将会搜索到自己公司或国内同行的网站,或者是很多B2B/B2C平台的网站,这些网站出现最多产品词,因为你和同行的网站主要是介绍自己做什么产品,所以会写很多产品词,而B2B/B2C平台在上传商品的时候,也要填写很多产品关键词。
另外,有些人在论坛上学习到用产品词+importer/buyer这个样的关键词来搜索,结果也是搜索都很多B2B平台等,学完上面的内容,大家应该都知道原因了,即使客户产品是进口的,大多数都不会在网站写自己是一个importer或者buyer。
还有的人使用Google 趋势(Google Trends)里面关键词,或者是B2B平台的热度关键词来搜索客户,这些关键词也是围绕产品比较多,搜索结果同样不好。Google Trends的关键词更适合用来做SEO关键词分析,不适合做主动搜索关键词;B2B平台的关键词只是客户在平台上搜索供应商的关键词,而不是我们去主动搜索客户的关键词,只针对某个平台的搜索,因此局限性就更大了。
所以我们把主动搜索的基本原理总结如下:关键词的搜索结果跟客户网站的标题、网址、描述三项内容是一致的,想要搜索到正确的客户网站,就要用目标客户网站里面的关键词来搜索。
但是,如果有人认为,关键词找对了,搜索就没有问题了,一个关键词下去,就可以把网站里面有这个关键词的目标客户全部找出来了,那就未免太乐观了,因为搜索引擎是有局限性的。
比如,我们在Google里面输入一个关键词,Google提示跟这个关键词相关的搜索结果有2千多万条:
按照一页显示10条计算,理论上2千万条至少能有2百多万页,然而当我们实际去翻页的时候(如下图),却只能翻到39页,并且提示只显示389条信息。总数据有2千多万,而我们实际只得到389条,this is a sadstory……
你可以用任何一个关键词去测试,不管关键词简单还是复杂,长还是短,你永远翻不到100页,也就是获得不超过1000条的客户数据,当然了,关键词越复杂越长,搜索结果相对也会越少。所以,搜索引擎搜索的第一个局限性就是:一个关键词,只给你显示几百条的搜索结果。
要突破这个局限性,就要扩充搜索关键词的数量,关键词越多,获得的搜索结果就越多。1个关键词有几百条,1万个关键词就有几百万条了,就算去掉一些重复的和无效的,至少也能有几十万条。
搜索引擎的第二个局限性是:只有关键词匹配网站的搜索结果,没有专门针对商业目标网站搜索。也就是说,当你输入一个关键词power banks的时候,他只会根据关键词的匹配度给您显示相关结果,这些搜索结果五花八门,有新闻网站、平台网站、视频网站等等,当然也会有目标客户的网站,但要看目标客户数据在显示总数据中所占的比例有多少。找到目标客户的网站是我们的实际搜索需求,如果搜索结果里面出现很多无关的网站,不仅浪费了显示结果的额度,亦浪费了我们的时间去筛选和过滤。试想下,一个关键词只能看到几百条数据,而杂乱数据就占了50%以上,那我们的搜索是不是很多时候在做无用功呢?
所以,要打破这个局限,我们必须要在关键词设置的时候,按照我们既定的目标客户类型去设置,换句话说就是你想要搜索什么样的客户网站,就用跟这种客户精准匹配的关键词来搜索,这样才能提高搜索结果的准确度,数据准确度越高,我们获得的优质数据才能越多。
至于如何去找既定目标客户精准匹配的关键词,如何扩充搜索关键词的数量,可以关注我私聊。
2. 世界上用什么搜索引擎的人最多?
1.Google 全球最大的机器搜索引擎, Google 每天提供 2 亿次查询服务,占全球搜索引擎查询市场份额的 29.2 %,无可争议的世界第一; Google 通过对 80 多亿网页进行整理,为世界各地的用户提供适需的搜索结果,而且搜索时间通常不到半秒。
2.Yahoo !是全球认知度最高及最有价值的互联网品牌之一,也是最大的门户网站。有英、中、日、韩、法、德等 10 余种语言版本。在全球消费者品牌排名中居第 38 位 , 是全球最大的搜索引擎和门户网站。拥有 2.94 亿有效注册用户,每天 12 亿访问人次,覆盖全球网民的 61% ;全球有 1840 万业务采购决策者访问 Yahoo!
3.MSN 属于微软公司,美国对互联网浏览量进行统计的康姆斯科公司公布统计数据称:微软 MSN 网站已接近雅虎,成为继美国在线之后,网民浏览人数排名第二的美国门户网站。
4.AOL (美国在线)是美国也是世界上最早的门户网站之一, 80% 是美国本土用户,其搜索结果全部来自于 Google 。也就是说,有良好的 Google 排名也有良好的 AOL 排名。
5.Lycos 是全世界最早的搜索引擎之一。根据媒体调查统计, Lycos 以月 3700 万次的独立访问排名第 5 大用户最常访问的网站。目前, Lycos 主要搜索结果来自于 Alltheweb 。
6. Ask 规模不大,但很有特色的搜索搜索。 Ask 是 DirectHit 的母公司,于 2001 年收购 Teoma 搜索引擎,并全部采用 Teoma 搜索结果。
7.Overture 是最早的付费搜索引擎(竞价排名搜索引擎)。搜索结果被 Yahoo, MSN 等采用。 Overture 收购了 Google 的对手 Inktomi 后被 Yahoo 收购,它开通了含约 32 亿文档的 “ 全球最大 ” ( Overture )的搜索索引服务,也是业界提供关键词标准流量的公司。
8.Netscape 由著名的浏览器公司网景公司开发的搜索引擎, Netscape 的搜索结果全部来自于 Google 。另外,全世界最大的开放式目录 DMOZ 录属于网景公司。
9.AltaVista 全世界最古老的搜索引擎之一,也是功能最完善,搜索精度较高的全文搜索引擎之一。截止 2002 年 6 月, AltaVista 宣称其数据库已存有 11 亿个 Web 文件,并且经过升级,其搜索精度已达业界领先水平。该搜索引擎已于 2003 年被 Yahoo 收购。
10.Inktomi 只对搜索引擎提供搜索结果。 2003 年被 Overture 收购。在 2004 年 Yahoo 开发自己全新的搜索引擎技术之前, Inktomi 还是全球第二大搜索引擎,其搜索结果被 Hotbot, MSN 等著名的网站采用。
11.HotBot 是比较活跃的搜索引擎,数据更新速度比其他引擎都快。网页库容量为 1.1 亿,以独特的搜索界面著称。该引擎已被 Lycos 收购,成为 Terra Lycos Network 的一部分。
12.AllTheWeb 是目前成长最快的搜索引擎,支持 225 种文件格式搜索,其数据库已存有 49 种语言的 21 亿个 Web 文件,而且以其更新速度快,搜索精度高而受到广泛关注,被认为是 Google 强有力的竞争对手。
13.LookSmart 与 Yahoo 、 Open Directory Project ( Dmoz )等齐名的分类目录搜索引擎,,向包括 MSN 、 AltaVista 、 Excite 提供目录搜索。在全球拥有相当规模的商业客户资源,并通过与 MSN 、 AltaVista 、 Infospace 等重量级门户合作,共享资源,使得 LookSmart 成为国内出口企业进行境外搜索引擎注册推广的一条重要渠道。
14.Infospace 是著名的元搜索引擎。元搜索引擎在接受用户查询请求时,同时在其他多个引擎上进行搜索,并将结果返回给用户。
15.Infoseek 是全球著名的搜索引擎之一,提供全文检索功能,并有较细致的分类目录。网页收录极其丰富,以西文为主。
16CNN 美国有线新闻网( CNN )是美国时代华纳旗下的新闻媒体网站。于 2001 年随时代华纳集团并入了美国在线。 CNN 覆盖了六大洲,成为了历史上第一个名副其实的全球电视网。
3. 还有哪些发掘新客户的新渠道?
分享几个找外贸客户的渠道和方法:
学会使用搜索引擎说到开发客户,必须要提的就是搜素引擎开发客户了,我个人比较喜欢用GOOGLE。以下是搜索引擎网址,大家可以根据自己的需求去使用。
谷歌网址:http://www.google.com
必应:http://cn.bing.com/
雅虎:https://search.yahoo.com/
俄罗斯搜索引擎:https://yandex.com
日本:https://www.goo.ne.jp/
美国:http://www.search.aol.com
美国:http://www.webcrawler.com/
网址:http://www.mywebsearch.com/
网址:http://www.wow.com/
网址:http://www.infospace.com/
网址:http://www.blekko.com/
网址:http://www.fireball.de
网址:http://www.lycos.com
网址:http://www.search.com
网址:http://www.hispavista.com
B2B平台/B2C平台B2B平台包括中国制造网、环球资源等,国外客户可以在平台上搜索感兴趣的产品,找到卖家,发布询盘。卖家回复询盘,商榷订单,促成合作。
http://www.alibaba.com
http://www.made-in-china.com
http://www.globalspec.com/
http://www.kompass.com
http://www.tradekey.com
http://www.tootoo.com
http://www.ecvv.com
http://www.ec21.com
http://www.fuzing.com
http://www.b2s.com/
http://www.commerce.com.tw
http://www.industrydirectory.com
http://www.diytrade.com
http://www.ecplaza.net
B2C跨境电商平台:速卖通、亚马逊、eBay、Wish、兰亭集势、敦煌等。
发布产品之前,需要对各大平台优势及产品的市场做好了解。比如了解你的产品目标客户群、你的主打市场,通过你的产品,了解你的同行或者你的老客户、他们常用的平台有哪些等等。再根据自己的实际情况,选择合作的平台。
海外社交媒体外国人的社交圈有Facebook、WhatsApp、Twitter、LinkedIn、TikTok、Pinterest、Instagram、YouTube等。
LinkedIn: https://www.linkedin.com/
Facebook:https://www.Facebook.com/
Instagram: https://www.instagram.com/
Twitter:https://twitter.com/
Tumblr: https://www.tumblr.com/ (微博客平台)
YouTube: https://www.youtube.com/
Pinterest:https://www.pinterest.com/
vk:https://www.vk.com(欧洲社交网站)
Flickr:https://www.flickr.com/(图片存储和视频托管网站)
MySpace:http://www.myspace.com (以音乐为重心的社交网络服务网站)
社交网站开发客户技巧:添加好友,定期更新发布个人动态,社交网站一般要和客户互动起来。如果不互动的话,客人就不会关注到你。
黄页名录德国名录:
http://www.wlw.de
欧洲黄页:
http://www.europages.com
加拿大黄页:
https://www.yellowpages.ca/
西非黄页:
http://www.yellow.com/011.html
南非黄页:
http://www.yellowpages.co.za/
中东黄页:
http://yellowpages.qa/web/8679/middle-east-merchants
印度黄页:
http://www.jimyellowpages.com/
南美黄页:
http://www.seekyellowpages.com/south-america.html
美国名录:
http://www.thomasnet.com
英国黄页:
https://www.yell.com/
巴拉圭海关进出口商名录:http://www.cip.org.py/
智利进口商名录:http://www.chilnet.cl
越南进出口名录:http://www.customs.gov.vn
埃塞俄比亚进口商名录:http://www.ethiomarket.com/Products/products_init.html
孟加拉企业名录:http://www.bdyellowbook.com
拉脱维亚进口商:http://www.business-baltics.com/latvia
立陶宛进口商:http://www.business-baltics.com/lithuania
印度海关进出口网站:http://www.zauba.com/
印度进出口商名录:http://www.tradeindia.com/
印度进出口商黄页:http://www.indianyellowpages.com/
英国企业查询网站:
https://www.duedil.com/
美国各州企业名录:http://www.trueyellow.com/
美国进口商:http://www.importersinusa.com/
全美最大目录导航:http://www.looksmart.com/
进出口业务国际贸易数据库:http://www.importgenius.com
全球进口商查询数据:http://www.exportersindia.com/foreign-importers/index-a.html
其他黄页你可以可以通过你负责的市场,用关键词在GOOGLE搜索,或查找http://link.fobshanghai.com/。
政府行业名录比如商会、协会、贸促会、驻外经济商务参赞处等。
中国政府采购网:http://www.ccgp.gov.cn/
发展机构和政府发布的采购招标资讯:http://www.dgmarket.com/
中国商品网:http://ccn.mofcom.gov.cn/
如果你查到一系列符合你的主题的展会后可以进行其官网看看往届的情况介绍。一般主办方都会说明上届的各国展商数量,有的还会列出参展名单。
独立官网一般来说,外贸企业都要有个网站,这样客户在搜索关键词的时候能搜到,再者如果给客户发开发信,客户背调我们的时候连个网站都没有,那客户对我们的信任感会降低。做公司网站价格不等,从几百到几万都有,具体根据公司的实际情况来定。做好官网的SEO优化也很重要,能获取不少询盘。
第三方外贸平台最常见的平台有阿里巴巴国际站、中国制造网、环球资源网、速卖通、shopee、lazada、亚马逊、ebay、敦煌网等。
Google等搜索引擎竞价推广,等待客户搜索、主动询盘。有实力的企业,可以考虑这种方式。可以根据重点开发市场和国家,控制好广告的投放区域和投放时间段,可提高转化率、降低成本。
孚盟获客宝孚盟获客宝能有效地采集海外主流社媒、Google及商户平台数据,通过WhatsApp触达客户,在线收取客户询盘。同时,孚盟获客宝还支持WhatsApp多账号运营、多语言自动翻译、客户快速建档至孚盟CRM系统以及WhatsApp聊天记录留存等辅助功能。搜索孚盟软件官网了解详情。
海关数据孚盟外贸CRM的http://www.fumasoft.com海关数据,能最直接地了解到我们的同行、买家、销售的产品类别、采购规律等,一目了然。
4. 源码多少行?
看软件工程方面的一些书时里面会提到源代码多少行.比如一百万行代码的项目与十万行代码的项目所采取的管理方式可能就不一样.于是就想了解下自己参与的项目目前有多少行代码了.但一问同事都说不太清楚,可能是几十万上百万的样子吧.这也太不准了.于是就想到写些代码去计算下.
其实方法很简单,只要遍历所有源文件,然后计算每一个源文件有多少行代码就行了.下面是详细的代码using System.IO; //这个是文件读写操作用到的命名空间using System.Text.RegularExpressions; //这个是正则表达式命名空间int totalSourceCodeLines = 0; //定义个全局变量public int GetsourceCodeLins(string projectPath) //参数是源文件所在的路径,比如D:\SourceCode\MyCode{CalculateTotalCodeLins(projectPath); //调用另一个函数return totalSourceCodeLines;}private void CalculateTotalCodeLins(string projectPath){//遍历所有目录DirectoryInfo dir = new DirectoryInfo(projectPath);foreach (DirectoryInfo dirInfo in dir.GetDirectories())CalculateTotalCodeLins(projectPath + "\\" + dirInfo.Name); //递归调用遍历目录下的所有源文件foreach (FileInfo fileInfo in dir.GetFiles()){if (Regex.IsMatch(fileInfo.Name, @".*\.(h|cpp)")) //针对不同的源文件可以用正则表达式筛选,这里是c++源文件.totalSourceCodeLines += CalculateCodeLines(projectPath + "\\" + fileInfo.Name); //调用另一个函数计算每个源文件多少行.}}//计算每个源文件多少行private int CalculateCodeLines(string soureFilePath){FileStream fStream = new FileStream(soureFilePath, FileMode.Open);Streamreader reader = new StreamReader(fStream);int count = 0;while (reader.ReadLine() != null){count++;}reader.Close();fStream.Close();return count;}当然这样计算出来的行数可能不太准确.可以考虑一共多少个源文件,然后每个源文件平均有多少行头文件,多少空格.然后减去这些行数就相对比较准确了。5. 有哪些好的国外搜索引擎网站?
1、谷歌 Google谷歌(Google)是美国一家专门从事互联网相关服务和产品的跨国公司。产品覆盖搜索、云计算、软件和在线广告技术。谷歌大部分利润来自于AdWords。它是由斯坦福大学的博士生拉里·佩奇和谢尔盖·布林创建的,他们共同拥有其股份的16%左右。 2、必应 Bing必应(Bing)是微软的一个搜索引擎网站。以前它也被称为Live Search、Windows Live Search和MSN Search。它是由微软首席执行官史蒂夫·鲍尔默在2009年5月28日揭幕的,全部数字化会议于6月1日在圣地亚哥发布。 3、雅虎搜索 Yahoo! Search雅虎搜索(Yahoo! Search)是雅虎公司旗下搜索引擎网站。据Net Applications数据报道,2009年12月,它是世界第二大搜索引擎,市场占有率为6.42%,仅次于竞争对手谷歌(市场占有率85.35%)之后和百度(市场占有率3.67%)之前。雅虎搜索原指雅虎只提供搜索界面,然后使用其他搜索引擎网站来进行搜索。 4、AskAsk是一个以问答为核心的搜索引擎网站。它于1996年由加州大学伯克利分校的Garrett Gruener和David Warthen在加利福尼亚伯克利创办的。起初,Ask被称为Ask Jeeves。 起初,软件是由Gary Chevsky设计的。Warthen、Chevsky、Justin Grant和其他人围绕搜索引擎核心建立AskJeeves.com网站。 5、Aol SearchAol Search是美国在线旗下搜索引擎网站。该网站为用户提供快速、方便地访问相关视频、图片、本地地图、新闻、股市行情和更全面的网页搜索结果。其搜索技术服务是由谷歌提供的。 6、MyWebSearchMyWebSearch结合各种最全面的搜索工具,在您需要时为您提供所需的信息。它是IAC/InterActiveCorp公司旗下网站。它里包含一个MyWay搜索栏工具,以前被称为myWebSearch工具栏。 7、WebCrawlerWebCrawler是一个融合了来自谷歌搜索和雅虎搜索等世界著名的搜索结果的元搜索引擎。它还为用户提供搜索图片、音频、视频、新闻、黄页和白页的选项卡。它是InfoSpace公司的注册商标。它是由华盛顿大学的布莱恩·平克顿于1994年4月20日正式上线。 7、WebCrawlerWebCrawler是一个融合来自谷歌搜索和雅虎搜索等世界著名的搜索结果的元搜索引擎。它为用户提供搜索图片、音频、视频、新闻、黄页和白页的选项卡。它是InfoSpace公司公司的注册商标。它于1994年4月20日由布莱恩·平克顿在华盛顿大学创建的。 8、WowWow是由CompuServe.com在1996年和1997年初运行的在线服务网站。它成立于1996年3月,最初被认为是CompuServe软件的改进版本,但后来宣布,这将是一个用户友好的独立的“家庭”的在线服务网站。美国在线收购CompuServe公司后,该域名得到保留。 9、InfospaceInfospace是一家元搜索引擎网站,它提供来自于谷歌、雅虎、Yandex等多个搜索引擎搜索结果的网页、图片、音频、视频、新闻信息。该公司拥有和经营来自世界各地的提供全面和相关的搜索结果的搜索引擎。自1996年以来,公司的使命是使其快速且容易被用户找到他们所需要的信息。 10、BlekkoBlekko是美国一个搜索引擎网站。它提供比谷歌搜索更好的搜索结果,它从3亿信任的网页数据库调出搜索结果,筛选出很多垃圾网页。它于2010年11月1日向公众推出,使用slashtags提供的搜索结果技术。它还提供一个可下载的搜索栏。 11、DogpileDogpile是一个聚合谷歌、雅虎、Yandex和其他流行的搜索引擎结果的元搜索引擎。它于1996年11月开始运作。该网站是由亚伦福林娜弗创建和发展起来的,后来卖给Go2net。它在2006年和2007年分别获得J.D. Power and Associates award和best Residential Online Search Engine Service奖项。 12、AlheaAlhea是一家元搜索引擎网站,它提供来自于谷歌、雅虎、Yandex等多个搜索引擎搜索结果的网页、图片、音频、视频、新闻信息。它为用户提供寻找更多Web和更好搜索结果的最简单的搜索聚合网站。世界上有40至45万盲人和135万低视力人,而研究表明,超过40万人为听力残疾人。 13、DuckDuckGoDuckDuckGo是一个强调保护搜索用户隐私,避免“过滤器泡沫”的个性化搜索结果的互联网搜索引擎。它通过不分析它的用户信息来故意显示所有用户相同的搜索结果,这种搜索结果区别于其他搜索引擎。它的来源主要来自于维基百科和Yandex,雅虎,必应和WolframAlpha的其他搜索引擎合作伙伴。 14、InfoInfo是一个元搜索引擎,它提供来自于领先搜索引擎搜索的结果,并支付每次点击的目录,其中包括:谷歌、雅虎、必应、Ask、LookSmar、About和Open Directory。其总部设在英国伦敦。 15、ContenkoContenko是一个为用户提供在线搜索服务的网站。如果您发现该网站修改您的主页和默认搜索引擎,这意味着它相关的工具栏已经被安装在您的计算机上,你的浏览器已被它劫持。Contenko的工具栏可以从网站上下载。但它捆绑了不同的免费服务。如果,用户不小心忽视,那些服务一旦它被安装,它会改变你的主页和默认搜索引擎并指向Contenko.com域名。
6. 程序员该如何使用搜索引擎?
1. file type: 比如file type:PDF 搜索PDF格式的信息, file type: doc 搜索word的,以此类推。
2. 站内搜索 site:http://xxx.com 以此定位于某个网站搜索,注意网站名称前不用加www,冒号是英文的。
3. 前两个结合起来。site:http://xxx.com filetype:pdf
4. 如果想搜所有相关的,可以 related:http://xxx.com
5. 还可以用link:http://xxx.com 或者info:http://xxx.com
6. 使用 “” 精确匹配搜索,如在百度中键入“互联网科技”,表示搜索“互联网科技”五个必须联在一起的,如果不加 “”,搜到的为互联网及科技两个词并列显示结果,没有这么精确匹配。
7. 使用intitle限制性的网页搜索,如键入“intitie:互联网”,限定于搜索标题中含有“大数据”网页,如果输入“intitie:互联网 科技”限定于搜索标题中含有“大数据”和“市场规模”的网页
8. 减号 - 排除不需要的信息,减号之前有空格。A -B
9. 同义词搜索~ 如A ~B
10. 时间段搜索 如果想要找出 1910 至 1950 年间的美国总统,直接在搜索引擎中输入 美国总统 1910.. 1950 即可得出想要的结果。记住,数值之间的符号是两个英文句号加一个空格键。
11. google directory
12. google linux search用来搜索大量与Linux相关的网站 其中的linux可以替换。
7. 为何多数git教程里添加远程库默认推荐ssh?
4种git支持的协议中,ssh 配置简单,权限管理也比较全面,无需密码,且linux 内置,当然会有偏向平台的。git协议是运行最快的,基本上和操作系统关系不大,就是git-daemon 启动,然后git-clone。对那些人来说,快是很重要的。
至于 smart http 很慢,并且,配置真的(相对)复杂,需要了解cgi的概念,环境变量概念,特定的web server的配置方法,以及特定操作系统的配置方法。我看到的pro git中的smart http配置,就是缺少一些步骤的。
我刚刚写了文章,对比了下,ssh,git配置大概半页,http3页而且只能适应于osx,apache的组合。可以欣赏下:
==========正文
## 更多协议
想要和他人协作,我必须有远程仓库,这样我才可以推送和拉取代码的变更。在上一节,我们已经通过一个共享仓库作为中介,以本地协议的通讯方式,达成两人(多人)的代码协作了。
git支持4种协议,包括本地协议、HTTP协议、Git协议、SSH协议。我们继续看看Git协议。
## Git 协议
通过Git协议来托管仓库是内置于git-daemon命令之内。因此使用它来做测试和验证仓库的托管是非常方便的。执行 git-daemon,会启动一个监守程序,等待采用git协议来连接的客户端,这些连接过来的客户端可以访问指定目录下的仓库。
假设我们在~/git目录内已经存在一个共享仓库,那么
cd ~/git
git daemon --verbose --export-all --base-path=. --enable=receive-pack
这里的新命令git-daemon需要做些解释。参数说明:
--base-path=. 指定基础目录,客户端连接指定的目录都相对于此目录来定位目录。当前命令行内的基础目录就是 ~/git
--enable=receive-
--export-all 公开全部仓库
启动了git监守程序,就可以在客户端运行git-clone来拉取仓库了:
git clone git://localhost/repo.git
我们使用的主机地址为localhost,就是意味着拉取的仓库位于本机;你可以使用IP地址,就可以访问其他主机的托管仓库了。
## SSH 协议
以 OS X 为例,首先激活sshd:
sudo systemsetup -setremotelogin on
随后远程登录到主机(为了演示和测试的方便,远程主机使用localhost来做模拟),并输入密码:
ssh localhhost
然后创建一个共享仓库:
mkdir gitshared.git
cd gitshared.git
git init --bare --shared
exit
这时我们已经准备好了一个空仓库,可以在另外一个主机(也是本机)做克隆了。
git clone ssh://localhost/Users/lcjun/gitshared.git
使用git-remote来查询远程仓库:
$git remote -v
origin ssh://localhost/Users/lcjun/gitshared (fetch)
origin ssh://localhost/Users/lcjun/gitshared (push)
即可验证命令确实有效的被执行了,ssh远程仓库也已经和本地关联起来了。
## HTTP
HTTP 协议下的git托管是相对最复杂的,因为它涉及到了Web Server的配置,CGI知识,特定的OS。WebServer和操作系统的版本差异也会对应有不同的配置方法。我的操作系统是OS X EI Captain,Git 版本为2.6,Apache 版本为2.4 。我以本机为服务器,本机地址为192.168.3.11 。在这样的环境下,我希望可以使用
git clone http://git.example.com/repo.git
的形式,以http协议方法访问主机上的repo.git 仓库。留意URL的第一部分是http,而不是ssh,或者git。
假设仓库以 /var/www/git 存放。我在此目录内创建一个名为 repo.git 的仓库:
mkdir -p /var/www/git/repo.git
cd /var/www/git/repo.git
git init --bare --shared
在本机内,找到 hosts 文件,并加入如下一行,以便支持通过主机名(http://git.example.com)访问主机
192.168.3.11 http://git.example.com
我采用apache作为Web 服务器,首先保证apache是启动和可以访问的:
$ sudo apachectl start
$ curl localhost
<html><body><h1>It works!</h1></body></html>
¥ curl http://git.example.com
<html><body><h1>It works!</h1></body></html>
git-http-backend 需要引用模块 cgi,env,alias。必须它们是被加载了的。具体的做法是查看 http.conf ,确保一下模样的行是没有被标注的。如果被标注(行首有一个#),那么通过去掉“#”来解除标注。我的主机上,http.conf的位置在 /etc/apache2/httpd.conf 。
LoadModule cgi_module libexec/apache2/mod_cgi.so
LoadModule env_module libexec/apache2/mod_env.so
LoadModule alias_module libexec/apache2/mod_alias.so
找到http.conf ,加入如下配置在文件末尾,它添加了一个名为http://git.example.com的虚拟主机,它的文档目录为/var/www/git:
<VirtualHost 192.168.3.11:80>
DocumentRoot /var/www/git
ServerName http://git.example.com
<Directory "/var/www/git">
Options +Indexes
Require all granted
</Directory>
<Directory "/usr/local/Cellar/git/2.4.1/libexec/git-core/">
Options ExecCGI Indexes
Order allow,deny
Allow from all
Require all granted
</Directory>
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv GIT_PROJECT_ROOT /var/www/git
ScriptAlias /git/ /usr/local/Cellar/git/2.4.1/libexec/git-core/git-http-backend/
</VirtualHost>
同时,这段配置内还添加了一个脚本别名,别名指向git-http-backend的CGI程序。git-http-backend 在不同的系统上可能位置不同,可以使用这个命令查找到它:
$ find / -name git-http-backend 2>/dev/null
为了让此CGI 可以运行,也必须配套的把CGI所在目录设置为允许执行CGI(Options ExecCGI)。
GIT_PROJECT_ROOT 必须设置,这个值是 git-http-backend 需要的,有了它,git-http-backend 就知道如何定位基础目录了。环境变量 GIT_HTTP_EXPORT_ALL 看起来有点熟悉,是因为我们在上一节git 协议内在git守护进程的命令行中看到过它。设置了此环境变量,就意味着在基础目录内的所有仓库都是可以对外共享的。
进入需要克隆的git仓库所在的目录并执行git update-server-info:
cd /var/www/git/repo.git
sudo git update-server-info
重启apache
sudo apachectl restart
随后,我就可以真的去克隆一个在apache服务后的git仓库了:
git clone http://git.example.com/repo.git
Cloning into 'repo'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
这个配置过程相对复杂,难免配置是出现不期望的错误,那么常备些命令是可以帮助调试的。比如查看Apache 运行错误
sudo tail /private/var/log/apache2/error_log
我需要多次修改http.conf ,记得使用:
apachectl configtest
验证下配置是正确的。我发现这个命令对我是有用的。
#找到apache 用户的方法
$ ps aux | egrep '(apache|httpd)'.
#找到apache用户组的方法:
$ id user-name
user-name 换成apache 用户名
在我的主机上,我在升级git的时候,曾经出过这样的报错:
$brew upgrade git
# Git package broken in 10.11 El Capitan
brew reinstall git
...
==> make prefix=/usr/local/Cellar/git/2.4.3 sysconfdir=/usr/local/etc CC=clang C
./git-compat-util.h:219:10: fatal error: 'openssl/ssl.h' file not found
#include <openssl/ssl.h>
^
我尝试了改变下命令行参数的方式:
brew reinstall git --with-brewed-openssl
结果是可以升级到最新的git版本的(git 2.6.4)