Forutsetninger
Installer Node.js
Installer MongoDB
Installer Wekan
Sette opp Nginx Reverse Proxy
Konfigurer Systemd-tjenesten
Innpakning
Wekan er et kanban-brett bygget med Meteor JavaScript-rammeverket. Det regnes som et åpen kildekode og selvdrevet alternativ til Trello, og gir nesten de samme funksjonene. Den lar deg lage kortbaserte "to-do"-administrasjonslister. Wekan er svært nyttig for å øke produktiviteten når du jobber i et samarbeidsmiljø. Wekan har et fullt responsivt webgrensesnitt, og det er aktivt oversatt til mange språk.
Forutsetninger
For denne opplæringen vil vi bruke wekan.example.comsom domenenavnet peker mot Vultr-forekomsten. Sørg for å erstatte alle forekomster av eksempeldomenenavnet med det faktiske.
Oppdater basissystemet ditt ved å bruke veiledningen Hvordan oppdatere CentOS 7 . Når systemet ditt har blitt oppdatert, fortsett å installere avhengighetene.
Installer Node.js
Wekan støtter kun Node.js LTS version 4.8. For å installere Node.js bruker vi nodeversjonsbehandleren. Installer nvmved å kjøre installasjonsskriptet.
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash
For å begynne å bruke umiddelbart nvm, kjør dette.
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
Hvis den nvmhar installert vellykket, bør du kunne sjekke versjonen.
[user@vultr ~]$ nvm --version
0.33.4
Installer Node.js.
nvm install v4.8
Angi standardversjonen av Node.js.
nvm use node
Hvis Node.js har installert vellykket, bør du kunne sjekke versjonen.
node -v
Du vil se denne utgangen.
[user@vultr ~]$ node -v
v4.8.4
NVM installerer kun Node.js for gjeldende bruker. For at Node.js skal være tilgjengelig globalt, kjør dette.
n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr
Node.js er nå tilgjengelig som /bin/node.
[user@vultr ~]$ sudo which node
/bin/node
Installer MongoDB
MongoDB er en gratis og åpen kildekode NoSQL-databaseserver. I motsetning til tradisjonelle databaser som bruker tabeller for å organisere dataene sine, er MongoDB dokumentorientert og bruker JSON-lignende dokumenter uten skjemaer. Wekan bruker MongoDB til å lagre dataene sine.
Wekan er kun kompatibel med MongoDB version 3.2. MongoDB er ikke tilgjengelig i standarddepotet YUM, så du må opprette en ny depotfil.
sudo nano /etc/yum.repos.d/mongodb-org-3.2.repo
Fyll filen med følgende innhold.
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
Installer MongoDB.
sudo yum install -y mongodb-org
Start MongoDB-serveren og la den starte automatisk.
sudo systemctl start mongod
sudo systemctl enable mongod
Sikring av MongoDB-forekomsten
Som standard er det ingen autentisering aktivert i en MongoDB-server. Enhver bruker som har tilgang til terminalen på serveren vil ha fulle rettigheter på MongoDB-installasjonen. For å sikre databaseserveren og begrense tilgangen til en uprivilegert bruker, må vi sette opp autentisering på serveren.
MongoDB gir et mongoskall, som brukes til å kjøre spørringer på MongoDB. Bytt til mongoskallet ved å skrive.
mongo
Opprett en ny MongoDB-bruker med root-privilegier. Du kan bruke hvilket som helst brukernavn du ønsker. Sørg for å erstatte passordet .
db.createUser(
{
user: "admin",
pwd: "StrongAdminPassword",
roles: [ { role: "root", db: "admin" } ]
}
)
Du bør se følgende utgang.
[user@vultr ~]$ mongo
MongoDB shell version: 3.2.17
connecting to: test
Welcome to the MongoDB shell.
...
2017-09-29T20:42:29.042+0000 I CONTROL [initandlisten]
> db.createUser(
... {
... user: "admin",
... pwd: "StrongAdminPassword",
... roles: [ { role: "root", db: "admin" } ]
... }
... )
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
Gå ut av MongoDB-kommandogrensesnittet til Linux-terminalen ved å trykke " Ctrl+C".
Rediger MongoDB-konfigurasjonsfilen.
sudo nano /etc/mongod.conf
Legg til følgende linje på slutten av filen.
security:
authorization: enabled
Start MongoDB på nytt slik at konfigurasjonsendringen kan tre i kraft.
sudo systemctl restart mongod
Nå som sikkerheten er aktivert, kan du teste om den fungerer ved å bytte til mongo-skallet igjen ved å bruke mongokommandoen. Denne gangen, hvis du kjører en spørring, for eksempel for show dbså vise listen over databaser, vil du se en melding som rapporterer mislykket autorisasjon. Gå ut til sudobrukeren igjen etter å ha testet innloggingen som den nye brukeren du nettopp opprettet.
Logg inn som administratorbrukeren du nettopp opprettet.
mongo -u admin -p
Oppgi passordet til brukeren for en vellykket pålogging. Opprett en ny bruker for Wekandatabasen som skal brukes til å lagre Wekan-data.
use wekan
db.createUser(
{
user: "wekan",
pwd: "StrongPassword",
roles: ["readWrite"]
}
)
Sørg for å endre StrongPasswordmed et sterkt passord. Du vil se følgende utgang.
[user@vultr ~]$ mongo -u admin -p
MongoDB shell version: 3.2.17
Enter password:
connecting to: test
...
2017-09-29T20:52:32.450+0000 I CONTROL [initandlisten]
>
> use wekan
switched to db wekan
> db.createUser(
... {
... user: "wekan",
... pwd: "StrongPassword",
... roles: ["readWrite"]
... }
... )
Successfully added user: { "user" : "wekan", "roles" : [ "readWrite" ] }
Installer Wekan
Check for the latest link to the Wekan release on Github as new releases are very frequent. Download the latest version of Wekan from Github replacing the link to the installer package.
cd ~
wget https://github.com/wekan/wekan/releases/download/v0.41/wekan-0.41.tar.gz
Extract the downloaded archive into a new directory named wekan.
mkdir wekan
tar xzvf wekan-*.tar.gz -C wekan
Install Bzip2, which is required to extract the Node.js dependencies.
sudo yum -y install bzip2
Install the Node.js dependencies.
cd wekan/bundle/programs/server && npm install
The Wekan server reads configurations from the environment variables. Run the following commands to set the configurations as environment variables.
export MONGO_URL='mongodb://wekan:StrongPassword@127.0.0.1:27017/wekan?authSource=wekan'
export ROOT_URL='http://wekan.example.com'
export MAIL_URL='smtp://user:pass@mail.example.com:25/'
export MAIL_FROM='wekan@example.com'
export PORT=4000
Make sure to replace the MongoDB password for the wekan user you have created. Also, update the mail URL according to your SMTP server settings. If you do not have mail server ready, you can always change this configuration later. Open the firewall to allow port 4000 through the firewall.
sudo firewall-cmd --zone=public --add-port=4000/tcp --permanent
sudo firewall-cmd --reload
To immediately start the application.
cd ~/wekan/bundle
node main.js
You can now access the application by going to http://wekan.example.com:4000. You will see the interface to log-in to the Wekan kanban board.
For production use, it is recommended to set up a reverse proxy to serve the application on the standard HTTP port and a systemd service to manage the application process. In this tutorial, we will use the Nginx web server as a reverse proxy, secured with a Let's Encrypt free SSL.
Setting up the Nginx Reverse Proxy
Install the Nginx web server and Certbot, which is the client application for Let's Encrypt CA.
sudo yum -y install certbot nginx
Before you can request the SSL certificates, you will need to allow port 80 and 443 through the firewall. Certbot will check the domain authority before issuing certificates.
sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
Now that we are running Wekan on a standard HTTPS port, we do not need to allow port 4000 through the firewall. Adjust the firewall to remove port 4000.
sudo firewall-cmd --zone=public --remove-port=4000/tcp --permanent
sudo firewall-cmd --reload
Note: The domain name which you are using to obtain the certificates from the Let's Encrypt CA must be pointed towards the server. The client verifies the domain authority before issuing the certificates.
Generate the SSL certificates.
sudo certbot certonly --standalone -d wekan.example.com
De genererte sertifikatene vil sannsynligvis bli lagret i /etc/letsencrypt/live/wekan.example.com/katalogen. SSL-sertifikatet vil bli lagret som fullchain.pem, og den private nøkkelen vil bli lagret som privkey.pem.
La oss kryptere sertifikater utløper om 90 dager, så det anbefales å sette opp automatisk fornyelse av sertifikatene ved hjelp av Cronjob. Cron er en systemtjeneste som brukes til å kjøre periodiske oppgaver.
Åpne cron-jobbfilen.
sudo crontab -e
Legg til følgende linje på slutten av filen.
30 5 * * * /usr/bin/certbot renew --quiet
Cron-jobben ovenfor kjøres hver dag klokken 05.30. Hvis sertifikatene skal utløpe, vil den automatisk fornye dem.
Opprett en ny virtuell vert.
sudo nano /etc/nginx/conf.d/wekan.example.com.conf
Fyll filen med følgende.
upstream wekan {
server 127.0.0.1:4000;
}
server {
listen 80;
listen [::]:80;
server_name wekan.example.com;
location / {
if ($ssl_protocol = "") {
rewrite ^ https://$server_name$request_uri? permanent;
}
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name wekan.example.com;
add_header Strict-Transport-Security "max-age=15768000";
ssl_certificate /etc/letsencrypt/live/wekan.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wekan.example.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
error_page 497 https://$host:$server_port$request_uri;
location / {
proxy_pass http://wekan;
proxy_http_version 1.1;
proxy_set_header Host $host:$server_port;
proxy_set_header Referer $http_referer;
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 https;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_send_timeout 86400;
proxy_read_timeout 86400;
}
}
Erstatt wekan.example.commed ditt faktiske domenenavn i konfigurasjonen ovenfor.
Start Nginx på nytt slik at endringene kan tre i kraft.
sudo systemctl restart nginx
Aktiver Nginx til å starte automatisk ved oppstart.
sudo systemctl enable nginx
Konfigurer Systemd-tjenesten
Opprett en ny bruker for prosessen.
sudo adduser wekan -s /usr/sbin/nologin -d /opt/wekan
Flytt nå alle filene til /opt/wekankatalogen.
sudo mv ~/wekan/* /opt/wekan/
Gi eierskap til filene til den nyopprettede brukeren.
sudo chown -R wekan:wekan /opt/wekan
Wekan tar ikke data fra noen konfigurasjonsfil. I stedet får den tilgang til den fra miljøvariabler. Vi vil opprette en ny fil for å lagre miljøvariablene. Filen som inneholder miljøvariablene sendes gjennom Systemdtjenesten.
Opprett en ny fil for å lagre miljøvariabler.
sudo nano /opt/wekan/config.env
Fyll filen med følgende innhold.
MONGO_URL='mongodb://wekan:StrongPassword@127.0.0.1:27017/wekan?authSource=wekan'
ROOT_URL='http://wekan.example.com'
MAIL_URL='smtp://user:pass@mail.example.com:25/'
MAIL_FROM='wekan@example.com'
PORT=4000
HTTP_FORWARDED_COUNT=1
Sørg for å erstatte usernameog password.
Gi eierskapet til wekanbrukeren.
sudo chown -R wekan:wekan /opt/wekan/config.env
Opprett en ny tjenestefil for Wekan systemd-tjenesten.
sudo nano /etc/systemd/system/wekan.service
Fyll filen med følgende.
[Unit]
Description=Wekan Server
After=syslog.target
After=network.target
[Service]
Type=simple
Restart=on-failure
StartLimitInterval=86400
StartLimitBurst=5
RestartSec=10
ExecStart=/bin/node /opt/wekan/bundle/main.js
EnvironmentFile=/opt/wekan/config.env
ExecReload=/bin/kill -USR1 $MAINPID
RestartSec=10
User=wekan
Group=wekan
WorkingDirectory=/opt/wekan
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=Wekan
[Install]
WantedBy=multi-user.target
Lagre filen og gå ut av redigeringsprogrammet. Nå kan du enkelt starte Wekan.
sudo systemctl start wekan
For å aktivere Wekan til å starte automatisk ved oppstart.
sudo systemctl enable wekan
For å sjekke statusen til Wekan-tjenesten.
sudo systemctl status wekan
Innpakning
Du kan nå få tilgang til Wekan-forekomsten på https://wekan.example.com. Start med å opprette en ny konto. Når du har opprettet kontoen, kan du aktivere administrativ tilgang til den nyopprettede brukeren. Logg på MongoDB-skallet som administrativ bruker.
mongo -u wekan -p --authenticationDatabase "wekan"
Velg nå wekandatabasen og oppdater objektet for å promotere brukeren til adminbrukeren.
use wekan
db.users.update({username:'admin_user'},{$set:{isAdmin:true}})
Sørg for å erstatte admin_usermed det faktiske brukernavnet til brukeren du opprettet. Fra administrasjonsgrensesnittet vil du kunne deaktivere selvregistrering og oppdatere SMTP-innstillinger.
Gratulerer, du har installert Wekan Kanban-kortet på din Vultr CentOS-forekomst.