Guida dettagliata all'installazione + pannello di controllo | Guida super dettagliata all'installazione di discourse+ pannello di controllo

Sono un principiante nella creazione di siti web e, per hobby, voglio creare una community di scambio tecnico. Sto per creare un discourse e condividere questo tutorial, sperando che sia utile per coloro che hanno bisogno di installare discourse, evitando errori. Ci sono pochi tutorial in cinese per discourse, e alcuni sono obsoleti. Ho passato diversi giorni a fare ricerche, affidandomi solo a software di traduzione.

Cosa serve per creare il proprio discourse:

Un server cloud leggero di Alibaba Cloud a Hong Kong. Scaricare plugin da GitHub su server in Cina è lento come una lumaca, quindi consiglio un server cloud leggero di Alibaba Cloud a Hong Kong o un altro server leggero. I server leggeri sono più economici e adatti ai principianti. La configurazione richiede più di 2 GB di RAM, altrimenti l’installazione non sarà possibile. Se è necessario installare su un server in Cina, è possibile utilizzare un server a Hong Kong con pagamento a consumo, quindi creare un’immagine dalla piattaforma e clonarla sul server in Cina. Questo farà risparmiare tempo evitando errori.

Un dominio breve e facile da ricordare, risolto all’IP del server. Si consigliano i domini .com e .net. Altri domini mancano di riconoscibilità. È possibile cercare domini su Ricerca di domini in blocco e utilizzare la ricerca per regole per trovarne di brevi.

Sistema: Ubuntu 20.04, abbastanza comune.

Dopo aver attivato un nuovo server, aprire prima tutte le porte del firewall (dopo aver completato il debug, chiudere le porte non necessarie in base alle esigenze, per evitare attacchi hacker). Impostare la password di root nel pannello di controllo, quindi connettersi direttamente al server tramite SSH dal browser o scaricare un software SSH come XTerminal.

Quindi, incolla i seguenti tre comandi e premi Invio per eseguirli. Quando ci sono opzioni, premi “yes” per aggiornare le sorgenti di sistema e installare il software git.

apt update
apt upgrade -y
apt install git

Quindi, incolla i seguenti tre comandi e premi Invio per eseguirli come amministratore. Questo passaggio sudo -s se non eseguito attentamente, potrebbe causare messaggi di errore di creazione fallita durante l’installazione, portando al fallimento dell’installazione, a causa della mancanza di permessi.

sudo -s
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers

Dopo aver scaricato, esegui la procedura guidata di installazione

./discourse-setup

Quindi, in base alle istruzioni, inserisci il dominio da associare. La prima installazione richiede molto tempo. Si consiglia di inserire dati casuali per tutto tranne il dominio principale, e poi ricostruire dopo che l’installazione è andata a buon fine. Se non capisci qualcosa, puoi usare uno screenshot e tradurlo con la funzione immagini di WeChat. Per le email, puoi usare Servizio email di Alibaba Cloud.

Ci sarà un messaggio che chiede se continuare l’installazione o annullare premendo Ctrl+C. Si consiglia di continuare l’installazione.

Dopo il completamento dell’installazione, visita il dominio associato. Se viene visualizzata la pagina di registrazione, significa che discourse è stato installato correttamente.

Quindi, installa pannello linux. Questo passaggio serve principalmente per installare altri programmi per siti web e per facilitare la gestione “a prova di stupido” per i principianti. Confrontando, questo pannello è molto più semplice di Baota, più pulito, senza troppa pubblicità, e l’installazione richiede solo pochi secondi, a differenza di Baota che richiede una lunga compilazione dell’ambiente.

Esegui il seguente script:

curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh

Durante l’installazione, verrà rilevato che docker è già installato, quindi verrà visualizzato il login al backend.

Segui le istruzioni, trova il backend e accedi. Nella gestione dei container, vedrai “app”, che è discourse. Puoi avviarlo o fermarlo qui.

Quindi, entra nei file e modifica app.yml. Le parti principali da modificare sono commentate in cinese.

## this is the all-in-one, standalone Discourse Docker container template
##
## After making changes to this file, you MUST rebuild
## /var/discourse/launcher rebuild app
##
## BE *VERY* CAREFUL WHEN EDITING!
## YAML FILES ARE SUPER SUPER SENSITIVE TO MISTAKES IN WHITESPACE OR ALIGNMENT!
## visit http://www.yamllint.com/ to validate this file as needed

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Uncomment the next line to enable the IPv6 listener
  #- "templates/web.ipv6.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## Uncomment these two lines if you wish to add Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
  - "80:80"   # http
  - "443:443" # https

