2020年11月18日星期三

2020年11月15日星期日

《轮回》 - 唐波清

 儿时,我做梦都想得到一辆脚踏三轮玩具车。可我每回央求父亲的时候,父亲不是推三阻四就是糊弄应付。母亲说话一向直爽,道出了实情,咱家穷,实在没钱买这玩意儿。


七岁生日的那天,父亲送给我一件礼物,一辆脚踏三轮玩具车。可惜,这辆玩具车是木制的三轮车,就连三个轮子也是木块拼成的,这是父亲雇请木匠老张特意帮我打造的礼物。虽然这辆三轮车有些粗糙,甚至有些丑陋,但对于我来说还是有点惊喜,甚至有点满足。


生日那一整天,我就没歇息过。骑着木制的三轮车,不停地在晒谷场上转着圈,我在前面骑着车,父亲跟在后面跑,生怕我有个闪失。我转十个圈,父亲就转十个圈;我转一百个圈,父亲就转一百个圈。


累了。满身是汗的我,望着满身是汗的父亲,乐呵呵地笑。


光阴荏苒。这一晃,我长大了,父亲年迈了。


去年,父亲有意无意地说,咱想买一辆电动三轮车。咱的年纪越来越大,走路乏力,这要是有辆电动三轮车,不光出行代步要方便一些,偶尔载点货物也还轻松一点。父亲说这话的时候似乎很随意,可内心的那种期盼显而易见。


爹,您都上了这把年纪,要是骑着电动三轮车,碰倒了,摔伤了,那咋办?我劝您还是别买三轮车,那玩意儿危险。这还真不是推三阻四也不是糊弄应付,我就怕父亲有个三长两短。


父亲沉默无语。


可有事没事的时候,父亲总望着隔壁赵大伯的电动三轮车发呆,甚至偷偷地贴到三轮车的跟前,左手摸摸电源开关,右手摸摸手动刹车。看那个架势,父亲恨不得骑上赵大伯的三轮车转几个圈圈才过瘾。


今年,父亲七十岁生日的那天,我送给父亲一件礼物,一辆轻型电动三轮车。父亲激动得连着说三个字,好,好,好。


生日那一整天,父亲就没歇息过。骑着电动三轮车,不停地在晒谷场上转着圈,父亲在前面骑着车,我跟在后面跑,生怕父亲有个闪失。父亲转十个圈,我就转十个圈;父亲转一百个圈,我就转一百个圈。


累了。满身是汗的父亲,望着满身是汗的我,乐呵呵地笑。




《轮回》是一篇充满真情实感的作品,触动读者心弦,一种沧桑感弥漫开来,极易引发人的共鸣。故事情节很简单,却写出了普天下的父子情深。你养我长大,我陪你变老。幼年时期,父母对儿女悉心的关爱与呵护,待父母年老,子女反哺,用同样的深情回馈父母。此情令天下为人父母为人子女者动容。此篇作品刊出后,被国内多家报刊、公众号和网站转载,深受读者好评。

作品借两个学车的场景,来表现父亲与儿子彼此之间的挚爱亲情:幼时父亲陪着儿子骑木制的三轮车,“我转十个圈,父亲就转十个圈;我转一百个圈,父亲就转一百个圈。”父亲年老,“我”又陪父亲骑电动三轮车,“父亲转十个圈,我就转十个圈;父亲转一百个圈,我就转一百个圈。”相似的场景,相似的话语,人物的身份已在不经意间互换。父亲的舐犊之情,儿子的孝心孝道,都在这一句看似平淡的描写中。正可谓繁华落尽见真淳,越是朴素真诚的作品,越焕发出其动人的艺术力量。

2020年11月14日星期六

《葡萄月令》 -汪曾祺



一月,下大雪。

雪静静地下着。果园一片白。听不到一点声音。葡萄睡在铺着白雪的窖里。

二月里刮春风。

立春后,要刮四十八天“摆条风”。风摆动树的枝条,树醒了,忙忙地把汁液送到全身。树枝软了。树绿了。

雪化了,土地是黑的。

黑色的土地里,长出了茵陈蒿。碧绿。

葡萄出窖。

把葡萄窖一锹一锹挖开。挖下的土,堆在四面。葡萄藤露出来了,乌黑的。有的梢头已经绽开了芽苞,吐出指甲大的苍白的小叶。它已经等不及了。

