网站/WordPress从虚拟主机搬家到VPS上

拖了一个月终于着手并且完成了。其实没有什么难的。但是因为我对Linux的了解非常局限,还是花了一番功夫,同时学了很多东西,在这里记一下。没有试图写一篇“手把手教你搬WP”,只是记录一些我觉得有帮助的东西,希望做同样的事情的且同样不是那么牛逼的Linux学习者们有用:)

虽说是WordPress搬家,但是任何一个小型网站搬家都差不多这样了吧,嘿嘿。

如果用cPanel和MySQLAdmin之类的东西可能就很傻瓜,但是第一cPanel太贵了(竟然要425多刀一年,我都笑了),第二VPS都买了必须必须要抓住每一个学Linux的机会啊。

过程如下(断断续续弄了好几天…):

环境

虚拟主机和VPS都是host2ez的,最牛逼的主机提供商。系统是CentOS Linux 5.6,apache(现在改名叫httpd)已经装好了,再装

yum php mysql mysql-server

就成。

文件

这个简单,cPanel把虚拟主机上文件打包,VPS上wget下来就好。WP的独立性做的好,文件路径改变不会有什么问题。备份用的插件BackUpWordpress倒因为出问题了,不能识别路径,我直接禁用掉了,VPS嘛马上弄个备份方案还不容易,不需要用WP的插件了。在[wordpress path]/wp_config.php里把信息改一下,数据库部分的怎么改见下面。

数据库

对数据库命令不了解的同学建议先看一下mysql的教程。我不能把所有操作都写出来…这次弄这个还学了不少数据库的东西…tutorial很容易搜到,我觉得有一个比较好的命令列表点 这里,里面包括了所有常用的命令。

在虚拟主机的cPanel – mysqladmin里备份出.sql文件,传上VPS,导入文件的命令是

mysql – u user_name -p database_name < file_name.sql

很多地方写的-p后面跟密码,我用的版本-p后面不跟东西,回车以后才提示输密码,可能是新版本不提倡显式输入密码了吧。非要用的话就–password=”xxxxxx”

如果你导出文件选的是整个mysql,需要打开文件把database”information_schema”部分删掉,否则会失败,这个db貌似是mysql自己的,不能改..不懂

之后要建立一个用户并给此用户分配使用相应db的权限,虽然我们也可以直接把root用户写进wp_config.php但是稍微有点安全意识的程序员都不会想要这么做的…虽然权限没什么大不了的,但是名字叫root就是不行! 所以进数据库:

mysql -u root -p

进去以后添加用户:

mysql> create user 'username'@'localhost' identified by 'mypass';

分配权限:

mysql> grant all privileges on databasename.* to username@localhost;
mysql> flush privileges;

然后就把这个用户甩给Wordpress啦(编辑wp_config.php)

测试的时候有一些问题

上面完了就能http进vps的ip看到博客了,但是不要去点任何东西…因为数据库里“本站”的地址还是原来的域名,这样如果你原来的网站还开着那么随便点个链接就进到原来网站了,如果没开那就can’t find page啦。

而且因为没法进后台改,所以只好进mysql改了

mysql> use viaxlcom_viaxlcom;
mysql> select * from wp_options where option_value rlike "^http";
+-----------+---------+-------------+----------------------------+----------+
| option_id | blog_id | option_name | option_value               | autoload |
+-----------+---------+-------------+----------------------------+----------+
|         2 |       0 | siteurl     | http://axlarts.com/blog      | yes      |
|        39 |       0 | home        | http://axlarts.com           | yes      |
|        41 |       0 | ping_sites  | http://rpc.pingomatic.com/ | yes      | 
+-----------+---------+-------------+----------------------------+----------+
3 rows in set (0.06 sec)
update wp_options set option_value="http://12.34.56.78/blog" where option_id=2;
update wp_options set option_value="http://12.34.56.78" where option_id=39;

这样就把VPS上的网站地址改成本身的IP了。

————————————-
另外我发现一些插件会出现权限问题,比如JW player(放flv视频用的插件),没法启用插件因为提示不能写目录,我整个www目录都是755权限,设置成777以后可以开启了,然后再弄回来。这个问题解决了但是原因一直不知道,直到我因为另一个问题搜了一下才搞明白。

