在 Ubuntu 上安装 Discourse 开发环境

news2024/11/15 13:45:11

 本指南只针对 Discourse 开发环境的配置,如果你需要在生产环境中安装 Discourse ,请访问页面:Install Discourse in production with the official, supported instructions - sysadmin - Discourse Meta 中的内容。

 有关开发环境的设置英文原文,请参考:Set up a local Discourse Development Environment? - developers - Discourse Meta 页面中的内容。


本文只针对在 Ubuntu 环境下的开发进行设置,因为 Discourse 是基于 Ruby 开发的,Ruby 的开发环境在 Ubuntu 下设置最为简便,所以 Discourse 的生产环境运行也是是官方建议在 Ubuntu 下运行的,虽然我们的社区是运行在 REHL 环境下也没有问题,因为使用了 Docker 的容器,但如果你想对 Discourse 进行开发的话,建议还是使用 Ubuntu 环境。

如果你使用的是 Windows 系统的话,你需要安装 WSL 环境。WSL 是 Windows 提供的一个基于 Ubuntu 的环境,主要用于解决 Windows 下开发Linux 应用的问题。

本文章假设你还没有在 Ubuntu 环境中安装 Ruby/Rails/Postgres/Redis 环境,让我们开始开发环境的配置吧!

尽管这个开发指南是假定你使用的是 Ubuntu 开发环境,但是任何基于 Debian 发行的 Linux 系统都是可以使用的。

本开发指南在 Ubuntu 18 上验证过不需要任何其他的步骤就可以完成开发环境设置。

 基于 Ubuntu/Debian 开发环境的使用不同,你可能在对 Ubuntu/Debian 进行开发的时候需要参考下下面的信息:

 有关在 Ubuntu 20.04 及其后续版本上安装 Discourse 测试环境

 有关在 Ubuntu 低于 20.04版本上安装 Discourse 测试环境

根据我们进行测试的经验来看,Ubuntu 22 的版本中可能有无法编译和包找不到的情况,我们还只在 20.04 上完成本地开发环境的设置。

安装 Discourse 依赖

作为一般的用户,可以在控制台中运行下面的命令: this script 。上面的命令将会帮助你在本地的开发环境中快速设置 Rails。

运行的命令为:

bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)

上面的命令将会在你的本地系统中安装下面的包:

  • Git
  • rbenv
  • ruby-build
  • Ruby (stable)
  • Rails
  • PostgreSQL
  • SQLite
  • Redis
  • Bundler
  • MailHog
  • ImageMagick

如果在你的本地操作系统中已经安装了一些软件,或者你不希望安装所有的软件的话,请参考 script 中的内容,然后选择你不希望当前安装的软件。上面的安装脚本将会安装所有 Discourse 运行需要的软件,这些软件将会为 Discourse 的运行提供支持。

当你完成安装所有的 Discourse 依赖后,我们就可以对 Discourse 进行安装了。

上图显示的是在 Ubuntu 中安装的界面,整个软件安装的过程还是比较耗时的,可能需要5 分钟以上,与你使用的系统有关。

克隆(Clone)Discourse

克隆 Discourse 到 ~/discourse 文件夹中

git clone https://github.com/discourse/discourse.git ~/discourse

~ 定义的是当前的 Home 文件夹,这个意思是 Discourse 的程序将会复制到你的 home 文件夹下。

因为我们使用的是 WSL 子系统,因此我们实际上是把文件克隆到我的 D 盘下了。

设置(Setup) Database

创建一个 与你 ubuntu 系统用户名相同的用户

sudo -u postgres createuser -s "$USER"

如果你在运行上面的命令的时候提示错误:

createuser: error: could not connect to database template1: could not connect to server: No such file or directory

请参考页面:Discourse 开发环境安装 PGSQL 提示错误 2 中的内容。

启动 Discourse

切换到你的 Discourse 克隆目录中:

cd ~/discourse

安装所需要的 gems

source ~/.bashrc
bundle install

同时安装所需要的 JS 依赖

yarn install

当到这一步为止,你已经安装好所有需要的 gems 和依赖,请尝试运行下面的命令:

bundle exec rake db:create 
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

如果在运行的时候出现错误,请仓库: Discourse 开发环境安装运行 bundle exec rake db:create 错误 中的内容。

尝试运行下面的命令:

bundle exec rake autospec

你的项目应该会通过所有的测试。

这个测试非常耗时,可以不做这个的,要不然估计几个小时就出去了。

运行下面的命令来启动服务器:

bundle exec rails server

当你完成上面的安装步骤后,你应该可以通过 http://localhost:3000 访问你本地安装的 Discourse。

从 Discourse 2.5+ 开始, 针对本地的开发环境 EmberCLI 变成必须的选项了。:

如果你直接通过界面访问 3000 端口的话,会得到下面的提示界面:

在你的控制台终端中,进入 (cd ~/discourse) 文件夹,然后运行:

bin/ember-cli

你应该可以通过访问t http://localhost:4200 地址来查看你的本地 Discourse 安装。

 需要注意的是这 2 个服务器都需要同时启动,ember-cli 是通过反向代理的方式访问 3000 的。

创建一个新的 Admin 账号

在对开发环境进行登录之前,需要创建一个管理员账号,运行下面的命令进行创建:

RAILS_ENV=development bundle exec rake admin:create

请按照命令行的提示来创建这个管理员账号。

需要输入的信息为电子邮件地址和密码。

配置邮件

运行 MailHog:

mailhog

当你完成上面的所有步骤后,你的 Discourse 本地开发环境就已经配置好了,你现在就可以以管理员账号来登录 Discourse 了。

如果你想对 Discourse 开发插件的话,请参考: Developing Discourse Plugins - Part 1 - Create a basic plugin - developers - Discourse Meta 页面中的内容指南。

在 Ubuntu 上安装 Discourse 开发环境 - Discourse - OSSEZ:warning: 本指南只针对 Discourse 开发环境的配置,如果你需要在生产环境中安装 Discourse ,请访问页面:Install Discourse in production with the official, supported instructions - sysadmin - Discourse Meta 中的内容。 :information_source: 有关开发环境的设置英文原文,请参考…https://www.ossez.com/t/ubuntu-discourse/14239


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/78842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Java EE初阶] 进程调度的基本过程

纪念Java EE初阶开篇文章,不放弃,不摆烂,踏平所有障碍吧!少年!奥利给!(操作系统这方面的所有文章均不作为操作系统的专业课知识学习) 文章目录1. 进程的概念2. PCB --- 进程控制块3. 并发与并行4. 进程调度的相关属性5. 内存管理总结1. 进程的概念 进程,就是跑起来的程序,我们…

【学习笔记】《Python深度学习》第七章:高级的深度学习最佳实践

文章目录1 Keras 函数式 API1.1 函数式 API 简介1.2 多输入模型1.3 多输出模型1.4 层组成的有向无环图1.5 共享层权重1.6 将模型作为层2 使用 Keras 回调函数 和 TensorBoard 检查并监控深度学习模型2.1 训练过程中将回调函数作用于模型2.2 TensorBoard 简介&#xff1a;Tensor…

【Lilishop商城】No3-4.模块详细设计,店铺店员(店铺店员、店铺部门、店铺角色)的详细设计

仅涉及后端&#xff0c;全部目录看顶部专栏&#xff0c;代码、文档、接口路径在&#xff1a; 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑&#xff0c;其中重点包括接口类、业务类&#xff0c;具体的结合源代码…

exfat文件系统

DBR&#xff1a; DBR偏移量 字段长度&#xff08;字节&#xff09; 说明 0x40 - 0x47 8 分区的起始扇区号&#xff08;隐藏扇区数&#xff09; 0x48 - 0x4F 8 分区总扇区数 0x50 - 0x53 4 FAT表起始扇区号&#xff08;从DBR到FAT表的扇区个数&#xff09; 0x54 - 0x57 4…

【Redis】持久化操作

一、RDB(Redis Database) 1、持久化 redis一般是将数据写到内存中&#xff0c;但也可以将数据写到磁盘中&#xff0c;这个过程称之为持久化 2、什么是RDB 在指定的时间间隔内将内存中的数据集快照写入磁盘中 3、RDB是如何执行备份操作的 redis会单独创建(fork)一个子进程进行…

FPGA 20个例程篇:18.SD卡存放音频WAV播放(下)

第七章 实战项目提升&#xff0c;完善简历 18.SD卡存放音频WAV播放&#xff08;下&#xff09; 进一步地我们再结合图1的示意图来分析wav_play模块的时序逻辑设计&#xff0c;大家可以清楚地看到WM8731在Right justified和主从时钟模式下&#xff0c;是先发左声道后发右声道数…

【LeetCode】专题一 二叉树层序遍历

二叉树层序遍历 在本文中&#xff0c;我将会选取LeetCode上二叉树层序遍历的多道例题&#xff0c;并给出解答&#xff0c;通过多道题我们就可以发现&#xff0c;二叉树的层序遍历并不复杂&#xff0c;并且有着共通点。 102. 二叉树的层序遍历 给你二叉树的根节点 root &…

【Labivew】简易计算器

&#x1f6a9;write in front&#x1f6a9; &#x1f50e;大家好&#xff0c;我是謓泽&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f3c5;2021年度博客之星物联网与嵌入式开发TOP5&#xff5…