把葡萄藤拉出来,放在松松的湿土上。

不大一会,小叶就变了颜色,叶边发红;——又不大一会,绿了。

三月,葡萄上架。

先得备料。把立柱、横梁、小棍,槐木的、柳木的、杨木的、桦木的,按照树棵大小,分别堆放在旁边。立柱有汤碗口粗的、饭碗口粗的、茶杯口粗的。一棵大葡萄得用八根、十根,乃至十二根立柱。中等的,六根、四根。

先刨坑,竖柱。然后搭横梁。用粗铁丝摽紧。然后搭小棍,用细铁丝缚住。

然后,请葡萄上架。把在土里趴了一冬的老藤扛起来,得费一点劲。大的,得四五个人一起来。“起!——起!”哎,它起来了,把它放在葡萄架上,把枝条向三面伸开,像五个指头一样的伸开,扇面似的伸开。然后,用麻筋在小棍上固定住。葡萄藤舒舒展展,凉凉快快地在上面呆着。

上了架,就施肥。在葡萄根的后面,距主干一尺,挖一道半月形的沟,把大粪倒在里面。葡萄上大粪,不用稀释,就这样把原汁大粪倒下去。大棵的,得三四桶。小葡萄,一桶也就够了。

四月,浇水。

挖窖挖出的土,堆在四面,筑成垄,就成一个池子。池里放满了水。葡萄园里水气泱泱,沁人心肺。

葡萄喝起水来是惊人的。它真是在喝哎!葡萄藤的组织跟别的果树不一样,它里面是一根一根细小的导管。这一点,中国的古人早就发现了。《图经》云:“根苗中空相通。圃人将货之,欲得厚利,暮溉其根,而晨朝水浸子中矣,故俗呼其苗为木通。”“暮溉其根,而晨朝水浸子中矣。”是不对的,葡萄成熟了,就不能再浇水了。再浇,果粒就会涨破。“中空相通”却是很准确的。浇了水,不大一会,它就从根直吸到梢,简直是小孩嘬奶似的拼命往上嘬。浇过了水,你再回来看看吧:梢头切断过的破口,就嗒嗒地往下滴水了。

是一种什么力量使葡萄拼命地往上吸水呢?

施了肥,浇了水,葡萄就使劲抽条、长叶子。真快!原来是几根根枯藤,几天工夫,就变成青枝绿叶的一大片。

五月,浇水,喷药,打梢,掐须。

葡萄一年不知道要喝多少水,别的果树都不这样。别的果树都是刨一个“树碗”,往里浇几担水就得了,没有像它这样的:“漫灌”,整池子的喝。

喷波尔多液。从抽条长叶,一直到坐果成熟,不知道要喷多少次。喷了波尔多液,太阳一晒,葡萄叶子就都变成蓝的了。

葡萄抽条,丝毫不知节制,它简直是瞎长!几天工夫,就抽出好长的一截新条。这样长法还行呀,还结不结果呀?因此,过几天就得给它打一次条。葡萄打条,也用不着什么技巧,是个人就能干,拿起树剪,劈劈啪啪,把新抽出来的一截都给它铰了就得了。一铰,一地的长着新叶的条。

葡萄的卷须,在它还是野生的时候是有用的,好攀附在别的什么树木上。现在,已经有人给它好好地固定在架上了,就一点用也没有了。卷须这东西最耗养分,——凡是作物,都是优先把养分输送到顶端,因此,长出来就给它掐了,长出来就给它掐了。

葡萄的卷须有一点淡淡的甜味。这东西如果腌成咸菜,大概不难吃。

五月中下旬,果树开花了。果园,美极了。梨树开花了,苹果树开花了,葡萄也开花了。

都说梨花像雪,其实苹果花才像雪。雪是厚重的,不是透明的。梨花像什么呢?——梨花的瓣子是月亮做的。

有人说葡萄不开花,哪能呢,只是葡萄花很小,颜色淡黄微绿,不钻进葡萄架是看不出的,而且它开花期很短。很快,就结出了绿豆大的葡萄粒。

六月,浇水、喷药、打条、掐须。

葡萄粒长了一点了,一颗一颗,像绿玻璃料做的纽子。硬的。

葡萄不招虫。葡萄会生病,所以要经常喷波尔多液。但是它不像桃,桃有桃食心虫;梨,梨有梨食心虫。葡萄不用疏虫果。——果园每年疏虫果是要费很多工的。虫果没有用,黑黑的一个半干的球,可是它耗养分呀!所以,要把它“疏”掉。

七月,葡萄“膨大”了。

掐须、打条、喷药,大大地浇一次水。

追一次肥。追硫铵。在原来施粪肥的沟里撒上硫铵。然后,就把沟填平了,把硫铵封在里面。

汉朝是不会有追这次肥的,汉朝没有硫铵。

八月,葡萄“着色”。

别以为我这里是把画家的术语借用来了。不是的。这是果农的语言,他们就叫“着色”。

下过大雨,你来看看葡萄园吧,那叫好看!白的像白玛瑙,红的像红宝石,紫的像紫水晶,黑的像黑玉。一串一串,饱满、磁棒、挺括,璀璨琳琅。你就把《说文解字》里的玉字偏旁的字都搬了来吧,那也不够用呀!

可是你得快来!明天,对不起,你全看不到了。我们要喷波尔多液了。一喷波尔多液,它们的晶莹鲜艳全都没有了,它们蒙上一层蓝兮兮、白糊糊的东西,成了磨砂玻璃。我们不得不这样干。葡萄是吃的,不是看的。我们得保护它。

过不两天,就下葡萄了。

一串一串剪下来,把病果、瘪果去掉,妥妥地放在果筐里。果筐满了,盖上盖,要一个棒小伙子跳上去蹦两下,用麻筋缝的筐盖。——新下的果子,不怕压,它很结实,压不坏。倒怕是装不紧,逛里逛当的。那,来回一晃悠,全得烂!

葡萄装上车,走了。

去吧,葡萄,让人们吃去吧!

九月的果园像一个生过孩子的少妇,宁静、幸福,而慵懒。

我们还给葡萄喷一次波尔多液。哦,下了果子,就不管了?人,总不能这样无情无义吧。

十月,我们有别的农活。我们要去割稻子。葡萄,你愿意怎么长,就怎么长着吧。

十一月。葡萄下架。

把葡萄架拆下来。检查一下,还能再用的,搁在一边。糟朽了的,只好烧火。立柱、横梁、小棍,分别堆垛起来。

剪葡葡条。干脆得很,除了老条,一概剪光。葡萄又成了一个秃子。

剪下的葡萄条,挑有三个芽眼的,剪成二尺多长的一截,捆起来,放在屋里,准备明春插条。

其余的,连枝带叶,都用竹笤帚扫成一堆,装走了。

葡萄园光秃秃。

十一月下旬,十二月上旬,葡萄入窖。

这是个重活。把老本放倒,挖土把它埋起来。要埋得很厚实。外面要用铁锹拍平。这个活不能马虎。都要经过验收,才给记工。

葡萄窖,一个一个长方形的土墩墩。一行一行,整整齐齐地排列着。风一吹,土色发了白。

这真是一年的冬景了。热热闹闹的果园,现在什么颜色都没有了。眼界空阔,一览无余,只剩下发白的黄土。

下雪了。我们踏着碎玻璃碴似的雪,检查葡萄窖,扛着铁锹。

一到冬天,要检查几次。不是怕别的,怕老鼠打了洞。葡萄窖里很暖和,老鼠爱往这里面钻。它倒是暖和了,咱们的葡萄可就受了冷啦!

【导读】

仙子葡萄

汪曾祺的《葡萄月令》是一篇写得十分别致的抒情文,介绍一年之中与葡萄的种植、培育、采摘、贮藏等有关的“知识”,从一月到十二月,像记流水账一般。这篇散文最突出的特点是结构散漫、随意,全篇以十二月份为基本框架,以葡萄的生长为基本线索来组织文字。

文章从一月“葡萄藤”的冬眠开始,一直写到十二月份再次“冬眠”。这里,葡萄园中一年的劳动情景是美的,劳动不再是一种又脏又累的体力活儿,而是充满了诗意,人对劳动充满了喜悦和激情。作者笔下的葡萄是拟人化的,是葡萄仙子,有生命力,充满着创造的渴望。作者把葡萄的活力、创造力、奉献精神形象地展现出来了。葡萄生长的过程就是一个生命复苏、兴盛、发光发热、创造价值的过程。而这一切的创造者是谁呢?——劳动者,这就自然引出对劳动和劳动者的歌颂和赞美。在作者看来,劳动者是美的,因为他们创造了美好的生活。劳动是一种充满诗意的美,劳动者是美丽的,这就是本文要传达的主要思想。作者把劳动写的很“实”,有时甚至是不搀杂任何主观色彩的介绍式的描述。

作者在文中为我们呈现了三类形象。一类是葡萄。作者笔下的葡萄,充满着无限的生机和活力,既是自然界万物“竞自由”的写照,也是具有这种品格和精神的人的化身。二类是葡萄园的主人——果农。通过正面写劳动的程序带出劳动的人,作者把着力点放在对葡萄管理的程序的介绍上,这是本文写法的独特之处。三类是作者自身的形象。文章把“我”隐得很深,但是任何优秀的散文都不能没有“我”。“我”分明就在劳动中,是劳动者的一员。“我”用劳动创造了美,“我”在劳动中发现了美。如果作为一个旁观者,或者一味地用轻浮的笔触赞美果园的诗情画意,或者赞美果园美景的同时发一通“谁知盘中葡(萄),粒粒皆辛苦”的感叹,则文章就失去了对生活本质的开掘。

本文所描写的是作者在被下放到干校时的劳动场景,便更可以领略到“我”豁达乐观的人生态度。

《葡萄月令》可以当作乡土诗去读,其重心不在那些如同法则(“令”)的“知识”,而在于渗透在字里行间的情趣与情调。本文的写法属于那种“苦心经营的随便”,自然的文字如行云流水,展现着作者的胸怀、学养和志趣,既熠熠生辉,又摇曳多姿,有横看成岭侧成峰的妙处。全文虽然按十二个月来写葡萄的生长和收获过程,但有些月份详细些,有些月份简略些,张弛有度,加上每个月份间醒目的空行,仍然属于“苦心经营的随便”的结构技巧。总之,在《葡萄月令》中,作者并没有赞美葡萄果实美妙爽口的滋味,而是通过对葡萄一年四季的生长过程细致诗意的描绘,引领读者去发现葡萄之美,在平实自然的外表下蕴涵着深厚的情韵,是一篇高妙的写意之作。

《葡萄月令》的语言是一种诗化的语言,不斧凿、不堆砌,力求准确、简洁,崇尚朴实、自然,在意境上下工夫,显得疏淡、雅致而含蓄。“这样长法还行呀,还结不结果呀?”“下过大雨,你来看看葡萄园吧,那叫好看!”“那,来回一晃悠,全得烂!”“葡萄,你愿意怎么长,就怎么长着吧。”“它倒是暖和了,咱们的葡萄可就受了冷啦!”等等。作者似乎不是在写文章,而是在和老朋友聊天儿,想说什么就说什么,想怎么说就怎么说。由于口语色彩浓,有时看似啰唆多余的句子,却别有韵味,如“一铰,一地的长着新叶的条”,“长出来就给它掐了,长出来就给它掐了”。

作者笔下的葡萄仿佛成了一位仙子,人们赞叹:“《葡萄月令》将葡萄这颗小小的生命一月一月地写来,竟然写出了一个生命的宁馨儿!”唯有对自然和劳动充分热爱,才可在平淡的文字中让人体会到热切的感情。

2020年11月13日星期五

《再选你的父母》 -毕淑敏

 我猜很多人一看到这个题目的名称,就大不以为然,甚至愤愤然了,觉得毕淑敏是不是昏了头,父母是可以再选的吗?中国是孝之邦,身体发肤,受之父母,戴德还表达不尽,岂容再选?我的父母是天下最好的父母,让我重选父母,这不是逼人不孝吗?若是父母已驾鹤西行,这题目简直就是违背天伦。

请您相信我,我没有一丁点想冒犯您的意思,也不是为了震撼视听哗众取宠,实在是为了您的心理健康。

父母可不可以批评?我想大家理论上一定承认父母是可以批评的。即使是伟人,也有这样那样的错误和缺点,我们的父母肯定不是完人,当然也可以讨论。可实际上,有多少人心平气和地批评过我们的父母,并收到了良好的回馈,最终取得了让人满意的效果呢?我能客观地审视父母的优劣长短、得失沉浮吗?我相信愤怒的青年可以大吵一架离家出走,但这并不代表着他能公允地建设性地评价父母。也许有人会说,那是历史了,我们有什么理由在很多年后,甚至在父母都离世之后,还议论他们的功过是非呢?

我想郑重地说,有。因为那些历史并没有消失,它们就存在我们心灵最隐秘的地方,时时在引导着我们的行为准则,操纵着我们的喜怒哀乐。

父母是会伤人的,家庭是会伤人的。当我们还是孩子的时候,我们无力分辨哪些是真正的教导、哪些只是父母自身情绪的宣泄。我们如同酒店里恭顺的小伙计,把父母的话和表情,还有习惯和嗜好,如同流水账一般记录在年幼的脑海中。他们是我们的长辈,他们供给我们吃穿住行,在某种程度上说,我们是凭借他们的喜爱和给予,才得以延续自己幼小的生命。那时候,他们就是我们的天和地,我们根本就没有力量抗辩他们、忤逆他们。

你的父母塑造了你,你在不知不觉中重复着他们展示给你的模板,你是他们某种程度的复制品。分析他们的过程其实是在分析你自己。

请你准备一张白纸,让思绪和想象自由驰骋。在白纸上方写下你的名字,左边写上“再选”二字。现在,纸上的这行字变成了“再选×”,你在这行字的右面写上“的父母”三个字。

“再选×的父母”。我敢说,也许在此刻之前,你从来没有想过可以把自己的父母炒了鱿鱼,让他们下岗,自行再来招聘一对父母。请你郑重地写下你为自己再选父母的名字。

父:  母:

我猜你一定狠狠地愣一下。虽然我们对自己的父母有过种种的不满,但真的把他们淘汰了,你一定目瞪口呆。你要挺住啊,记住这不过是一个游戏。

谁是我们再选父母的最佳人选呢?你不必煞费苦心,心灵游戏的奥妙之处就在于它的一闪念之中。你的潜意识如同潜藏深海的美人鱼,一个鱼跃,跳出海面,露出了它流线型的身躯和嘴边的胡须。原来,它并非美女,也不是猛兽。关于你的再选父母的人选,你把头脑中涌起的第一个人名写下就是了。

他们可以是英雄豪杰,也可以是邻居家的老媪;可以是已经逝去的英豪,也可以是依然健在的大款;可以是绝色佳人,也可以是末路英雄;可以是动物植物,也可以是山岳湖泊;可以是日月星辰,也可以是布帛黍粟;可以是一代枭雄,也可以是飞禽走兽;可以是自己仰慕的长辈,也可以是弟妹同学……总之,你就尽量展开想象的翅膀,天上地下地为自己选择一对心仪的父母。

你再选的父母是什么类型的东西(原谅我用了“东西”这个词,没有不敬的意思,只是一言以蔽之),这不重要。重要的是你在这个游戏中重新认识了你的父母,你在弥补你童年的缺憾,你在重新构筑你心灵的世界。你会发现自己缺少的东西、追求的东西到底是什么。

有个农村来的孩子,父母都是贫苦的乡民。在重选父母的游戏中,他令自己的母亲变成了玛丽莲•梦露,让自己的父亲变成了乾隆。我想这是一个非常典型的例子,我首先要感谢这位朋友的坦率和信任。因为这样的答案太容易引起歧义和嘲笑了,虽然它可能是很多人的向往。