另一个问题是:更新插件update的时候会提示我输入ftp帐号,以前没这事啊,于是我就去装了个vsftpd(ftp的服务端),设置好能更新了,但是为什么?后来搜到这篇文章 <Auto Update WordPress Without FTP> 解决了ftp的问题并且意识到上面的问题也和这个有关系,即因为目录的owner不是httpd,所以网站脚本没有对文件操作的权限。

/var/www目录的owner要设置成httpd的运行者(可以用ps aux或者top命令查看),可能是www,apache或者nobody或者其他的。我的是apache,所以在chown apache:apache /var/www -R之后update就不用输ftp了,我立刻关了vsftpd依然ok,可见之前是绕了弯子了,没权限还用ftp操作文件…

绑域名

进godaddy面板直接改A地址就好了,没有别的要操作的。

但是因为我本来虚拟主机上就放了两个网站,所以怎么在一个VPS上绑定多个域名多个网站?之前用cPanel是傻瓜操作,没有怎么弄?这个我也弄了好半天最终解决了,马上再写一篇单独说吧

好啦好啦,到此结束,路人有问题可以在下面留言~

22,775 thoughts on “网站/WordPress从虚拟主机搬家到VPS上

  1. Justinrix

    Saving the link for sure, this one is a keeper, and a look at grousecavern confirmed I should bookmark the entire site rather than just this page, the consistency across what I have seen so far suggests there is a lot more here worth coming back for soon when I have more time.

    Reply
  2. GregoryRit

    A quiet piece that did not try to compete on volume, and a look at celibatea maintained that selective approach, sites that publish less but better are increasingly rare in an environment that rewards volume and this one has clearly chosen quality cadence over quantity which is a brave editorial decision in current conditions.

    Reply
  3. luxury car rental miami_jeMt

    I’ve stepped on enough landmines to write a guidebook. You find this tempting offer online — gorgeous convertible, fair daily rate, looks like a steal. Completely different car waiting — bald tires, smell like someone lived in it, and that “fair rate”? Doesn’t include the mandatory $45 daily toll pass or the $350 “location fee” they spring on you. Eighteen years in South Florida and these clowns still almost get me. those guys are professional scammers in nice uniforms. anyone who’s tried the trolley knows the struggle. leather seats that won’t brand your legs in July. I’ve tested so many rental companies I’ve honestly lost count. Finally found one outfit that doesn’t play games. rates change daily so check them out:
    exotic cars miami beach exotic cars miami beach also bring polarized shades unless you enjoy driving blind. Anyway glad there’s at least one honest operator left.

    Reply
  4. BufordPaT

    Reading this post made me realise I had been settling for lower quality elsewhere, and a look at momentumchanneling extended that recalibration, content that exposes how much I had been accepting in adjacent sources is content with calibrating effect on my standards and this site is performing that calibration function across topics for me reliably.

    Reply
  5. Toditete

    Now adding the writer to a small mental list of voices I want to follow, and a look at kuma-ak reinforced that follow intention, the few writers whose work I actively track are writers who have demonstrated sustained quality and this writer has clearly demonstrated that sustained quality across the pieces I have sampled here today.

    Reply
  6. BobTiz

    Thanks for a post that does not try to be funny when it is not the moment for it, and a stop at ethylbenzene maintained the same appropriate seriousness, knowing when humour helps and when it just signals desperation for engagement is a sign of editorial maturity that many blogs have not developed yet.

    Reply
  7. DwayneFar

    Reading this in my last reading slot of the day was a good way to end, and a stop at globebeats provided a satisfying close to the reading session, content that ends a day well rather than agitating it before sleep is the kind I value increasingly and this site fits that role for me consistently now.

    Reply
  8. Kendricktaw

    Worth pointing out that the post avoided the temptation to summarise everything at the end, and a look at tuaobook continued that confident closing approach, content that trusts readers to retain the substance without being reminded of it at the end is content that respects the reader and this site practices that respect.

    Reply
  9. Mauricevex

    Decided this was the kind of site I would defend in a discussion about good blog content, and a stop at annalsa reinforced that, very few sites earn active defence rather than passive consumption and this one has clearly crossed that threshold for me without needing any explicit pitch from the writers themselves either.

    Reply
  10. ForrestDardy

    Beyond the immediate post itself the editorial sensibility behind the site is what struck me, and a stop at 850550l continued displaying that sensibility, content that reveals editorial choices through accumulated reading is content with structural quality and this site has clearly developed an underlying approach worth identifying through multiple sessions of reading.

    Reply
  11. luxury car rental miami_zqka

    Trust me, I’ve learned everything the hard way so you don’t have to. Then you actually show up to grab the keys. Plus they put a $4000 hold on your card and say it’ll take two weeks to release. Eleven years in South Florida and these clowns still almost get me. luxury car rental miami fl. Miami without proper wheels is basically a disaster. leather seats that won’t fuse to your legs in August. most are shiny garbage with fake Google reviews bought in bulk. no games, no switch, no hidden BS in paragraph 12 of the contract. prices change hourly so check before the weekend crowd wipes them out:
    rent a luxury car tmb miami rent a luxury car tmb miami Yeah parking in South Beach will cost you a nice bottle of champagne — but that’s the Miami tax. Anyway glad there’s at least one straight operator left in this rental circus.

    Reply
  12. MaxwellVap

    Decided this was the best thing I had read all morning, and a stop at aswa9onlin kept that ranking intact, ranking my reading is something I do mentally throughout the day and the top rank is competitive and not easily won but this site won it without needing to overstate its claims for that.

    Reply
  13. luxury car rental miami_saoi

    Let me give it to you straight — renting a decent car in Miami is way harder than it should be. You see this amazing deal online — shiny Audi, unlimited miles, price that makes you want to book right now. Totally different car waiting — scratches everywhere, AC blowing warm, and that “amazing price”? Doesn’t include the mandatory $50 daily insurance or the $400 “service fee” they add at the counter. Nineteen years in South Florida and these tricks still surprise me. When you’re hunting for a legit luxury car rental miami. anyone who’s taken the bus here knows what I mean. Key Biscayne sunset, Bal Harbour shopping, or a spontaneous drive down to Homestead — AC must freeze your face off and unlimited miles or no deal. most are shiny garbage with fake five-star reviews. no games, no switch, no hidden fees. prices change daily so check it out:
    lamborghini urus rental in miami https://luxury-car-rental-miami-19.com Yeah parking in Brickell will cost you — but that’s life here. Anyway glad there’s at least one straight shooter left.

    Reply
  14. Otisplemy

    Excellent post, balanced and well organised without showing off, and a stop at elmharborgoodsroom continued in that same vein, this site has clearly figured out the formula for content that works for readers rather than for search engine ranking signals which is harder than it sounds today and worth real recognition from anyone.

    Reply
  15. Deanmeasp

    Bookmark added with a small mental note that this is a site to keep, and a look at xhydh20 reinforced the keep status, the verb keep rather than visit captures something about how I think about this kind of site and it is a higher tier of relationship than I have with most places online today.

    Reply
  16. GregoryRit

    My friends would appreciate a few of these posts and I will be sending links accordingly, and a look at celibatea added more pages to my share queue, content that earns shares to specific people in specific contexts is content with social utility and this site is generating those targeted shares from me consistently lately.

    Reply
  17. Toditete

    Most of the time I bounce off similar pages within seconds, and a stop at kuma-ak held me longer than I would have predicted, the ability to convert a likely bouncing visitor into an engaged reader is a quality signal and this site has demonstrated that conversion ability across multiple visits where I expected to bounce.

    Reply
  18. Johnnieapedy

    Reading this on a phone at a coffee shop and finding it perfectly suited to that context, and a stop at huodaohang continued the comfortable mobile experience, content that works across reading conditions without compromising on substance is increasingly important and this site has clearly thought about the whole reader experience here.

    Reply
  19. Kendricktaw

    Now planning to come back when I have the right kind of attention to read carefully, and a stop at tuaobook reinforced that plan, choosing the right moment to read certain content is a quiet form of respect for the work and this site is generating those careful planning behaviours from me consistently as a reader.

    Reply
  20. luxury car rental miami_pnea

    I’ve paid my dues so you don’t have to. You spot this killer offer online — brand new Porsche, zero excess, price that screams “book me”. Plus they freeze $5500 on your card and say “it’ll drop off in two weeks”. Twenty years in South Florida and these clowns still almost get me. When you need a trustworthy luxury car rental miami. anyone who’s tried public transport here knows I’m not joking. leather seats that won’t weld to your legs in July. I’ve tested so many rental companies across Dade, Broward, and Palm Beach. no games, no bait-and-switch, no hidden fees on page 8. prices change hourly so don’t wait around:
    premium car hire near me premium car hire near me also bring polarized shades unless you enjoy driving into the sun like a zombie. Anyway glad there’s at least one honest operator left in this town.

    Reply
  21. luxury car rental miami_rqEa

    Alright listen up — time for a real talk about renting cars in Miami. You book something slick online — great photos, reasonable rate, looks like a win. Different car sitting there — dents you didn’t see, AC that barely works, and that “reasonable rate”? Doesn’t include the mandatory $40 daily insurance or the $300 “processing fee” they add at the last second. Fool me seventeen times? That’s just life in the 305. luxury car rental miami fl. Miami without good wheels is basically a headache. Coconut Grove dinner, Bal Harbour shopping, or a spontaneous drive to the Keys — AC must be cold and unlimited miles or forget it. most are all flash and no substance. no games, no hidden fees, no nonsense. prices change fast so take a look:
    premium sedan car rental https://luxury-car-rental-miami-17.com also bring good shades unless you like driving blind. Anyway glad someone’s still running an honest business.

    Reply
  22. Mauricevex

    Solid quality, the kind of work that holds up to a careful read rather than a quick skim, and a quick look at annalsa kept that standard going strong, content that rewards attention rather than punishing it is something I appreciate more and more these days online across nearly every topic I follow.

    Reply
  23. luxury car rental miami_zcka

    Trust me, I’ve learned everything the hard way so you don’t have to. You see this gorgeous deal online — clean spec, fair price, looks like a dream. Plus they put a $4000 hold on your card and say it’ll take two weeks to release. Fool me eleven times? That’s just called living in Miami. luxury car rental miami florida. anyone who’s tried the bus here knows exactly what I mean. Key Biscayne sunset, Design District shopping, or a spontaneous drive down to the Everglades — AC must be arctic and unlimited miles non-negotiable. most are shiny garbage with fake Google reviews bought in bulk. Finally found one outfit that actually delivers what’s in the photos. prices change hourly so check before the weekend crowd wipes them out:
    rolls royce cullinan for rent near me https://luxury-car-rental-miami-11.com also bring polarized shades unless you enjoy driving into the sun like a blind bat. drive safe and definitely skip that “tire and wheel” upsell — pure profit for them, zero value for you.

    Reply
  24. luxury car rental miami_gxpn

    Let me drop some hard truth about the Miami rental game — it’s an absolute circus out here. Then you actually roll up to the lot. Plus they lock up $5500 on your card and say “it’ll drop off in 10-14 business days”. Fool me fourteen times? That’s just the 305 experience at this point. those guys are professional scammers with nice teeth and better uniforms. Miami without real wheels is basically a punishment. leather seats that won’t weld themselves to your thighs in July. I’ve tested maybe 75 rental outfits across Dade, Broward, and Monroe. Finally found one company that doesn’t play stupid games. Here’s the only honest source for premium rides across South Florida
    renting luxury cars near me https://luxury-car-rental-miami-14.com also bring polarized shades unless you enjoy driving into the sun like a vampire every evening. Anyway glad there’s at least one straight operator left in this rental jungle.

    Reply
  25. luxury car rental miami_jlka

    Let me save you some serious pain with this Miami rental nonsense. You see this gorgeous deal online — clean spec, fair price, looks like a dream. Completely different car sitting there — dents everywhere, smells like cheap air freshener covering something worse, and that “dream price”? Doesn’t include the mandatory $50 daily insurance or the $300 “administrative fee” they invent at checkout. Eleven years in South Florida and these clowns still almost get me. those counters are professional bait-and-switch artists. Miami without proper wheels is basically a disaster. Key Biscayne sunset, Design District shopping, or a spontaneous drive down to the Everglades — AC must be arctic and unlimited miles non-negotiable. I’ve tested maybe 60 rental companies across Dade, Broward, and Collier. no games, no switch, no hidden BS in paragraph 12 of the contract. Here’s the only honest source for premium rides across South Florida
    luxury vehicle rentals luxury vehicle rentals also bring polarized shades unless you enjoy driving into the sun like a blind bat. drive safe and definitely skip that “tire and wheel” upsell — pure profit for them, zero value for you.

    Reply
  26. Kentrounc

    A piece that read as the work of someone who reads carefully themselves, and a look at forwardexecutionhub continued that informed feel, writers who are also serious readers produce work with a different quality and this site reads as the product of someone steeped in good writing rather than just generating content for an audience.

    Reply
  27. QuentinCaM

    Liked the way the post handled the final paragraph, no neat bow but no abrupt cutoff either, and a stop at goldencovegoods continued that thoughtful ending pattern, endings are hard and most blog writers either over engineer them or skip them entirely and this site has clearly figured out a sustainable middle approach.

    Reply
  28. luxury car rental miami_izma

    I’ve been burned more times than a cheap steak at a tourist trap. You find this amazing offer online — beautiful car, great rate, everything seems perfect. Plus they put a $3500 hold on your card and say “it’ll drop off in 7-10 days”. Honestly, I’m tired of this nonsense. miami luxury car rental. Miami without real wheels is basically a slow death. leather seats that won’t stick to your back in the humidity. I’ve tried so many rental companies I’ve lost count. Finally found one that actually keeps its word. Here’s the only honest place for premium rentals across South Florida
    lamborghini urus rental in miami lamborghini urus rental in miami Yeah parking in Miami Beach will cost you — but that’s life here. drive safe and skip the extra insurance upsell, it’s a joke.

    Reply
  29. Albertlaf

    Better than most of the writing I have come across on this topic recently, simpler and more direct, and a look at hsgde continued in that same way, a real outlier in a crowded space full of repetitive content that says little while taking up a lot of reader time today which is unfortunate.

    Reply
  30. luxury car rental miami_onOa

    Alright folks, last warning about the Miami rental madness — learn from my mistakes. Spoiler alert: it usually is. Then you actually go to pick up the car. Plus they slap a $6000 hold on your credit card and say “don’t worry, it’s just a pre-authorization”. Fool me fifteen times? That’s just another Tuesday in the 305. miami car rental luxury — run like hell from the airport counters. Miami without proper wheels is basically a hostage situation. South of Fifth brunch, Sunny Isles sunrise, or a spontaneous trip down to the Florida Keys — AC must be arctic cold and unlimited miles non-negotiable. I’ve tested maybe 80 rental companies across Dade, Broward, Palm Beach, and Monroe. Finally found one outfit that actually delivers what’s promised. Here’s the only straight shooter for premium rides across South Florida
    porsche rental price https://luxury-car-rental-miami-15.com also bring quality shades unless you enjoy driving into the sun like a blind zombie. drive safe and definitely skip that “paint protection” upsell — complete waste of cash.

    Reply
  31. Charliecip

    Now considering whether the post would translate well into a different form, and a look at tianx1231 suggested similar versatility, content that could move into other media without losing its substance is content that has been built around ideas rather than around format and this site reads as idea first throughout posts.

    Reply
  32. Roderickbrolf

    Worth observing that the post landed without needing a flashy headline to hook attention, and a stop at grouseebony did the same, content that earns engagement through substance rather than packaging is the kind I trust more deeply and this site has clearly chosen substance as the primary lever for reader engagement throughout.

    Reply
  33. Ricardolen

    Coming back tomorrow when I can give this a proper read, the post deserves better attention than I can give right now, and a look at fjordaster suggests there is plenty more here that deserves the same treatment, definitely a site I will be exploring properly over the next few days when I can.

    Reply
  34. MauriceAmins

    Generally my attention drifts on long posts but this one held it through the end, and a stop at 5ysrzcf earned the same sustained focus, content that defeats my drift tendency is content with substantive pulling power and this site has demonstrated that pulling power across multiple pieces in a session that has now run quite long actually.

    Reply
  35. luxury car rental miami_hwMt

    I’ve stepped on enough landmines to write a guidebook. Then you actually go to pick it up. Plus they lock up $4500 on your card and say “10-14 business days”. Fool me eighteen times? That’s just the 305 way of life. miami car rental luxury — run away from the airport counters. anyone who’s tried the trolley knows the struggle. South Beach night out, Design District shopping, or a spontaneous Keys trip — AC must be arctic and unlimited miles non-negotiable. most are polished turds with fake reviews. Finally found one outfit that doesn’t play games. Here’s the only honest source for premium rides across South Florida
    rental car in miami florida https://luxury-car-rental-miami-18.com Yeah parking in Wynwood will cost you — but that’s Miami for you. Anyway glad there’s at least one honest operator left.

    Reply
  36. luxury car rental miami_qima

    I’ve been burned more times than a cheap steak at a tourist trap. Then you actually show up to get the keys. Completely different car waiting for you — smells like stale cigarettes, check engine light glowing, and that “great rate”? Doesn’t include the mandatory $35 daily toll pass, the $200 cleaning fee, or the $75 “after-hours pickup” charge. Sixteen years in Miami and these tricks still pop up like bad weeds. When you need a legit luxury car rental miami. anyone who’s taken the bus in August knows I’m not lying. leather seats that won’t stick to your back in the humidity. I’ve tried so many rental companies I’ve lost count. no tricks, no switch, no surprise fees. Here’s the only honest place for premium rentals across South Florida
    luxury suv rental miami luxury suv rental miami Yeah parking in Miami Beach will cost you — but that’s life here. Anyway glad someone’s still honest in this business.

    Reply
  37. Johnnyfindy

    Honest reaction is that this is the kind of writing I would defend in a conversation about good blog content, and a look at gemcoasts reinforced that, the rare site whose work I would actively recommend rather than just tolerate is the kind I want to support through return visits regularly.

    Reply
  38. Landonpak

    Generally I bookmark sparingly to avoid building up a bookmark graveyard but this one earned a permanent slot, and a stop at 595tz131 extended that permanence designation, the few sites I keep permanent bookmarks for are sites I expect to use repeatedly and this one has clearly cleared that expectation bar today.

    Reply
  39. Johnnieapedy

    Glad the writer did not feel the need to argue with imaginary critics in the post itself, and a stop at huodaohang kept the same focused approach going, defensive writing wastes the reader time and confidence on positions that did not need defending and this post has clearly avoided that common failure.

    Reply
  40. luxury car rental miami_ttEa

    Been through enough garbage to last a lifetime. Then you actually go to pick up the car. Totally different vehicle waiting for you — check engine light on, curb rash on every rim, and that “tempting price”? Doesn’t include the mandatory $35 daily toll pass or the $250 cleaning fee they sneak in at the end. Ten years in South Florida and these jokers still almost catch me slipping. luxury car rental miami fl. anyone who’s taken public transport here knows the struggle is real. leather seats that won’t cook your back in the July heat. I’ve run through maybe 55 rental companies across Dade, Broward, and Palm Beach. no games, no bait-and-switch, no hidden fees in the fine print. Here’s the only straight shooter for premium rides across South Florida
    luxury car hire luxury car hire Yeah parking in Brickell will cost you a nice dinner — but that’s just how it is down here. Anyway glad there’s at least one honest rental joint left in this town.

    Reply
  41. luxury car rental miami_bgEa

    Alright listen up — time for a real talk about renting cars in Miami. Then you actually go to pick it up. Plus they freeze $4000 on your card and say “it’ll drop off eventually”. Fool me seventeen times? That’s just life in the 305. When you’re looking for a solid luxury car rental miami. Miami without good wheels is basically a headache. leather that won’t stick to you in the humidity. I’ve tried so many rental places I’ve lost count. Finally found one that actually delivers. prices change fast so take a look:
    luxury car rental miami luxury car rental miami also bring good shades unless you like driving blind. drive safe and skip the overpriced roadside add-on.

    Reply
  42. Deanmeasp

    Felt a small spark of recognition when the post named something I had been struggling to articulate, and a look at xhydh20 produced more such moments, the rare service of giving readers language for fuzzy intuitions is one of the higher values that good writing can provide and this site offered several today instances.

    Reply
  43. luxury car rental miami_uwEa

    Alright listen up — time for a real talk about renting cars in Miami. You book something slick online — great photos, reasonable rate, looks like a win. Plus they freeze $4000 on your card and say “it’ll drop off eventually”. Fool me seventeen times? That’s just life in the 305. luxury car rental in miami. anyone who’s tried Uber during rush hour knows the deal. leather that won’t stick to you in the humidity. most are all flash and no substance. Finally found one that actually delivers. Here’s the only honest spot for premium rides across South Florida
    mercedes car rental near me https://luxury-car-rental-miami-17.com also bring good shades unless you like driving blind. Anyway glad someone’s still running an honest business.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *