使用gunicorn来部署django应用

第一次注意到gunicorn这个django部署工具是在instagram的技术报告里,主要吸引我的地方就两个:

  1. 部署与扩展都非常容易
  2. 与nginx集成良好

下面实际的记录可能包含gunicorn和django以外的其他软件包的安装,是我顺手记录下得,基本环境并不包含这些。

准备工作

1.安装django

python不说了,linux基本自带。django可以向下面部分一样选择使用easy_install或者pip来安装,但是在我的环境下pipy的服务器下载django非常的慢,经常连不上,因此还是下载源码安装: 目前的版本是Django-1.6.1

cd到解压目录,执行:

2.django项目运行的依赖项

依赖项主要是数据库,以及django有关的各类插件或模块,以我自己的部署为例:

PostgreSQL

我的django使用PostgreSQL为主要数据库,所以这个逃不掉。下载与安装说明请戳这里。尽管有种种不建议,我还是使用了官方提供的Graphic Installer

psycopg2

PostgreSQL的python语言接口

空间数据支持

由于依赖PostgreSQL的空间数据扩展PostGIS,而读写空间数据需要其他额外的库资源。因此,安装完具体需要安装:

  • GEOS
  • PROJ.4
  • PostGIS

这个在OSX、Linux和Windows环境下差异较大,具体查看官方文档的说明

3.安装gunicorn

下载源码安装

由于生产环境和开发环境不一样,实际上我用到了如下两个:

easy_install安装

pip安装

让gunicorn跑起来

1. gunicorn命令方式

gunicorn_django的写法

如果不指定[SETTINGS_PATH],将在当前文件夹查找settings.py。

gunicorn的写法

根据官方文档的提示,建议Django1.4以上版本,直接使用gunicorn命令,而不是gunicorn_django命令,在这里暂时不去追究原因。

其实很简单,cd到manage.py所在目录,从wsgi所在app启动(我的app叫mserv)。

这就是纯WSGI写法。现在再多写一点,绑定ip和端口:

好了,可以在客户机上查看你的服务了。那么可以再多一点点,多一个工人帮你搬东西,会快一些:

这样启动的时候你会看到两个worker:

多么体贴!

更多命令参数可看官方文档的Settings部分

2. django manage.py方式

好吧,确实有更简单的方式,我们真的可以使用django的manage.py来跑gunicorn服务,我叫它植入式。

首先修改django的settings.py:

然后命令行到django项目目录,可以做很神奇的事情:

小结

这是一个功能强大、易于配置的,对django友好的部署环境,这里是一个开始。个人而言,后面可以讨论的内容包括但不限于:

  • 性能测试与参数调优
  • 与nginx部署环境的整合
  • 合理处理消息,研究真实生产环境中如何管理服务
  • 对gunicorn运行状况的监控
  • 整合django的自动化部署

156 thoughts on “使用gunicorn来部署django应用

  1. I simply want to tell you that I am just new to weblog and definitely enjoyed this web blog. Very likely I’m want to bookmark your blog . You really have very good posts. Appreciate it for revealing your website.

  2. kumahasiaweh说道:

    Hello there, I discovered your blog by the use of Google even as searching for a comparable matter, your web site got here up, it appears good. I’ve bookmarked it in my google bookmarks.

  3. Faytech North America is a touch screen Manufacturer of both monitors and pcs. They specialize in the design, development, manufacturing and marketing of Capacitive touch screen, Resistive touch screen, Industrial touch screen, IP65 touch screen, touchscreen monitors and integrated touchscreen PCs. Contact them at http://www.faytech.us, 121 Varick Street,3rd Floor,New York, NY 10013,+1 646 205 3214

  4. Metroclick.com说道:

    MetroClick specializes in building completely interactive products like Photo Booth for rental or sale, Touch Screen Kiosks and Digital Signage, and experiences. With our own hardware production facility and in-house software development teams, we are able to achieve the highest level of customization and versatility for Photo Booths, Touch Screen Kiosks and Digital Signage. MetroClick, 121 Varick St, #301, New York, NY 10013, +1 646-843-0888

  5. dentysta gorzów说道:

    Hi! Do you know if they make any plugins to assist with Search Engine Optimization? I’m trying to get my blog to rank for some targeted keywords but I’m not seeing very good results. If you know of any please share. Cheers!

  6. hello!,I really like your writing very so much! proportion we keep in touch more about your post on AOL? I require a specialist on this area to unravel my problem. May be that’s you! Looking forward to peer you.

  7. You’ll find it nearly close to impossible to encounter well-educated readers on this subject, even though you come across as like you understand the things that you’re talking about! Many Thanks

  8. Tremendously enjoyable specifics that you have said, many thanks for adding.

  9. dentysta gorzów说道:

    Hey there! I just wanted to ask if you ever have any trouble with hackers? My last blog (wordpress) was hacked and I ended up losing several weeks of hard work due to no backup. Do you have any methods to prevent hackers?

  10. I truly appreciate this post. I’ve been looking everywhere for this! Thank goodness I found it on Bing. You’ve made my day! Thank you again!

  11. Platne Linki说道:

    of course like your website however you need to test the spelling on several of your posts. Several of them are rife with spelling problems and I to find it very bothersome to inform the reality on the other hand I will definitely come again again.

  12. dentysta gorzów说道:

    Hello there, simply turned into tuned in to BLOGURL thru Google and bing, and found that it is informative. I’m gonna watch out for brussels. I will appreciate in case you continue this in potential. A lot of some others will be benefited out of your writing. Cheers! NAME

  13. YOURURL.com说道:

    I merely desire to share it with you that I am new to posting and totally loved your information. Quite possibly I am inclined to store your blog post . You definitely have great article materials. Like it for giving out with us your favorite web post

  14. Absolute beneficial information you’ll have stated, say thanks a lot for publishing.

  15. It is appropriate opportunity to generate some intentions for the longer term. I’ve read through this piece of writing and if I would, I want to suggest to you you handful unique assistance.

  16. Some genuinely nice and useful information on this internet site, as well I conceive the style has got wonderful features.

  17. Flower delivery说道:

    What’s up, I check your blog regularly. Your writing style is awesome, keep it up!

  18. Florists Cork说道:

    Amazing! This blog looks exactly like my old one! It’s on a entirely different topic but it has pretty much the same layout and design. Excellent choice of colors!

  19. dentysta gorzów说道:

    This design is wicked! You most certainly know how to keep a reader amused. Between your wit and your videos, I was almost moved to start my own blog (well, almost…HaHa!) Wonderful job. I really enjoyed what you had to say, and more than that, how you presented it. Too cool!

  20. hello!,I like your writing so so much! share we be in contact more approximately your article on AOL? I need a specialist in this space to unravel my problem. May be that’s you! Looking forward to look you.

  21. excellent points altogether, you just won a new reader. What may you recommend about your put up that you made a few days in the past? Any certain?

  22. I simply couldn’t leave your website prior to suggesting that I extremely loved the usual information an individual supply on your guests? Is going to be back continuously to inspect new posts

  23. It’s the best time to make some plans for the future and it’s time to be happy. I have read this post and if I could I want to suggest you few interesting things or advice. Maybe you could write next articles referring to this article. I desire to read even more things about it!

  24. Enjoyed looking through this, very good stuff, regards . “The hunger for love is much more difficult to remove than the hunger for bread.” by Mother Theresa.

  25. I really appreciate this post. I have been looking all over for this! Thank goodness I found it on Bing. You have made my day! Thank you again!

  26. click for source说道:

    I just have to inform you you that I am new to blogging and really liked your write-up. Probably I am inclined to remember your blog post . You definitely have excellent article blog posts. Delight In it for swapping with us your own web article

  27. I wanted to post you the tiny remark to help give many thanks over again for your personal pretty tricks you’ve discussed in this case. It is quite extremely open-handed with you to provide without restraint all a number of us could possibly have advertised as an e-book to make some money on their own, especially seeing that you might have done it in case you decided. These strategies in addition acted like a easy way to understand that other people online have similar eagerness much like my very own to figure out whole lot more pertaining to this problem. I’m certain there are thousands of more pleasant situations up front for individuals that look into your site.

  28. Keep functioning ,splendid job!

  29. This is really interesting, You are a very skilled blogger. I have joined your feed and look forward to seeking more of your fantastic post. Also, I’ve shared your site in my social networks!

  30. Hiya, I am really glad I’ve found this information. Nowadays bloggers publish just about gossips and internet and this is actually annoying. A good site with interesting content, this is what I need. Thank you for keeping this website, I’ll be visiting it. Do you do newsletters? Can not find it.

  31. I just couldn’t go away your site prior to suggesting that I actually loved the usual information a person provide to your guests? Is gonna be again frequently in order to check up on new posts

  32. I wish to express some appreciation to you just for rescuing me from this particular difficulty. As a result of surfing around throughout the search engines and meeting ways which were not productive, I figured my entire life was over. Existing without the presence of solutions to the problems you have sorted out as a result of your good report is a crucial case, and ones which may have adversely affected my career if I had not discovered your blog. Your main skills and kindness in touching every aspect was crucial. I’m not sure what I would’ve done if I had not come across such a stuff like this. I am able to at this moment look ahead to my future. Thank you so much for the reliable and result oriented help. I will not hesitate to endorse your blog to anybody who needs tips on this issue.

  33. It’s truly a great and helpful piece of info. I am satisfied that you simply shared this helpful information with us. Please keep us informed like this. Thank you for sharing.

  34. MichaelJemery.com is a site with many hypnosis downloads. Whether you are looking for free hypnosis downloads, self hypnosis download for mp3, video and any audio files, Michael Jemery has the downloads for you. You can download hypnosis from apps, audio, mp3 and even youtube !

  35. www.emeryeps.com说道:

    Emeryeps is a SEO(Search Engine optimzation) and Internet Marketing company. They help businesses to get traffic from various search engine and online community. They have seo experts and consultants with many years of SEO Experiences. No matter where your business is located, EmeryEPS.com can help your business to secure your highly convertible leads online.

  36. Health & Fitness说道:

    Pretty section of content. I just stumbled upon your web site and in accession capital to assert that I acquire actually enjoyed account your blog posts. Anyway I’ll be subscribing to your augment and even I achievement you access consistently rapidly.

  37. I must point out my admiration for your kind-heartedness in support of those people who should have help with your matter. Your personal commitment to passing the message all-around had become extremely interesting and have consistently allowed women like me to reach their pursuits. Your amazing helpful hints and tips can mean this much a person like me and additionally to my colleagues. Many thanks; from everyone of us.

  38. Automotive说道:

    As a Newbie, I am continuously browsing online for articles that can be of assistance to me. Thank you

  39. I would like to thnkx for the efforts you’ve put in writing this web site. I’m hoping the same high-grade blog post from you in the upcoming as well. In fact your creative writing skills has encouraged me to get my own site now. Actually the blogging is spreading its wings rapidly. Your write up is a great example of it.

  40. click here说道:

    Biocentro.cl en PROVIDENCIA, Santiago Chile es el mejor en impartir cursos de masajes, cursos de masajes, cursos de masaje, cursos de masajista

  41. I like what you guys are up also. Such clever work and reporting! Keep up the excellent works guys I have incorporated you guys to my blogroll. I think it’ll improve the value of my website :).

  42. dentysta gorzow说道:

    Hello there, You have done a fantastic job. I’ll definitely digg it and personally suggest to my friends. I’m confident they’ll be benefited from this site.

  43. dentysta gorzów说道:

    Awesome blog! Do you have any recommendations for aspiring writers? I’m hoping to start my own blog soon but I’m a little lost on everything. Would you suggest starting with a free platform like WordPress or go for a paid option? There are so many options out there that I’m totally overwhelmed .. Any suggestions? Bless you!

  44. I was recommended this web site by my cousin. I’m not sure whether this post is written by him as nobody else know such detailed about my problem. You are incredible! Thanks!

  45. Some really nice and utilitarian information on this web site, besides I think the style and design has got great features.

  46. Very interesting topic , thanks for putting up. “Integrate what you believe into every single area of your life.” by Meryl Streep.

  47. I like the valuable info you provide in your articles. I will bookmark your blog and check again here regularly. I am quite certain I’ll learn many new stuff right here! Best of luck for the next!

  48. obviously like your web site however you need to check the spelling on quite a few of your posts. Many of them are rife with spelling problems and I in finding it very bothersome to tell the reality however I’ll definitely come back again.

  49. hi!,I really like your writing very so much! proportion we communicate extra approximately your post on AOL? I require an expert in this area to solve my problem. May be that’s you! Taking a look ahead to see you.

  50. Hello there, I discovered your blog via Google even as searching for a similar subject, your website came up, it seems to be great. I have bookmarked it in my google bookmarks.

  51. It is really a nice and helpful piece of info. I am glad that you simply shared this useful info with us. Please stay us up to date like this. Thank you for sharing.

  52. Hi, i think that i saw you visited my blog so i came to “return the favor”.I’m trying to find things to enhance my site!I suppose its ok to use a few of your ideas!!

  53. Simply desire to say your article is as astonishing. The clarity in your post is simply spectacular and i can assume you’re an expert on this subject. Fine with your permission let me to grab your RSS feed to keep updated with forthcoming post. Thanks a million and please keep up the enjoyable work.

  54. You have brought up a very superb points , appreciate it for the post.

  55. Attractive section of content. I just stumbled upon your weblog and in accession capital to assert that I acquire actually enjoyed account your blog posts. Any way I will be subscribing to your feeds and even I achievement you access consistently quickly.

  56. Whats Going down i am new to this, I stumbled upon this I’ve found It positively useful and it has aided me out loads. I am hoping to give a contribution & aid different customers like its aided me. Good job.

  57. It is the best time to make a few plans for the long run and it’s time to be happy. I’ve read this post and if I may just I want to suggest you some fascinating issues or tips. Perhaps you can write next articles regarding this article. I want to read more issues about it!

  58. Its excellent as your other posts : D, regards for putting up. “For peace of mind, we need to resign as general manager of the universe.” by Larry Eisenberg.

  59. Hello there! This article could not be written any better! Looking at this post reminds me of my previous roommate! He continually kept preaching about this. I will forward this information to him. Fairly certain he’ll have a great read. Thanks for sharing!

  60. Wow! This blog looks exactly like my old one! It’s on a totally different topic but it has pretty much the same page layout and design. Outstanding choice of colors!

  61. I will right away seize your rss feed as I can’t to find your e-mail subscription link or newsletter service. Do you’ve any? Kindly permit me realize so that I may just subscribe. Thanks.

  62. I was studying some of your content on this internet site and I believe this web site is really instructive! Continue posting.

  63. I dugg some of you post as I thought they were handy invaluable

  64. Very interesting details you have observed , regards for posting . “Opportunities are seldom labeled.” by John H. Shield.

  65. Woah! I’m really loving the template/theme of this website. It’s simple, yet effective. A lot of times it’s very difficult to get that “perfect balance” between usability and visual appeal. I must say you’ve done a amazing job with this. Also, the blog loads very quick for me on Internet explorer. Exceptional Blog!

  66. 2017 kia rio说道:

    Hi, I do think this is an excellent web site. I stumbledupon it 😉 I am going to come back once again since I bookmarked it. Money and freedom is the best way to change, may you be rich and continue to help others.

  67. It’s perfect time to make some plans for the long run and it is time to be happy. I’ve learn this publish and if I may just I desire to recommend you few interesting things or advice. Perhaps you can write subsequent articles regarding this article. I wish to learn more things about it!

  68. You have brought up a very fantastic points , appreciate it for the post.

  69. cara main poker说道:

    My programmer is trying to persuade me to move to .net from PHP. I have always disliked the idea because of the costs. But he’s tryiong none the less. I’ve been using Movable-type on several websites for about a year and am nervous about switching to another platform. I have heard great things about blogengine.net. Is there a way I can transfer all my wordpress content into it? Any kind of help would be greatly appreciated!

  70. suba me说道:

    slANNf You could definitely see your expertise in the work you write. The world hopes for more passionate writers like you who are not afraid to say how they believe. Always go after your heart.

  71. Hi, I do believe this is a great web site. I stumbledupon it 😉 I will come back yet again since I book marked it. Money and freedom is the best way to change, may you be rich and continue to guide other people.

  72. Wow! Thank you! I constantly needed to write on my site something like that. Can I include a fragment of your post to my site?

  73. It is usually a very pleased day for far North Queensland, even state rugby league usually, Sheppard reported.

  74. movie说道:

    Your style is so unique compared to other people I ave read stuff from. I appreciate you for posting when you have the opportunity, Guess I will just book mark this page.

  75. Im obliged for the blog post.Really thank you! Really Cool.

  76. Great items from a person, man. I have be aware your stuff before and you’re simply quite great. I actually like everything you have acquired here, really like what that you are stating and exactly how wherein you are declaring it. You are making it entertaining therefore you continue to care for to help keep it smart. I can not wait to see far more from you will. BLOGURL is really an awesome site. NAME

  77. Escort Finder说道:

    There is noticeably a bunch to know about this. I feel you made certain nice points in features also.

  78. Does your blog have a contact page? I’m having problems locating it but, I’d like to shoot you an e-mail. I’ve got some suggestions for your blog you might be interested in hearing. Either way, great blog and I look forward to seeing it develop over time.

  79. Very nice post and right to the point. I am not sure if this is actually the best place to ask but do you folks have any thoughts on where to get some professional writers? Thx

  80. Register a domain, search for available domains, renew and transfer domains, and choose from a wide variety of domain extensions.

  81. Isabel Marant Sneakers Pas Cher WALSH | ENDORA

  82. It as laborious to search out knowledgeable people on this matter, but you sound like you understand what you are speaking about! Thanks

  83. Home Improvement说道:

    I’ve recently started a site, the information you offer on this web site has helped me tremendously. Thank you for all of your time & work.

  84. you will have an awesome blog here! would you prefer to make some invite posts on my blog?

  85. Your style is really unique in comparison to other folks I have read stuff from. Thank you for posting when you have the opportunity, Guess I all just book mark this page.

  86. I really enjoy the blog article. Keep writing.

  87. see more now说道:

    Very informative article.Really looking forward to read more. Keep writing.

  88. chaterbate说道:

    This is one awesome post.Really looking forward to read more. Fantastic.

  89. شهرزاد说道:

    Very good post.Really thank you! Cool.

  90. دانلود说道:

    You made some first rate factors there. I regarded on the web for the problem and located most people will associate with along with your website.

  91. Really enjoyed this article.Much thanks again.

  92. Very informative article post.Thanks Again. Cool.

  93. That you are my role designs. Thank you to the write-up

  94. پنجره说道:

    I value the blog article.Really thank you! Great.

  95. wow, awesome post.Really looking forward to read more. Keep writing.

  96. I truly appreciate this blog article.Much thanks again. Great.

  97. Major thanks for the blog article.Really looking forward to read more. Really Cool.

  98. I appreciate you sharing this blog.Really looking forward to read more.

  99. A big thank you for your blog post.Thanks Again. Will read on…

  100. This is a really good tip particularly to those fresh to the blogosphere. Simple but very accurate info Appreciate your sharing this one. A must read article!

  101. Health说道:

    Usually I don’t learn post on blogs, but I would like to say that this write-up very compelled me to check out and do so! Your writing style has been surprised me. Thank you, very nice article.

  102. Well I truly liked reading it. This tip offered by you is very effective for proper planning.

  103. Thanks a lot for the blog article.Thanks Again. Will read on

  104. There are so many choices out there that I am completely confused.. Any tips? Thank you!

  105. Politics Forum说道:

    This awesome blog is really interesting and informative. I have discovered a lot of interesting stuff out of this amazing blog. I ad love to visit it every once in a while. Thanks a lot!

  106. http://c-am4.us说道:

    It as not that I want to copy your web-site, but I really like the style. Could you let me know which style are you using? Or was it custom made?

  107. Camdolls说道:

    So happy to possess located this publish.. Terrific opinions you have got here.. I enjoy you showing your perspective.. of course, analysis is paying off.

  108. Business说道:

    Some genuinely select content on this website , saved to my bookmarks .

  109. sexcamly.us说道:

    some really interesting points you have written.

  110. Time period may be the a lot of special tool to, so might be the organic options. Internet looking is definitely simplest way to preserve moment.

  111. There is apparently a bunch to know about this. I think you made certain nice points in features also.

  112. repair service, routine maintenance and electricity conservation of economic roofing systems will probably be as cost-effective as is possible. And using this

  113. free cam说道:

    Pretty! This was an incredibly wonderful article. Many thanks for supplying this information.

  114. Women说道:

    Someone essentially lend a hand to make critically posts I might state. That is the first time I frequented your web page and thus far? I surprised with the research you made to create this particular submit extraordinary. Magnificent activity!

  115. Your style is really unique compared to other people I ave read stuff from. I appreciate you for posting when you ave got the opportunity, Guess I all just bookmark this blog.

  116. عاشقانه说道:

    Thanks for sharing, this is a fantastic blog article.Really looking forward to read more. Awesome.

  117. Thanks for another wonderful post. Where else may just anyone get that type of info in such an ideal means of writing? I have a presentation next week, and I am on the look for such info.

  118. Career And Jobs说道:

    I believe you have observed some very interesting details , regards for the post.

  119. Title here are some links to sites that we link to because we think they are worth visiting

  120. reading science fiction books is the stuff that i am always into. science fiction really widens my imagination*

  121. Im thankful for the article post. Really Cool.

  122. Muchos Gracias for your blog article.Really looking forward to read more. Will read on

  123. Does your site have a contact page? I’m having a tough time locating it but, I’d like to shoot you an email. I’ve got some recommendations for your blog you might be interested in hearing. Either way, great site and I look forward to seeing it grow over time.

  124. The leading source for trustworthy and timely health and medical news and information.

  125. Fashion说道:

    I like the valuable info you provide in your articles. I will bookmark your weblog and check again here regularly. I’m quite sure I’ll learn many new stuff right here! Good luck for the next!

  126. دانلود说道:

    pretty helpful material, overall I think this is worth a bookmark, thanks

  127. I got what you mean , appreciate it for posting .Woh I am thankful to find this website through google. “Delay is preferable to error.” by Thomas Jefferson.

  128. Hey, you used to write fantastic, but the last few posts have been kinda boring… I miss your tremendous writings. Past few posts are just a little bit out of track! come on!

  129. Howdy very cool blog!! Guy .. Beautiful .. Wonderful .. I will bookmark your web site and take the feeds also…I am glad to find so many useful information here in the submit, we want develop extra strategies on this regard, thank you for sharing.

  130. Woah! I’m really loving the template/theme of this website. It’s simple, yet effective. A lot of times it’s very difficult to get that “perfect balance” between user friendliness and visual appeal. I must say that you’ve done a very good job with this. Also, the blog loads super fast for me on Internet explorer. Exceptional Blog!

  131. Technology说道:

    Definitely believe that which you stated. Your favorite justification seemed to be on the net the easiest thing to be aware of. I say to you, I definitely get irked while people consider worries that they plainly don’t know about. You managed to hit the nail upon the top and defined out the whole thing without having side effect , people can take a signal. Will probably be back to get more. Thanks

  132. Buy Yugioh Cards说道:

    Right now it appears like WordPress is the top blogging platform out there right now. (from what I ave read) Is that what you are using on your blog?

  133. Liquor flask说道:

    It as in reality a great and helpful piece of info. I am happy that you just shared this useful tidbit with us. Please keep us up to date like this. Thanks for sharing.

  134. Thanks so much for the blog post.Thanks Again. Much obliged.

  135. 迷你仓价钱说道:

    Thanks again for the article post.Thanks Again.

  136. WONDERFUL Post.thanks for share..more hold your fire..

  137. on this. And he in fact ordered me dinner simply because I found it for him…

  138. Treinreizen说道:

    Im thankful for the blog post.Much thanks again. Keep writing.

  139. Wow, incredible blog layout! How long have you been blogging for? you made blogging look easy. The overall look of your web site is wonderful, as well as the content!

  140. Trein说道:

    Major thankies for the post.Thanks Again. Keep writing.

  141. click-meter.us说道:

    Thank you ever so for you article. Keep writing.

  142. Pets说道:

    Hi my family member! I want to say that this article is awesome, nice written and include approximately all significant infos. I’d like to see extra posts like this.

  143. Revitol说道:

    Just Browsing While I was surfing today I saw a great post about

  144. If conceivable, as you clear knowledge, would you mind updating your blog with more information? It is damned helpful in return me.

  145. That is really interesting, You are an overly skilled blogger.

  146. I see something truly interesting about your site so I saved to fav.

  147. Perfect work you have done, this site is really cool with good info.

  148. Some really superb blog posts on this website , thankyou for contribution.

  149. Wow, great article.Really looking forward to read more. Keep writing.

  150. http://boilx.us说道:

    This is the perfect website for everyone who wants to

  151. viagra without prescription! Overnight shiping! Click here now and get discount!

  152. Very informative article.Really looking forward to read more.

  153. mobil porn说道:

    Really informative blog article.Thanks Again. Cool.

  154. xxx说道:

    Very informative blog article. Really Great.

  155. Right now it appears like Movable Type is the top blogging platform out there right now. (from what I ave read) Is that what you are using on your blog?

  156. I dugg some of you post as I thought they were very helpful extremely helpful

发表评论

电子邮件地址不会被公开。