我问他,玛丽莲•梦露这个女性,在你的字典中代表了什么?他回答说,她是我见过的最美丽和最现代的女人。我说,那么,你是不是觉得自己亲生母亲丑陋和不够现代?他沉默了很久说,正是这样。中国有句俗话叫做“儿不嫌母丑,狗不嫌家贫”,我嫌弃我的母亲丑,这真是大不敬的恶行。平常我从来不敢跟人表露,但她实在是太丑的女人,让我从小到大蒙受了很多耻辱。我在心里是讨厌她的。从我开始知道美丑的概念,我就不容她和我一道上街,就是距离很远,一前一后的也不行,因为我会感到人们的目光像线一样把我和她联系起来。后来我到城里读高中,她到学校看我,被我呵斥走了。同学问起来,我就说,她是一个丐婆,我曾经给过她钱,她看我好心,以为我好欺负,居然跟到这里来了……我说这些话的时候,觉得自己也很有道理,因为母亲丑,并把她的丑遗传给了我,让我承受世人的白眼,我想她是对不住我的。至于我的父亲,他是乡间的小人物,会一点小手艺,能得到人们的一点小尊敬。我原来是以他为豪的,后来到了城里,上了大学,才知道山外有山、天外有天,才知道父亲是多么草芥。同学们的父亲,不是经常在本地电视要闻中露面的政要,就是腰缠万贯、挥金如土的巨富,最次的也是个国企的老总,就算厂子穷得叮当响,照样有公车来接子女上下学。我的位于社会底层的位置是我的父母强加给我的,这太不公平。深层的怒火潜伏在我心底,使我在自卑的同时非常敏感,性格懦弱,但在某些时候又像地雷似的一碰就炸……算了,不说我了,我本来认命了,因为父母是不能选择的,所以也从来没有动过这方面的脑筋。既然你今天让做换父母的游戏,让我可以大胆设想、别具一格,我一下子就想到了梦露和乾隆。

我说,先问你一个问题,如果父亲不是乾隆,换成布什或布莱尔,要不就是拉登,你以为如何?

他笑起来说,拉登就免了吧,虽然名气大,但是个恐怖分子,再说翻山越岭胡子老长的也太辛苦。布什或布莱尔?

当然可以,我说,你希望有一个总统或是皇上当父亲,这背后反映出来的复杂思绪,我想你能察觉。

他静了许久,说,我明白那永远伴随着我的怒气从何而来了。我仰慕地位和权势,我希图在众人视线的聚焦点上。我看重身份,热爱钱财,我希望背靠大树好乘凉……当这些无法满足的时候,我就怨天尤人,心态偏激,觉得从自己一落地就被打入了另册。因此我埋怨父母,可是中国“孝”字当先,我又无法直抒胸臆,情绪翻搅,就让我永远不得轻松。工作中、生活中遇到的任何挫折,都会在第一时间让我想起先天的差异,觉得自己无论怎样奋斗也无济于事……

我说,谢谢你的这番真诚告白。只是事情还有另一面的解释,我不知你想过没有?

他说,我很想一听。

我说,这就是,你那样平凡贫困的父母在艰难中养育了你,你长得并不好看,可他们没有像你嫌弃他们那样嫌弃你,而是给了你力所能及的爱和帮助。他们自己处于社会的底层,却竭尽全力供养你读书,让你进了城,有了更开阔的眼界和更丰富的知识。他们明知你不以他们为荣,可他们从不计较你的冷淡,一如既往地以你为荣。他们以自己孱弱的肩膀托起了你的前程,我相信这不是希求你的回报,只是一种无私无悔的爱。

你把梦露和乾隆的组合当成你的父母的最佳结合,恕我直言,这种跨越国籍和历史的组合,攫取了威权和美貌的叠加,在这后面你是否舍弃了自己努力的空间?

梦露是出自上帝之手的珍稀品种,乾隆也是天分和无数拼杀才造就的英才。在你的这种搭配中,我看到是一厢情愿的无望,还有不切实际的奢求。

那位年轻人若有所思地走了。我注视着他的背影,期待他今后可能会有改变。

请你静静地和你的心在一起,面对着你写下的期望中的父母的名字,去感受这种差异后面麇集的情愫。发现是改变的尖兵。

2020年11月10日星期二

提示 管理员已阻止你运行此应用 mmc.exe 的正确解决办法


win10系统下,当右击此电脑,点管理时;或者右击开始按钮,点计算机管理时(或设备管理器),会弹出警告提示:

用户账户控制

为了对电脑进行保护,已阻止此应用。

管理员已阻止你运行此应用。有关详细信息,请与管理员联系。

mmc.exe

发布者:未知

文件源:此计算机上的硬盘驱动器

程序位置:“C:\Windows\System32\mmc.exe” “C:\Windows\System32\compmgmt.msc” /s


关于这类问题,百度一下,千篇一律的都是让你修改“允许应用或功能通过Windows防火墙”,添加mmc.exe,设为允许。然而这方法并没有什么用,而且跟这问题扯不上关系。

系统进程自动提权,猜测是mmc.exe损坏了。