params:
  db_default_text_search_config: "pg_catalog.english"

  ## Set db_shared_buffers to a max of 25% of the total memory.
  ## will be set automatically by bootstrap based on detected RAM, or you can override
  db_shared_buffers: "128MB"
  ## Modifica la dimensione massima di caricamento degli allegati
  upload_size: 300m
  ## can improve sorting performance, but adds memory usage per-connection
  #db_work_mem: "40MB"

  ## Which Git revision should this container use? (default: tests-passed)
  #version: tests-passed

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  DISCOURSE_DEFAULT_LOCALE: zh_CN

  ## How many concurrent web requests are supported? Depends on memory and CPU cores.
  ## will be set automatically by bootstrap based on detected CPUs, or you can override
  UNICORN_WORKERS: 2

  ## TODO: The domain name this Discourse instance will respond to
  ## Required. Discourse will not work with a bare IP number.
  ## Modifica il dominio principale
  DISCOURSE_HOSTNAME: bbs.izdh.net

  ## Uncomment if you want the container to be started with the same
  ## hostname (-h option) as specified above (default "$hostname-$config")
  #DOCKER_USE_HOSTNAME: true

  ## TODO: List of comma delimited emails that will be made admin and developer
  ## on initial signup example 'user1@example.com,user2@example.com'
  ## Modifica l'email dell'amministratore
  DISCOURSE_DEVELOPER_EMAILS: 'xxxx@gmail.com'

  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  # SMTP ADDRESS, username, and password are required
  # WARNING the char '#' in SMTP password can cause problems!
  ## Modifica il server di posta SMTP
  DISCOURSE_SMTP_ADDRESS: smtpdm.aliyun.com
  ## Modifica la porta SMTP
  DISCOURSE_SMTP_PORT: 80
  ## Modifica l'account email di invio automatico
  DISCOURSE_SMTP_USER_NAME: xxxx@xxx.net
  ## Modifica la password dell'email di invio
  DISCOURSE_SMTP_PASSWORD: "dj6bCRxoHt25NcD6"
  #DISCOURSE_SMTP_ENABLE_START_TLS: true           # (optional, default true)
  DISCOURSE_SMTP_DOMAIN: smtpdm.aliyun.com
  ## Modifica l'account email di invio automatico
  DISCOURSE_NOTIFICATION_EMAIL: xxxx@xxx.net
  DISCOURSE_SMTP_ENABLE_START_TLS: false
  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
  LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

  ## The http or https CDN address for this Discourse instance (configured to pull)
  ## see https://meta.discourse.org/t/14857 for details
  #DISCOURSE_CDN_URL: https://discourse-cdn.example.com

  ## The maxmind geolocation IP address key for IP address lookup
  ## see https://meta.discourse.org/t/-/137387/23 for details
  #DISCOURSE_MAXMIND_LICENSE_KEY: 1234567890123456

## The Docker container is stateless; all data is stored in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

## Plugins go here
## see https://meta.discourse.org/t/19157 for details
## Installa 2 plugin
hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/discourse/discourse-solved
          - git clone https://github.com/discourse/discourse-reactions

## Any custom commands to run after building
run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec: echo "End of custom commands"

Dopo aver modificato e salvato, torna al terminale, usa il comando o ferma il container dal backend, quindi ricostruisci. Tuttavia, sembra che se non installi questo pannello, non è necessario fermare il container. Ricostruire senza fermare il container dopo aver installato questo pannello causerà un errore.

./launcher stop app
./launcher bootstrap app

Attendi il completamento della ricostruzione, quindi esegui il comando di avvio del container.

./launcher start app

Accedi a discourse. Ti verrà richiesto di inviare un’email per l’attivazione. Se non la ricevi, puoi usare il seguente comando per creare un account amministratore e saltare direttamente il passaggio. Quindi, imposta la lingua su cinese nelle impostazioni a sinistra. C’è anche un posto dove testare l’invio di email, che ti mostrerà il motivo dell’errore. Puoi riprovare più volte finché non riesci.

./launcher enter app
rake admin:create

Se hai bisogno di creare altri siti web, fai riferimento al tutorial ufficiale. È abbastanza semplice, quindi non lo spiegherò in dettaglio. Puoi anche creare un nuovo ambiente nel sito web, modificare i permessi del sito web in 777, e quindi installare vari programmi.

Il problema principale risolto è che è possibile eseguire più siti web su un unico server, risparmiando sui costi del server e rendendolo più adatto ai principianti.

Successivamente, ho riscontrato un problema durante il test dell’invio di email:

Queste impostazioni del container, modificate in app.yml, non sembrano avere effetto dopo la ricostruzione. È necessario modificarle nelle variabili d’ambiente del container. Tuttavia, ci vogliono solo 5-6 secondi per avere effetto. Non è ancora chiaro se influenzi l’installazione dei plugin.

La coesistenza con altri siti web sembra richiedere la creazione preliminare di un proxy inverso, quindi la modifica della porta predefinita del container 443 in una porta come 10443, e quindi la configurazione del certificato per poter accedere normalmente.

Proxy inverso

Configurazione del certificato

2 Mi Piace

In realtà, discourse_docker può essere clonato in qualsiasi cartella, verrà comunque installato automaticamente in /var/discourse…

In truth, the location to which one clones the discourse_docker repository is immaterial, as it will invariably be installed automatically to the /var/discourse directory…

In teoria è improbabile. La procedura corretta è modificare il file app.yml e quindi ricostruire l’applicazione.

In theory, it seems rather improbable. The proper procedure would be to modify the app.yml file and subsequently rebuild the application.

1 Mi Piace

:sweat_smile: Ma modificare il file di configurazione si è rivelato infruttuoso, poiché la ricostruzione non ha avuto effetto. Tuttavia, modificare le variabili d’ambiente del container ha funzionato a meraviglia in pochi secondi, risparmiandomi la fatica di ricostruire. L’impatto sui plugin rimane incerto per il momento.

In precedenza, avevo trascurato di inserire ‘sudo -s’, il che ha comportato una raffica di messaggi di errore. Ero completamente sconcertato riguardo alla fonte del problema.

Dica, compare, saprebbe per caso come un nome utente cinese potrebbe utilizzare l’API? L’header, vede, non deve contenere caratteri cinesi.

Ah, c’è questo problema? Condividi i log.

Ah, dico, è davvero questo il problema? Forse potresti condividere con me le voci di registro.

Lo straniero ha detto che è possibile, ma non importa come ci ho provato, non ci sono riuscito… :sweat_smile:

Se fattibile, forse potremmo provare con questo. Chi lo sa che codifica ha utilizzato la tua richiesta.

Se fattibile, forse potremmo provare con questo. Chi lo sa che codifica ha utilizzato la tua richiesta.

1 Mi Piace

È incredibile trovare un post in cinese in questo forum! :sob:

Potrei chiedere, caro autore del thread, se fossi disposto a condividere le tue esperienze nello sviluppo di forum? I tuoi spunti sarebbero molto apprezzati.

1 Mi Piace

:sweat_smile: Sono anch’io un principiante, e penso che il contenuto debba essere l’obiettivo principale, con la tecnologia come supporto. Al momento, sono piuttosto perplesso su come utilizzare Qiniu Cloud per l’archiviazione dei contenuti, e sono ugualmente incerto sui metodi più efficaci per attirare traffico sulla mia piattaforma.

Successivamente è stato scoperto un bug. L’impostazione upload_size: 300m non è stata efficace nel regolare le dimensioni degli allegati. La causa principale è rimasta sfuggente, costringendomi a rinunciare all’installazione del pannello di controllo.

Sto utilizzando Amazon S3 per le mie esigenze di archiviazione.

Tuttavia, vale la pena notare che Alibaba OSS è ora compatibile con S3. Potresti prendere in considerazione di provarlo.

In effetti, una volta che l’infrastruttura è in atto, l’attenzione si sposta sul popolarla con contenuti.

Dovrebbe essere modificato secondo il metodo da lui suggerito.

Ricordo che quando ho apportato modifiche all’epoca, ho anche modificato i parametri e rifattorizzato. Ho utilizzato Tencent Cloud e ogni rifattorizzazione richiedeva una connessione proxy. È stato un vero incubo da risolvere.

