在 Ubuntu Server 22.04 上通过 Plesk 安装 Discourse 的完整指南 - 技术宅银魂 - 科技改变生活 - 万事屋 | 生活·动漫·娱乐综合社区-银魂同好聚集地

在 Ubuntu Server 22.04 上通过 Plesk 安装 Discourse 的完整指南

引言

本文将指导您在运行 Plesk 面板的 Ubuntu Server 22.04 上,以非 Docker 模式手动安装 Discourse,并配置其使用远程 MariaDB 10.6 数据库,同时用 Memcached 替换 Redis 用于缓存。由于 Discourse 默认依赖 PostgreSQL 和 Redis,我们需要额外的配置来实现这些需求。以下是详细的安装和配置步骤。

安装 Plesk

系统准备

首先,确保您的 Ubuntu Server 22.04 系统是最新的,以避免兼容性问题。运行以下命令更新系统软件包:

sudo apt update
sudo apt upgrade -y

下载并安装 Plesk

下载 Plesk 安装程序并执行安装。获取安装脚本并运行:

sudo chmod +x plesk-installer.run
sudo ./plesk-installer.run

按照屏幕提示完成安装过程,包括选择所需的组件并设置管理员密码。安装完成后,您可以通过浏览器访问 Plesk 面板进行后续配置。

手动安装 Discourse

安装依赖项

Discourse 需要一系列依赖包,首先安装以下软件:

sudo apt install -y git ruby-full libpq-dev libcurl4-openssl-dev libxml2-dev libxslt1-dev libicu-dev
gem install bundler

获取 Discourse 源码

从 GitHub 克隆 Discourse 仓库并进入目录:

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

配置临时数据库

在安装初期,暂时使用本地 PostgreSQL 数据库(后续会连接远程 MariaDB)。编辑 config/database.yml,添加以下配置:

development:
  adapter: postgresql
  encoding: unicode
  database: discourse_dev
  host: localhost
  port: 5432
  pool: 5
  username: your_username
  password: your_password

your_usernameyour_password 替换为实际的 PostgreSQL 用户凭据。

初始化并启动 Discourse

安装 Ruby 依赖并运行数据库迁移:

bundle install --without development test
bundle exec rake db:migrate

启动 Discourse 服务器:

bundle exec rails s -b 0.0.0.0 -p 3000

此时,您可以通过访问 http://your_server_ip:3000 检查 Discourse 是否运行正常。

配置 PostgreSQL 和 mysql_fdw 以连接远程 MariaDB

安装 PostgreSQL

由于 Discourse 默认使用 PostgreSQL,我们需要安装它并确保其运行:

sudo apt install -y postgresql-14
sudo systemctl start postgresql
sudo systemctl enable postgresql

安装 MySQL 客户端库

为支持 mysql_fdw 扩展,安装 MySQL 客户端库:

sudo apt install -y libmysqlclient-dev

安装 mysql_fdw 扩展

克隆并编译 mysql_fdw 扩展:

git clone https://github.com/EnterpriseDB/mysql_fdw
cd mysql_fdw
make
sudo make install

配置 PostgreSQL 连接 MariaDB

在 PostgreSQL 中启用 mysql_fdw 扩展并创建远程服务器连接:

CREATE EXTENSION mysql_fdw;
CREATE SERVER my_mariadb_server FOREIGN DATA WRAPPER mysql_fdw
OPTIONS (host 'remote_host', port '3306', user 'username', password 'password');
CREATE USER MAPPING FOR CURRENT_USER SERVER my_mariadb_server;

remote_hostusernamepassword 替换为远程 MariaDB 的实际值。

映射远程表

导入远程 MariaDB 的表结构,或手动创建外键表。例如,创建 users 表的外键表:

CREATE FOREIGN TABLE public.users (
    id SERIAL,
    username VARCHAR(255),
    email VARCHAR(255)
) SERVER my_mariadb_server OPTIONS (table_name 'users');

确保所有 Discourse 需要的表都被正确映射到远程 MariaDB。

在 Plesk 中集成 Discourse

创建网站

在 Plesk 面板中创建一个新网站,将其文档根目录设置为 Discourse 的安装路径(例如 /var/discourse)。

配置 NGINX 代理

在 Plesk 的 NGINX 配置中添加以下内容,将请求代理到 Discourse 的端口 3000:

location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

保存配置后,Plesk 会自动重载 NGINX,使 Discourse 通过域名可访问。

用 Memcached 替换 Redis 用于缓存

安装 Memcached

安装并启动 Memcached 服务:

sudo apt install -y memcached
sudo systemctl start memcached
sudo systemctl enable memcached

配置 Discourse 使用 Memcached

安装 Dalli gem 以支持 Memcached:

gem install dalli

编辑 config/environments/production.rb,将缓存存储设置为 Memcached:

config.cache_store = :dalli_store, { url: "memcached://localhost:11211", namespace: 'discourse-' + Rails.env }

此配置将 Discourse 的缓存从 Redis 切换到 Memcached。

注意事项与挑战

数据库兼容性

Discourse 不原生支持 MariaDB,通过 mysql_fdw 访问可能存在兼容性问题,建议测试所有读写操作以确保功能正常。

性能问题

远程数据库访问可能导致延迟,需优化网络和查询性能,以确保 Discourse 的响应速度。

Redis 依赖

某些 Discourse 功能可能仍需 Redis 支持,建议检查代码并根据需要调整配置,确保缓存替换后功能不受影响。

结论

通过以上步骤,您可以在 Ubuntu Server 22.04 上通过 Plesk 面板以非 Docker 模式安装 Discourse,并配置其使用远程 MariaDB 10.6 数据库,同时用 Memcached 替换 Redis。此方案需要额外的 PostgreSQL 和 mysql_fdw 配置,但提供了一种可行的解决方案。建议在部署前进行充分测试,确保性能和稳定性。

请登录后发表评论

    没有回复内容

万事屋新帖