对于这个问题,应该可以用以下命令解决:

sfc /scannow

或者先执行下面命令,再执行上面命令(需win8及以上系统):

dism /online /cleanup-image /restorehealth

这个问题可能跟硬盘故障(如坏道)或内存问题有关,或者是异常关机导致文件损坏,还可能是病毒感染了mmc.exe等。

2020年11月3日星期二

在 Linux 服务器部署 Halo

更新软件包

创建Halo用户,增加sudo权限,并切换至halo用户

adduser halo
usermod -aG sudo halo
su - halo
/usr/local/app/halo


更新软件包,确保服务器的软件包已经是最新的。

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

安装 Java 运行环境

若已经存在 Java 11运行环境的可略过这一步。

# 安装 OpenJRE  (Debian 10 中 OpenJDK 11作为默认Java软件包)
sudo apt-get install default-jdk

# 检测是否安装成功
java -version


从 1.4.3 起,版本要求为 11 以上的版本。1.4.3 以下需要 1.8 以上的版本。

下面是JDK完全卸载示例:(需要在root模式下进行操作)

打开命令终端,切换到root模式下

su root

1、移除所有 Java相关包 (Sun, Oracle, OpenJDK, IcedTea plugins, GIJ)

apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common' | xargs sudo apt-get -y remove
sudo apt-get -y autoremove

进行更新 

sudo apt-get update

2、清除配置信息:

dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge

3、清除java配置及缓存:

bash -c 'ls -d /home/*/.java' | xargs sudo rm -rf