@Lhc_fl @zengyunsi C’è un modo per implementare la protezione del campo nome utente del forum? Le impostazioni personalizzate includono solo il filtro per parole sensibili e i campi utente consentiti.

Supporto per nomi utente Unicode cinesi: Discourse 支持中文用户名 - Discourse - iSharkFly

Supporto per nomi utente Unicode cinesi: Discourse supporta nomi utente cinesi - Discourse - iSharkFly

Tuttavia, cosa si intende per protezione del campo del nome utente e le modifiche al nome utente devono essere sottoposte a revisione?

Se è così, Discourse non ha una funzionalità nativa, si consiglia di considerare la creazione di un plugin.

Oppure puoi semplicemente controllare regolarmente tutti i nomi utente sul sito per vedere se ci sono problemi.

@go_ahead Inoltre, ti consiglio di porre la tua domanda in inglese o in un mix di inglese e cinese in un thread separato, in modo che ot su meta venga suddiviso in thread.

Porre domande in cinese causerà anche problemi ad alcuni amministratori che non parlano cinese, poiché non è facile per loro capire di cosa stiamo parlando.

Sebbene io comprenda la tua richiesta, permettimi di chiarire il concetto di protezione del campo del nome utente e la necessità che le modifiche al nome utente vengano sottoposte a un processo di vaglio.

Se questo è effettivamente il caso, Discourse manca di tale funzionalità nativa. Suggerirei di prendere in considerazione lo sviluppo di un plugin personalizzato per soddisfare questo requisito.

In alternativa, potresti prendere in considerazione la conduzione di revisioni periodiche di tutti i nomi utente sulla piattaforma per identificare eventuali problemi.

@go_ahead Inoltre, ti consiglio di porre la tua domanda in inglese o in una combinazione di inglese e cinese in un thread separato. Questo approccio è preferibile, poiché le discussioni fuori tema nella sezione meta sono generalmente soggette a separazione dei thread.

L’utilizzo esclusivo del cinese può rivelarsi difficile per i nostri moderatori non di lingua cinese, poiché potrebbero avere difficoltà a comprendere l’argomento della nostra discussione.

Sembra che abbia trovato questa funzionalità; credo sia questa.

1 Mi Piace

Purtroppo, il mio inglese è terribile e mi manca l’esperienza per comunicare con loro. Terrò conto di questo problema in futuro, ti ringrazio molto!

Alas, my command of the English language is woefully inadequate, and I find myself lacking in experience when it comes to communicating with them. I shall endeavour to be more mindful of this matter henceforth. I am most grateful for your guidance!

Secondo la mia comprensione, i moderatori solitamente categorizzano gli argomenti contenenti contenuti cinesi sotto il tag ‘chinese-translation’.

In generale, il problema non è particolarmente significativo e si potrebbe anche fornire un riassunto in inglese sotto il proprio post.

In realtà, non è eccessivamente problematico, poiché i moderatori possono utilizzare software di traduzione per ottenere una comprensione generale. La questione ha poca importanza.

1 Mi Piace

🇨🇳 Discourse Official Install Guide | Discourse 云平台安装 Questo contenuto è probabilmente ancora utilizzabile.

Tuttavia, noi utilizziamo server dedicati, partendo dai container Docker, quindi potremmo non aver utilizzato la configurazione relativa alla console.

La guida ufficiale all’installazione di Discourse a cui si fa riferimento nel testo cinese è probabilmente ancora applicabile. Tuttavia, vale la pena notare che la nostra implementazione utilizza server dedicati (bare metal), partendo dai container Docker. Pertanto, potremmo non aver impiegato le configurazioni relative alla console menzionate nella guida.

Questo approccio, partendo dai container Docker su server dedicati, potenzialmente diverge dal processo di installazione standard, in particolare per quanto riguarda la configurazione e la gestione della console. È fondamentale tenere presente questa distinzione quando si segue la guida ufficiale, poiché alcuni passaggi potrebbero dover essere adattati o omessi per adattarsi al nostro metodo di distribuzione specifico.

:sweat_smile: Si parla di API, non è possibile chiamarla in cinese

:sweat_smile: Temo che l’API non supporti l’input in lingua cinese.

Sembra che il problema possa risiedere in questo particolare pannello… Forse è meglio tornare al metodo originale ed eseguire un’installazione pulita. Sono propenso a utilizzare Qiniu Cloud per questo scopo.