Ghost是优秀的开源CMS系统,长期保持开源内容管理系统关注度首位。自2013年上线以来,一直保持快速增长,特别是从3。0版本以后,定位更加清晰,为独立出版商提供技术平台。在文本编辑、发布功能完善之后,最近上线了会员、订阅、评论等一系列帮助创作者引流、读沉淀、变现等实用功能。 Ghost作为开源软件本身不收费,但要把它部署在服务器上,需要支付云资源使用费。Ghost背后的开发商提供一站式托管服务。当然,我们也可以把Ghost部署在自己的服务器上。对于独立创作者而言,流量一般不大,而可选择国内厂家的轻量主机和亚马逊的Lightsail。 Lightsail包含虚拟主机、数据库、DNS托管、静态IP、CDN等功能,还可以一键部署Wordpres、Ghost等常用网络应用。非常适合中小开发者和意外爱好者。作为Ghost的长期用户,作者也选择把服务器迁移到Lightsail上。为方便有同样需求的爱好者使用方便,特把详细迁移过程记录下来。注册亚马逊账号、在Lightsail页面右下角把语言切换为中文,方便操作。创建实例,根据个人需求选择实例位置,距离客户群越近越好,选择Ghost镜像,选择付费计划、创建实例。在Lightsail首页联网中创建静态IP选择实例对应区域,创先静态IP地址并绑定到实例上。在实例详情页,联网IPv4防火墙中添加入站规则:放通22、80、443、465、587端口。此时,已经可以通过http:ip地址访问站点。在实例详情页,下载默认密钥,并记下服务器ip地址和用户名bitnami。在本地使用命令行终端登录系统。具体参考aws指引。以Mac为例使用以下命令登录服务器。sudochmod400LightsailKey。pemsshiLightsailKey。pembitnamiip 我们计划使用LightsailCDN服务,还进行一些额外设置。 Bitnami镜像Ghost站点的默认用户名userexample。com,登录密码通过以下命令获得。catbitnamiapplicationpassword 通过7获得用户名和密码在过http:ipghost登录系统,并在个人账号设置下修改用户名和密码。 配置邮箱服务器,以便发送密码修改、会员通知等。具体参考Ghost设置Mailgun指引。把在mailgun获得的密钥等信息,写入Ghost配置文件config。production。json。cdoptbitnamighostsudovimconfig。production。jsonconfig。production。jsonmail:{transport:SMTP,options:{service:Mailgun,host:smtp。mailgun。org,port:465,secure:true,auth:{user:发信邮箱,pass:密码}}}, 配置完后,重启Ghostsudooptbitnamictlscript。shrestartghost 在Ghost后台SettingEmailnewsletter中配置Mailgunconfiguration。根据页面指引获得Mailgundomain和MailgunPrivateAPIkey。 设置CDN:在Lightsail首页联网中创建分配选择实例对应实例作为数据源,缓存行为选择最适合Wordpress(aws问题,其他模式无法进行高级缓存设置),选择不缓存任何内容,缓存行为先保持默认,在高级缓存设置,编辑我指定的标头,设置两个新项目XForwardedProtoXForwardedFor。其他保持不变。 此时,把Ghost后台域名改为自己的网站域名,在config。production。json中把server修改服务器地址为http:your。domain。com。先设置为http访问,直接设置为https格式,会失败。cdoptbitnamighostsudovimconfig。production。jsonconfig。production。jsonurl:http:your。domain。com, 配置完后,重启Ghostsudooptbitnamictlscript。shrestartghost 设置ssl:编辑Apache配置,传递在CDN中设置的标头。sudovioptbitnamiapache2confhttpd。conf 在如下位置添加RequestHeadersetXForwardedProtohttpsIfModuleheadersmoduleAvoidpassingHTTPPROXYenvironmenttoCGIsonthisorbackendserverswhichhavelingeringhttpoxydefects。ProxyrequestheaderisundefinedbytheIETF,notlistRequestHeaderunsetProxyearlyRequestHeadersetXForwardedProtohttpsIfModule 配置完后,重启Ghostsudooptbitnamictlscript。shrestartghostsudooptbitnamictlscript。shrestartapache设置自定义域名。在lightsail后台CDN配置选择自定义域名,如果没有ssl证书,可以直接生成新的ssl证书,域名所有权验证成功后,启用自定义域名。并使用CNAME配置自定义域名与CDN默认域名关联。CDN同步成功后,可通过默认域和自定义域访问站点内容。在config。production。json中把10中配置的url修改为https格式,以确保Member、Subscribe等功能正常使用。cdoptbitnamighostsudovimconfig。production。jsonconfig。production。jsonurl:https:your。domain。com, 配置完后,重启Ghostsudooptbitnamictlscript。shrestartghostlightsail提供的Ghost镜像版本为4。44。0,现在Ghost已经升级到5。0,如需体验新功能,可进行系统升级。cdoptbitnamighostsudosughostcghostupdate 镜像为V4。44。0,先升级到V4。48,再升级到V5。sudosughostcghostupdatev4sudosughostcghostupdatev5 如遇。ghostcli权限不足,按如下修复sudochmod777optbitnamighostsudochownRghost:ghostoptbitnamighost。ghostclisudooptbitnamictlscript。shrestartghostsudooptbitnamictlscript。shrestartapache 如遇如下升级错误Knex:runnpminstallmysqlsaveCannotfindmodulemysqlRequirestack: 在ghost文件夹执行如下命令后,再次升级sudonpminstallmysqlforce迁移老内容到新服务器。现在后台导入备份的json格式内容备份,图片可以使用sftp上传工具上传至对应contentimages文件夹。上传时,如遇到权限问题。赋予sftp账户操作权限。cdoptbitnamighostsudochmod775contentimagessudochownsftpuser:sftpusercontentimagessudooptbitnamictlscript。shrestartghost在Ghost后台测试发布文章功能是否正常,如果遇到 Anerroroccurred。Message:EACCES:permissiondenied,openoptbitnamighost。ghostclioptbitnamighostcontentimages202209 需要赋予ghost操作权限。cdoptwwwghostsudochmod777contentimagessudochownRghost:ghostcontentimagessudooptbitnamictlscript。shrestart设置CDN缓存内容。在CDN设置目录和文件覆盖中,添加要缓存的文件和路径,并删除wpincludes和wpcontent。一般地,可以缓存以下静态资源。 cssjsjpgjpeggificopngbmppictcsvdocpdfplsppttiftiffepsejsswfmidimidttfeotwoffotfsvgsvgzwebpdocxxlsxxlspptxpsclassjar 至此,在亚马逊lightsail上部署Ghost完成。