4、清除jvm文件夹里面的文件

 rm -rf /usr/lib/jvm/*

创建 Halo 用户

我们推荐创建一个低权限的用户运行 halo

# 创建 halo 用户
sudo useradd -m halo
# 直接登录该用户
sudo su halo

安装 Halo

配置文件

请注意:配置文件的路径为 ~/.halo/application.yaml

# 下载配置文件到 ~/.halo 目录
curl -o ~/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml

修改配置文件

完成上一步操作,我们就可以自己配置 Halo 的运行端口,以及数据库相关的配置了。

# 使用 Vim 工具修改配置文件
vim ~/.halo/application.yaml

打开之后我们可以看到

server:
port: 8090

# Response data gzip.
compression:
enabled: false
spring:
datasource:
# H2 database configuration.
driver-class-name: org.h2.Driver
url: jdbc:h2:file:~/.halo/db/halo
username: admin
password: 123456

# MySQL database configuration.
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
# username: root
# password: 123456

# H2 database console configuration.
h2:
console:
settings:
web-allow-others: false
path: /h2-console
enabled: false

halo:
# Your admin client path is https://your-domain/{admin-path}
admin-path: admin

# memory or level
cache: memory
  1. 如果需要自定义端口,修改 server 节点下的 port 即可。
  2. 默认使用的是 H2 Database 数据库,这是一种嵌入式的数据库,使用起来非常方便。需要注意的是,默认的用户名和密码为 admin 和 123456,这个是自定义的,最好将其修改,并妥善保存。
  3. 如果需要使用 MySQL 数据库,需要将 H2 Database 的所有相关配置都注释掉,并取消 MySQL 的相关配置。另外,MySQL 的默认数据库名为 halodb,请自行配置 MySQL 并创建数据库,以及修改配置文件中的用户名和密码。
  4. h2 节点为 H2 Database 的控制台配置,默认是关闭的,如需使用请将 h2.console.settings.web-allow-others 和 h2.console.enabled 设置为 true。控制台地址即为 域名/h2-console。注意:非紧急情况,不建议开启该配置。
  5. server.compression.enabled 为 Gzip 功能配置,如有需要请设置为 true,需要注意的是,如果你使用 Nginx 或者 Caddy 进行反向代理的话,默认是有开启 Gzip 的,所以这里可以保持默认。
  6. halo.admin-path 为后台管理的根路径,默认为 admin,如果你害怕别人猜出来默认的 admin(就算猜出来,对方什么都做不了),请自行设置。仅支持一级,且前后不带 /
  7. halo.cache 为系统缓存形式的配置,可选 memory 和 level,默认为 memory,将数据缓存到内存,使用该方式的话,重启应用会导致缓存清空。如果选择 level,则会将数据缓存到磁盘,重启不会清空缓存。如不知道如何选择,建议默认。

注意

使用 MySQL 之前,必须要先新建一个 halodb 数据库,MySQL 版本需 5.7 以上。

create database halodb character set utf8mb4 collate utf8mb4_bin;

运行 Halo

Halo 的整个应用程序只有一个 Jar 包,且不包含用户的任何配置,它放在任何目录都是可行的。需要注意的是,Halo 的整个额外文件全部存放在 ~/.halo 目录下,包括 application.yaml(用户配置文件)template/themes(主题目录)upload(附件上传目录)halo.db.mv(数据库文件)。一定要保证 ~/.halo 的存在,你博客的所有资料可都存在里面。所以你完全不需要担心安装包的安危,它仅仅是个服务而已。

# 下载最新的 Halo 安装包,{{version}} 为版本号,不带 v,更多下载地址请访问 https://halo.run/archives/download.html
wget https://dl.halo.run/release/halo-{{version}}.jar -O halo-latest.jar

# 启动测试
java -jar halo-latest.jar

如看到以下日志输出,则代表启动成功.

run.halo.app.listener.StartedListener    : Halo started at         http://127.0.0.1:8090
run.halo.app.listener.StartedListener : Halo admin started at http://127.0.0.1:8090/admin
run.halo.app.listener.StartedListener : Halo has started successfully!

提示

以上的启动仅仅为测试 Halo 是否可以正常运行,如果我们关闭 ssh 连接,Halo 也将被关闭。要想一直处于运行状态,请继续看下面的教程。

进阶配置

上面我们已经完成了 Halo 的整个配置和安装过程,接下来我们对其进行更完善的配置,比如:需要开机自启?更简单的启动方式?

实现以上功能我们只需要新增一个配置文件即可,也就是使用 Systemd 来完成这些工作。

如果当前用户为 halo 用户,则需要退出 halo 用户,进入一个拥有管理员权限的用户下:

# 查看当前登录用户
whoami

# 退出 halo 登录,进入一个有管理员权限的用户
su xxx 或者直接 exit
# 下载 Halo 官方的 halo.service 模板
sudo curl -o /etc/systemd/system/halo.service --create-dirs https://dl.halo.run/config/halo.service

下载完成之后,我们还需要对其进行修改。

# 修改 halo.service
sudo vim /etc/systemd/system/halo.service

打开之后我们可以看到

[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target

[Service]
User=halo
Type=simple
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar YOUR_JAR_PATH
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target

参数:

  • -Xms256m:为 JVM 启动时分配的内存,请按照服务器的内存做适当调整,512 M 内存的服务器推荐设置为 128,1G 内存的服务器推荐设置为 256,默认为 256。
  • -Xmx256m:为 JVM 运行过程中分配的最大内存,配置同上。
  • YOUR_JAR_PATH:Halo 安装包的绝对路径,例如 /www/wwwroot/halo-latest.jar

提示

  1. 如果你不是按照上面的方法安装的 JDK,请确保 /usr/bin/java 是正确无误的。
  2. systemd 中的所有路径均要写为绝对路径,另外,~ 在 systemd 中也是无法被识别的,所以你不能写成类似 ~/halo-latest.jar 这种路径。
  3. 如何检验是否修改正确:把 ExecStart 中的命令拿出来执行一遍。
# 修改 service 文件之后需要刷新 Systemd
sudo systemctl daemon-reload

# 使 Halo 开机自启
sudo systemctl enable halo

# 启动 Halo
sudo service halo start

# 重启 Halo
sudo service halo restart

# 停止 Halo
sudo service halo stop

# 查看 Halo 的运行状态
sudo service halo status

完成以上操作即可通过 IP:端口 访问了。不过在此之前,最好先完成后续操作,我们还需要让域名也可以访问到 Halo,请继续看 配置域名访问

更新 Halo


# 备份数据
cp -r ~/.halo ~/.halo.bak

# 备份旧的安装包
mv halo-latest.jar halo-latest.jar.bak

# 下载最新的 Halo 安装包,{{version}} 为版本号,不带 v,更多下载地址请访问 https://halo.run/archives/download.html
wget https://dl.halo.run/release/halo-{{version}}.jar -O halo-latest.jar

# 测试是否能够正常启动
java -jar halo-latest.jar

# 重启应用
service halo restart