ProCourse 安装程序

本插件旨在让您无需登录服务器即可轻松安装新插件。它会在 /admin/plugins/procourse-installer 下添加一个界面,外观如下:

在此界面中,您可以输入插件 Git 仓库的 URL(带或不带 .git 后缀),然后点击“安装插件”。请等待几分钟(约 5 分钟)让安装完成,之后即可正常使用。

若要查看通过安装器安装的所有插件或移除某个插件,只需前往“已安装插件”页面。


几点说明:

  • 这些插件在 appweb_only 重建或引导后仍会保留

  • 目前尚未在多站点实例上进行测试,在这些场景下很可能会失败,因为插件需要访问应用程序的 /plugins 目录才能正常运行。

  • 安装的插件显示在 /admin/plugins 下。

  • 您可以像往常一样从 /admin/upgrade 升级这些插件。

  • 在开发过程中,我们发现移除插件中的翻译时可能存在一个潜在错误。如果用户访问使用了该翻译的页面,可能会导致网站显示错误。即使您使用 admin/upgrade 升级特定插件且该插件已移除某个翻译,此问题似乎仍会发生。我们目前正在寻找解决方案。


要求:

  • 您必须运行受支持的 Docker 安装

  • 必须已安装 Docker Manager 插件

  • 需要访问 /admin/upgrade


仓库地址如下:

43 个赞

Wow! That’s quite an accomplishment! I thought it couldn’t be done. Nice work, @joebuhlig!

EDIT: Here’s a question. If you do a rebuild at the command-line, are the procourse-installer plugins upgraded?

11 个赞

Yes – plugins should get upgraded upon bootstrap.

7 个赞

Just wow!
Nice work!

2 个赞

IMO, this deserves to be in core.

11 个赞

So, would it be worth removing my existing plugins from the app.yml file and moving them to this installer?

1 个赞

I have to admit that I’m conflicted on this one. It would really cool to be in core but if it’s in core, installing plugins will only work on Docker installs and non-multisite installs. That would cause problems for a quite a lot of instances.

Technically, it doesn’t matter. They end up being installed in exactly the same way. This just makes it easier to do.

8 个赞

I assume the challenges associated with getting it to work with multisite are far more complex then getting to set up multisite (which none of my clients have deployed) and I’m saying that from managing over 2 dozen active discourse installations.

It should be easier to include this in the standard app.yml on bootstrap for the standalone installs and not including the same in a multisite/multi container/HA setup.

It could always be part of core (with a big warning label that says “only works with docker”) but leave the current install method available as well.

Even better if there’s a way to detect a compatible installation and hide or show itself as necessary.

5 个赞

The main challenge is precompiling assets and such. We’re effectively adding the repo to the /plugins and then running an docker manager upgrade on that specific plugin. That handles the magic side of it.

But in a multisite, you run into issues because you don’t want one instance to be able to make edits for all instances in the multisite.

6 个赞

How i can uninstall a plugin using ssh? Because i installed Moderator Extension and now I cant put it anymore online, Error 502

Assuming you can’t get to the admin panel:

  1. SSH into the server.
  2. cd /var/discourse
  3. ./launcher enter app
  4. vim /shared/tmp/procourse-installer/plugins.txt
  5. Remove the offending plugin from the file.
  6. exit
  7. ./launcher rebuild app
4 个赞

Cant up online :cry:

Looks like your container isn’t running. Try this ./launcher start app

3 个赞

Thank You, my error 502 now are resolved. :smiley:

2 个赞

I think the installer is working fine but I saw this in my error log, not sure if it’s anything but thought I’d might as well bring it up:

NameError (uninitialized class variable @@install_state in ProcourseInstaller::InstallController)
/var/www/discourse/plugins/procourse-installer/app/controllers/procourse_installer/install_controller.rb:4:in `status'
2 个赞

Interesting. Do you have any guesses about what you were doing when that error came to be?

1 个赞

Some 20 or so days ago, I installed this Procourse plugin, and another plugin (I forgot which one was it) thru this plugins interface.
After a few days, I found that many times (say once every few days) my website went dead slow. On those moments, even safe mode opening went equally slow. And after 20-30 minutes I found that the speed of my site became normal.

Although I have not got necessary skills to diagnose the logs, but since the logs’ (or was it sidekiq?) warning section contained ‘procourse’ so many times, I thought it is somehow related to this plugin installed inside/thru procourse plugin. So I uninstalled that plugin from procourse interface.

But yesterday it again (almost) crashed.
I checked and again found the word ‘procourse’ written in many many warnings in logs.

So today I decided and uninstalled procourse too.

Now my fingers are strongly crossed.

Can you share the backtrace of one of those errors? That would help us narrow down where it’s coming from.

1 个赞

Since I have Uninstalled the plugin for the time being. I can have the logs sent only when next occurrence occurs.

(I don’t know if logs are kept for 2-3 days or not, if they are, then I can try).

Thanks.