Secure CRT远程连接很快断线问题

问题描述 我们使用Secure CRT连接远程主机时可能会遇到几分钟没操作就无法操作了&#xff0c;需要断开重新连接&#xff0c;非常的麻烦&#xff0c;假如客户端或者服务端能够在快要超时的时候给对方发送一个心跳&#xff0c;得到对方响应就重置下超时时间&#xff0c;这样就能…

arm架构 --- 中断

ARM的异常 终止程序的正常执行过程而不得不去完成的一些特殊工作 中断是异常的一种&#xff0c;包括外部硬件产生的异常和芯片内部硬件产生的内部中断。 ARM有七种处理器模式&#xff0c;其中用户模式和系统模式之外的5钟处理器模式叫做异常模式&#xff0c;用户模式之外的6…

osgEarth示例分析——osgearth_terrainprofile

前言 osgearth_terrainprofile示例&#xff0c;涉及到一个新的类 TerrainProfileCalculator(地形轮廓计算器类)&#xff0c;用来计算两个点连线之间的地形数据。左下角会根据点击的起点和终点进行计算&#xff0c;并更新显示地形信息。 效果 拖动地球&#xff0c;到某一个视…

[附源码]Python计算机毕业设计SSM基于的智慧校园安防综合管理系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

软件安全测试-Web安全测试详解-XSS攻击

目录 1. XSS攻击 1.1 XSS攻击原理 1.2 XSS能做什么 1.3 XSS三种类型 1.4 XSS三种途径 1.5 XSS测试方法 1.5.1 查看代码 1.5.2 准备测试脚本 1.5.3 自动化测试XSS漏洞 1.5.4 XSS注入常用语句 1.6 XSS漏洞防范h3 1.6.1 对输入和URL参数进行过滤(白名单和黑名单) 1.6.…

tensorflow入门(一) 计算图、张量、会话的概念

1、计算图 计算图是tensorflow中最基本的一个概念&#xff0c;tensorflow中的所有计算都被转化成计算图上的节点。tensorflow的名字已经说明了它最重要的两个概念------tensor和flow。张量这个概念在数学或者物理学中可以有不同的解释&#xff0c;在tensorflow中&#xff0c;张…

基于tensorflow的深层神经网络(三)如何用tensorflow优化神经网络

1、神经网络优化算法 梯度下降算法主要用户优化单个参数的取值&#xff0c;而反向传播算法给出了一个高效的方式在所有参数上使用梯度下降算法&#xff0c;从而使神经网络模型在训练数据上的损失函数尽可能小。反向传播算法是训练神经网络的核心算法&#xff0c;它可以根据定义…

红黑树的插入过程

一棵红黑树是一种特殊的二叉查找树&#xff0c;具有以下性质&#xff1a; 每个节点要么是红色&#xff0c;要么是黑色。根节点是黑色。每个叶子节点&#xff08;NIL&#xff09;是黑色。如果一个节点是红色的&#xff0c;那么它的两个儿子都是黑色的。从任意一个节点到其每个叶…

71.qt quick-可伸展菜单-抽屉栏示例 通用QML界面(一键换肤)

在我们之前章节已经提供过了抽屉栏和菜单伸展栏: 63.qt quick-QML侧边滑动栏(不需要任何图片资源,支持自定义左右方向和大小)_诺谦的博客-CSDN博客_qml侧边栏68.qt quick-qml多级折叠下拉导航菜单 支持动态添加/卸载 支持qml/widget加载等_诺谦的博客-CSDN博客_qml下拉菜单 由…

三维家发生工商变更:注册资本减少46%,美凯龙、阿里等股东退出

近日&#xff0c;云工业软件服务商广东三维家信息科技有限公司&#xff08;下称“三维家”&#xff09;发生工商变更&#xff0c;注册资本由16.9254亿元变更为9亿元&#xff0c;同比减少46.83%。同时&#xff0c;包括红星美凯龙、阿里巴巴等多名股东退出&#xff0c;变更时间为…

01.Spring源码整体脉络介绍及源码编译——四

IOC是核心 IOC 容器加载过程【重要】&#xff1a;所有模块都依赖IOC&#xff0c;aop&#xff0c;循环依赖都依赖IOC IOC控制反转&#xff0c;控制理念&#xff0c;来解决层与层之间的耦合。DI注入实现 怎么讲Bean交给IOC容器来管理 配置类xml&#xff0c;注解 加载spring上下…

java计算机毕业设计ssm学院校友信息管理系统的设计与实现5yqhy(附源码、数据库)

java计算机毕业设计ssm学院校友信息管理系统的设计与实现5yqhy&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts…