Namestitev Microweberja na Ubuntu 16.04
Uporaba drugega sistema? Microweber je odprtokodna povleci in spusti CMS in spletna trgovina. Izvorna koda Microweber gostuje na GitHubu. Ta vodnik vam bo pokazal
Taiga je brezplačna odprtokodna aplikacija za vodenje projektov. Za razliko od drugih orodij za vodenje projektov, Taiga uporablja inkrementalni agilni pristop za upravljanje razvoja projekta. Taiga je zelo zmogljiva in popolnoma prilagodljiva aplikacija. Zadnja stran Taige je napisana v Pythonu z uporabo ogrodja Django. Frontend je napisan v JavaScriptu z uporabo okvirjev CoffeeScript in AngularJS. Taiga vključuje funkcije, kot so sodelovanje pri projektih, tabla Kanban, sledenje napakam, poročanje, sledenje časa, zaostanki, wiki in še več.
V tej vadnici bomo uporabili taiga.example.com
ime domene, ki je usmerjeno na strežnik. Zamenjajte vse pojavitve taiga.example.com
z vašim dejanskim imenom domene.
Posodobite svoj osnovni sistem z uporabo priročnika Kako posodobiti Ubuntu 16.04 . Ko je vaš sistem posodobljen, nadaljujte z namestitvijo PostgreSQL.
PostgreSQL je objektno-relacijski sistem baz podatkov, znan po svoji stabilnosti in hitrosti. Taiga uporablja PostgreSQL za shranjevanje svoje baze podatkov. Dodajte repozitorij PostgreSQL v sistem.
echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
Uvozite podpisni ključ GPG in posodobite sezname paketov.
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
Namestite strežnik baze podatkov PostgreSQL.
sudo apt -y install postgresql
Zaženite strežnik PostgreSQL in omogočite, da se samodejno zažene ob zagonu.
sudo systemctl start postgresql
sudo systemctl enable postgresql
Spremenite geslo za privzetega uporabnika PostgreSQL.
sudo passwd postgres
Prijavite se kot uporabnik PostgreSQL.
sudo su - postgres
Ustvarite novega uporabnika PostgreSQL za Taigo.
createuser taiga
PostgreSQL ponuja psql
lupino za izvajanje poizvedb v bazi podatkov. Preklopite na lupino PostgreSQL.
psql
Nastavite geslo za novoustvarjenega uporabnika za bazo podatkov Taiga.
ALTER USER taiga WITH ENCRYPTED password 'DBPassword';
Zamenjajte DBPassword
z varnim geslom. Ustvarite novo bazo podatkov za namestitev Taiga.
CREATE DATABASE taiga OWNER taiga;
Izstopite iz psql
lupine.
\q
Preklopite na sudo
uporabnika.
exit
Taiga zahteva različico Python 3.4 ali novejšo, Python 3.5 pa je vnaprej nameščen v distribuciji Ubuntu 16.04. Namestite še nekaj potrebnih paketov.
sudo apt -y install python3 python3-pip python3-dev python3-dev virtualenvwrapper
Navidezno okolje Python se uporablja za ustvarjanje izoliranega virtualnega okolja za projekt Python. Navidezno okolje vsebuje lastne namestitvene imenike in ne deli knjižnic z globalnimi in drugimi navideznimi okolji. Ko je Python 3 uspešno nameščen, bi morali imeti možnost preveriti njegovo različico.
python3 -V
Videli boste naslednje.
user@vultr:~$ python3 -V
Python 3.5.2
Nadgradnja pip
, ki je aplikacija za upravljanje odvisnosti.
sudo pip3 install --upgrade setuptools pip
Prav tako namestite nekaj orodij za gradnjo, ki bodo potrebna pozneje za prevajanje odvisnosti.
sudo apt -y install build-essential binutils-doc autoconf flex bison libjpeg-dev libfreetype6-dev zlib1g-dev libzmq3-dev libgdbm-dev libncurses5-dev automake libtool libffi-dev curl git tmux gettext
Taiga uporablja RabbitMQ za obdelavo čakalne vrste sporočil. RabbitMQ zahteva, da knjižnice Erlang delujejo. Namesti Erlang.
sudo apt -y install erlang
Dodajte skladišče RabbitMQ.
echo 'deb http://www.rabbitmq.com/debian/ stable main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list
Uvozite podpisni ključ RabbitMQ GPG.
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
Posodobite informacije o skladišču.
sudo apt update
Namestite RabbitMQ.
sudo apt -y install rabbitmq-server
Zaženite in omogočite strežnik RabbitMQ.
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
Dodajte uporabnika RabbitMQ in vhost. Prav tako zagotovite dovoljenje uporabniku prek gostitelja.
sudo rabbitmqctl add_user taiga StrongMQPassword
sudo rabbitmqctl add_vhost taiga
sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"
Ne pozabite zamenjati StrongMQPassword
z varnim geslom.
Za prevajanje sprednjega dela Taige je potrebna različica Node.js 7 ali novejša. Dodajte skladišče Node.js različice 8.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
Namestite Node.js in pwgen
pripomoček.
sudo apt install -y nodejs pwgen npm
pwgen
bo uporabljen kasneje za ustvarjanje močnega skrivnega niza. Namestite CoffeeScript, saj bo uporabljen za prevajanje datotek Taiga, napisanih v okviru CoffeeScript.
sudo npm install -g coffee-script gulp
Dodajte novega uporabnika sistema za Taigo, da zagotovite, da se procesi Taiga izvajajo kot neprivilegirani uporabnik.
sudo adduser taiga
sudo su - taiga
Opomba : Od zdaj naprej je treba vse ukaze izvajati kot neprivilegirani uporabnik, taiga
dokler vas ne pozove, da preklopite nazaj na sudo
uporabnika.
Ustvarite nov imenik za shranjevanje dnevniških datotek.
mkdir -p ~/logs
Klonirajte zaledni repozitorij Taiga iz GitHuba in preverite najnovejšo stabilno vejo.
git clone https://github.com/taigaio/taiga-back.git taiga-back
cd taiga-back
git checkout stable
Zdaj ustvarite novo virtualno okolje za Taigo s Pythonom 3.
mkvirtualenv -p /usr/bin/python3 taiga
pip3 install --upgrade setuptools
Namestite zahtevane odvisnosti Python z uporabo pip
.
pip3 install -r requirements.txt
Bazo podatkov napolnite s potrebnimi začetnimi podatki.
python3 manage.py migrate --noinput
python3 manage.py loaddata initial_user
python3 manage.py loaddata initial_project_templates
python3 manage.py compilemessages
python3 manage.py collectstatic --noinput
Zgornji ukazi bodo zapisali podatke v bazo podatkov PostgreSQL. Taiga pošilja tudi nekaj demo ali vzorčnih podatkov, ki so lahko uporabni za oceno izdelka. Če želite namestiti vzorčne podatke, zaženite naslednje.
python3 manage.py sample_data
Opomba : Namestitev vzorčnih podatkov je neobvezna in je namenjena samo oceni izdelka.
Preden nadaljujemo z ustvarjanjem konfiguracijske datoteke za backend Taiga, moramo ustvariti skrivni niz. Ta niz bo uporabljen za šifriranje podatkov seje.
Ustvari naključni niz 64 znakov.
pwgen -s -1 64
Izhod bi morali videti kot naključni niz.
(taiga) taiga@vultr:~/taiga-back$ pwgen -s -1 64
fhDfyYVJ4EH3tvAyUzmfWSeCXuf5sy5EEWrMQPaf9t3JSFrpiL6yvUEOWsFOTscP
Ustvarite novo konfiguracijsko datoteko za Taiga Backend.
nano ~/taiga-back/settings/local.py
Zapolnite datoteko z naslednjo kodo.
from .common import *
MEDIA_URL = "https://taiga.example.com/media/"
STATIC_URL = "https://taiga.example.com/static/"
SITES["front"]["scheme"] = "https"
SITES["front"]["domain"] = "taiga.example.com"
SECRET_KEY = "Generated_Secret_Key"
DEBUG = False
PUBLIC_REGISTER_ENABLED = True
DEFAULT_FROM_EMAIL = "[email protected]"
SERVER_EMAIL = DEFAULT_FROM_EMAIL
#CELERY_ENABLED = True
EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:StrongMQPassword@localhost:5672/taiga"}
# Uncomment and populate with proper connection parameters
# for enable email sending. EMAIL_HOST_USER should end by @domain.tld
#EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
#EMAIL_USE_TLS = False
#EMAIL_HOST = "mail.example.com"
#EMAIL_HOST_USER = "[email protected]"
#EMAIL_HOST_PASSWORD = "SMTPPassword"
#EMAIL_PORT = 25
# Uncomment and populate with proper connection parameters
# for enable github login/singin.
#GITHUB_API_CLIENT_ID = "yourgithubclientid"
#GITHUB_API_CLIENT_SECRET = "yourgithubclientsecret"
Make sure to replace the example domain name
with the actual one in the above code. Also, replace Generated_Secret_Key
with the actual secret key and StrongMQPassword
with the actual password for the Taiga message queue user. If you have an SMTP server ready and you wish to use email sending features immediately, you can uncomment the email options and set the appropriate value. If you do not have a mail server ready, you can skip setting up the email feature for now and set it later in this configuration file.
If you wish to enable GitHub login, create an application in GitHub and provide the API client ID and client secret.
To immediately check if the Taiga backend can be started, run the built-in Django server.
workon taiga
python manage.py runserver
You will see the following output if the server has started successfully.
(taiga) taiga@vultr:~/taiga-back$ workon taiga
(taiga) taiga@vultr:~/taiga-back$ python manage.py runserver
Trying import local.py settings...
Trying import local.py settings...
Performing system checks...
System check identified no issues (0 silenced).
October 28, 2017 - 10:29:38
Django version 1.10.6, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
To verify if the API can be accessed, open another terminal session and run the following.
curl http://127.0.0.1:8000/api/v1/
You will see similar output returned by the API call.
user@vultr:~$ curl http://127.0.0.1:8000/api/v1/
{"webhooks": "http://127.0.0.1:8000/api/v1/webhooks", "invitations": "http://127.0.0.1:8000/api/v1/invitations", "severities": "http://127.0.0.1:8000/api/v1/severities", "memberships": "http://127.0.0.1:8000/api/v1/memberships", "user-storage": "http://127.0.0.1:8000/api/v1/user-storage", "epics/(?P<resource_id>\\d+)/voters": "http://127.0.0.1:8000/api/v1/epics/(?P<resource_id>\\d+)/voters", "wiki": "http://127.0.0.1:8000/api/v1/wiki", "priorities": "http://127.0.0.1:8000/api/v1/priorities", "userstories/attachments": "http://127.0.0.1:8000/api/v1/userstories/attachments", "epics/(?P<epic>[^/.]+)/related_userstories": "http://127.0.0.1:8000/api/v1/epics/(?P<epic>[^/.]+)/related_userstories", "timeline/user": "http://127.0.0.1:8000/api/v1/timeline/user", "userstories/(?P<resource_id>\\d+)/voters": "http://127.0.0.1:8000/api/v1/userstories/(?P<resource_id>\\d+)/voters", "wiki-links": "http://127.0.0.1:8000/api/v1/wiki-links", "epics/attachments": "http://127.0.0.1:8000/api/v1/epics/attachments", "issues/custom-attributes-values": "http://127.0.0.1:8000/api/v1/issues/custom-attributes-values
Stop the Taiga backend server by pressing "ctrl + C
" and deactivate the virtual environment.
deactivate
The Taiga frontend is the component of Taiga which serves the Web user interface. Clone the Taiga frontend repository from Github and checkout the latest stable branch.
cd ~
git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist
cd taiga-front-dist
git checkout stable
Create a new configuration file for the Taiga frontend.
nano ~/taiga-front-dist/dist/conf.json
Populate the file.
{
"api": "https://taiga.example.com/api/v1/",
"eventsUrl": "wss://taiga.example.com/events",
"eventsMaxMissedHeartbeats": 5,
"eventsHeartbeatIntervalTime": 60000,
"eventsReconnectTryInterval": 10000,
"debug": true,
"debugInfo": false,
"defaultLanguage": "en",
"themes": ["taiga"],
"defaultTheme": "taiga",
"publicRegisterEnabled": true,
"feedbackEnabled": true,
"privacyPolicyUrl": null,
"termsOfServiceUrl": null,
"maxUploadFileSize": null,
"contribPlugins": [],
"tribeHost": null,
"importers": [],
"gravatar": true
}
Make sure to replace the example domain
with the actual domain. You can also change the default language and other parameters in the above configuration.
Apart from the frontend and backend, we also need to install Taiga events. Taiga events is a web socket server, and it enables the Taiga frontend to show real-time changes in modules such as backlog, Kanban and more. It also uses the RabbitMQ server for message processing.
Clone the Taiga events repository from Github.
cd ~
git clone https://github.com/taigaio/taiga-events.git taiga-events
cd taiga-events
Install the Node.js dependencies using npm
.
npm install
Create a new configuration file for Taiga events.
nano ~/taiga-events/config.json
Populate the file.
{
"url": "amqp://taiga:StrongMQPassword@localhost:5672/taiga",
"secret": "Generated_Secret_Key",
"webSocketServer": {
"port": 8888
}
}
Replace Generated_Secret_Key
with the actual 64 characters long secret key which you have generated previously. The secret key should be exactly the same as the key you provided in the Taiga backend configuration file. Also, update the StrongMQPassword
with the actual password for Taiga message queue user.
Circus je upravljavec procesov za aplikacije Python. Circus bomo uporabljali za vodenje zaledja Taiga in dogodkov.
Preklopite nazaj na sudo
uporabnika.
exit
Opomba : Od zdaj boste morali ukaze izvajati s pomočjo sudo
uporabnika.
sudo apt -y install circus
Ustvarite novo konfiguracijsko datoteko Circus za izvajanje zaledja Taiga.
sudo nano /etc/circus/conf.d/taiga.ini
Izpolnite datoteko.
[watcher:taiga]
working_dir = /home/taiga/taiga-back
cmd = gunicorn
args = -w 3 -t 60 --pythonpath=. -b 127.0.0.1:8001 taiga.wsgi
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/gunicorn.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 4
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/gunicorn.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 4
[env:taiga]
PATH = /home/taiga/.virtualenvs/taiga/bin:$PATH
TERM=rxvt-256color
SHELL=/bin/bash
USER=taiga
LANG=en_US.UTF-8
HOME=/home/taiga
PYTHONPATH=/home/taiga/.virtualenvs/taiga/lib/python3.5/site-packages
Ustvarite novo konfiguracijo Circus za izvajanje dogodkov Taiga.
sudo nano /etc/circus/conf.d/taiga-events.ini
Izpolnite datoteko.
[watcher:taiga-events]
working_dir = /home/taiga/taiga-events
cmd = /usr/local/bin/coffee
args = index.coffee
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/taigaevents.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 12
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/taigaevents.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 12
Znova zaženite Circus in omogočite samodejni zagon ob zagonu.
sudo systemctl restart circusd
sudo systemctl enable circusd
Preverite stanje cirkusa.
circusctl status
Če je Circus pravilno zagnal vse procese Tajge, boste videli naslednji rezultat.
user@vultr:~$ circusctl status
circusd-stats: active
plugin:flapping: active
taiga: active
taiga-events: active
Če vidite, da kateri koli proces ni aktiven, sudo chmod -R 777 /home/taiga/logs
zaženite Circus in znova zaženite. Ponovno preverite stanje procesov Circus, tokrat boste zagotovo ugotovili, da je storitev delujoča.
Zdaj imamo Taigo uspešno nameščeno in zagnano. Preden ga lahko uporabimo, moramo izpostaviti namestitev s katerim koli produkcijskim spletnim strežnikom.
Nginx bomo uporabili kot povratni proxy za serviranje aplikacije uporabnikom. Pridobili in namestili bomo tudi SSL certifikate podjetja Let's Encrypt.
Certbot je uradni odjemalec, ki izdaja potrdila za Let's Encrypt CA. Dodajte repozitorij Certbot PPA v sistem.
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
Namestite Nginx in Certbot.
sudo apt -y install nginx certbot
Opomba : Če želite pridobiti potrdila od Let's Encrypt CA, morate zagotoviti, da je domena, za katero želite generirati potrdila, usmerjena proti strežniku. Če ne, naredite potrebne spremembe v zapisih DNS vaše domene in počakajte, da se DNS razširi, preden znova pošljete zahtevo za potrdilo. Certbot preveri avtoriteto domene, preden zagotovi potrdila.
Zdaj uporabite vgrajeni spletni strežnik v Certbot, da ustvarite potrdila za vašo domeno.
sudo certbot certonly --standalone -d taiga.example.com
Ustvarjena potrdila bodo verjetno shranjena v /etc/letsencrypt/live/taiga.example.com/
imeniku. Potrdilo SSL bo ohranjeno kot fullchain.pem
, zasebni ključ pa bo shranjen kot privkey.pem
.
Potrdila Let's Encrypt potečejo v 90 dneh, zato je priporočljivo, da nastavite samodejno podaljšanje za potrdila s pomočjo opravil Cron. Cron je sistemska storitev, ki se uporablja za izvajanje občasnih opravil.
Odprite datoteko opravila cron.
sudo crontab -e
Dodajte naslednjo vrstico.
0 0 * * * /usr/bin/certbot renew --quiet
Zgornje opravilo cron se bo izvajalo vsak dan ob polnoči. Če potrdilo poteče, bo potrdila samodejno podaljšana.
Ustvari močan Diffie-Hellmanov parameter. Zagotavlja dodatno plast varnosti za izmenjavo podatkov med gostiteljem in strežnikom.
sudo openssl dhparam -out /etc/ssl/dhparam.pem 2048
Ustvarite nov blok strežnika Nginx, ki bo služil vmesniku Taiga.
sudo nano /etc/nginx/sites-available/taiga
Napolnite datoteko z naslednjim.
server {
listen 80;
server_name taiga.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name taiga.example.com;
access_log /home/taiga/logs/nginx.access.log;
error_log /home/taiga/logs/nginx.error.log;
large_client_header_buffers 4 32k;
client_max_body_size 50M;
charset utf-8;
index index.html;
# Frontend
location / {
root /home/taiga/taiga-front-dist/dist/;
try_files $uri $uri/ /index.html;
}
# Backend
location /api {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8001/api;
proxy_redirect off;
}
location /admin {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8001$request_uri;
proxy_redirect off;
}
# Static files
location /static {
alias /home/taiga/taiga-back/static;
}
# Media files
location /media {
alias /home/taiga/taiga-back/media;
}
location /events {
proxy_pass http://127.0.0.1:8888/events;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
}
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Public-Key-Pins 'pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; pin-sha256="633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q="; max-age=2592000; includeSubDomains';
ssl on;
ssl_certificate /etc/letsencrypt/live/taiga.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/taiga.example.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
ssl_session_cache shared:SSL:10m;
ssl_dhparam /etc/ssl/dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;
}
Ne pozabite spremeniti domain name
in path to the SSL certificates
. Omogočite virtualni gostitelj.
sudo ln -s /etc/nginx/sites-available/taiga /etc/nginx/sites-enabled/taiga
Zdaj lahko znova zaženete spletni strežnik Nginx in omogočite, da se samodejno zažene ob zagonu.
sudo systemctl restart nginx
sudo systemctl status nginx
Končno popravite lastništvo in dovoljenje za datoteke Taiga.
sudo chown -R taiga:taiga /home/taiga/
sudo chmod o+x /home/taiga/
Zdaj lahko dostopate do namestitve Taiga tako, da obiščete https://taiga.example.com
. Prijavite se z začetnim skrbniškim računom z uporabniškim imenom " admin
" in geslom " 123123
". Vaša namestitev je zdaj pripravljena za uporabo v proizvodnji. Začnite z ustvarjanjem novega projekta ali oceno izdelka. Če že upravljate projekt na Githubu, Jira ali Trello, lahko projekte preprosto uvozite v Taigo z uvozniki .
Uporaba drugega sistema? Microweber je odprtokodna povleci in spusti CMS in spletna trgovina. Izvorna koda Microweber gostuje na GitHubu. Ta vodnik vam bo pokazal
Uporaba drugega sistema? Sylius je sodobna platforma za e-trgovino za PHP, ki temelji na Symfony Framework. Vir Sylius je na GitHubu. Ta vodnik bo wal
Cezerin je odprtokodna progresivna spletna aplikacija za e-trgovino, zgrajena z uporabo Reacta in Node.js. V tej vadnici se boste naučili, kako namestiti Cezerin za produkcijo
Uporaba drugega sistema? Mailtrain je odprtokodna aplikacija za glasila, ki sama gostuje, zgrajena na Node.js in MySQL/MariaDB. Vir Mailtrains je na GitHubu. ti
Uporaba drugega sistema? Mailtrain je odprtokodna aplikacija za glasila, ki sama gostuje, zgrajena na Node.js in MySQL/MariaDB. Vir Mailtrains je na GitHubu. ti
Uporaba drugega sistema? osTicket je odprtokodni sistem za izdajo vstopnic za podporo strankam. Izvorna koda osTicket je javno gostovana na Githubu. V tej vadnici
Uporaba drugega sistema? Osclass je odprtokodni projekt, ki vam omogoča preprosto ustvarjanje spletnega mesta za male oglase brez kakršnega koli tehničnega znanja. Njegov vir
Uporaba drugega sistema? Apache OpenMeetings je odprtokodna aplikacija za spletne konference. Napisana je v Javi in podpira več strežnikov baz podatkov. jaz
Uporaba drugega sistema? X-Cart je izjemno prilagodljiva odprtokodna platforma za e-trgovino s številnimi funkcijami in integracijami. Izvorna koda X-Cart je hoste
Uporaba drugega sistema? Zammad je odprtokodni sistem za pomoč uporabnikom/prodaja vstopnic, zasnovan za ekipe za podporo strankam. Z Zammadom, storitev za stranke
Uporaba drugega sistema? Matomo (prej Piwik) je odprtokodna analitična platforma, odprta alternativa Google Analytics. Vir Matomo gostuje o
Uporaba drugega sistema? Akaunting je brezplačna, odprtokodna in spletna računovodska programska oprema, zasnovana za mala podjetja in samostojne delavce. Zgrajena je pametno
Uporaba drugega sistema? Alfresco Community Edition je odprtokodna različica storitev Alfresco Content Services. Napisana je v Javi in uporablja PostgreSQL t
Uporaba drugega sistema? Apache Zeppelin je spletni odprtokodni prenosnik in orodje za sodelovanje za interaktivno vnos podatkov, odkrivanje, analitiko in
Uporaba drugega sistema? InvoicePlane je brezplačna in odprtokodna aplikacija za izdajanje računov. Njegovo izvorno kodo lahko najdete v tem repozitoriju Github. Ta vodnik
Uporaba drugega sistema? Attendize je odprtokodna platforma za prodajo vstopnic in upravljanje dogodkov, ki temelji na Laravel PHP Framework. Udeležite se izvorne trske
Uporaba drugega sistema? Sentrifugo HRM je brezplačna in odprtokodna aplikacija za upravljanje človeških virov (HRM). Je bogat s funkcijami in ga je enostavno konfigurirati
Uporaba drugega sistema? Mailtrain je odprtokodna aplikacija za glasila, ki sama gostuje, zgrajena na Node.js in MySQL/MariaDB. Vir Mailtrains je na GitHubu. ti
Uporaba drugega sistema? Shopware je odprtokodna platforma za e-trgovino za spletna podjetja. Izvorna koda Shopware gostuje na Githubu. Ta vodnik bo sho
Uporaba drugega sistema? X-Cart je izjemno prilagodljiva odprtokodna platforma za e-trgovino s številnimi funkcijami in integracijami. Izvorna koda X-Cart je hoste
Umetna inteligenca ni v prihodnosti, tukaj je prav v sedanjosti. V tem blogu preberite, kako so aplikacije umetne inteligence vplivale na različne sektorje.
Ste tudi vi žrtev DDOS napadov in ste zmedeni glede načinov preprečevanja? Preberite ta članek, če želite rešiti svoja vprašanja.
Morda ste že slišali, da hekerji zaslužijo veliko denarja, a ste se kdaj vprašali, kako zaslužijo takšen denar? razpravljajmo.
Ali želite videti revolucionarne izume Googla in kako so ti izumi danes spremenili življenje vsakega človeka? Nato preberite v blogu in si oglejte Googlove izume.
Koncept samovozečih avtomobilov, ki zapeljejo na ceste s pomočjo umetne inteligence, so sanje, ki jih imamo že nekaj časa. A kljub številnim obljubam jih ni nikjer. Preberite ta blog, če želite izvedeti več…
Ker se znanost hitro razvija in prevzame veliko naših prizadevanj, se povečuje tudi tveganje, da se podvržemo nerazložljivi singularnosti. Preberite, kaj bi za nas lahko pomenila singularnost.
Metode shranjevanja podatkov so se lahko razvijale od rojstva podatkov. Ta blog pokriva razvoj shranjevanja podatkov na podlagi infografike.
Preberite blog, če želite na najpreprostejši način spoznati različne plasti v arhitekturi velikih podatkov in njihove funkcionalnosti.
V tem digitalno vodenem svetu so pametne naprave za dom postale ključni del življenja. Tukaj je nekaj neverjetnih prednosti pametnih naprav za dom o tem, kako naredijo naše življenje vredno življenja in poenostavijo.
Pred kratkim je Apple izdal macOS Catalina 10.15.4 dopolnilno posodobitev za odpravo težav, vendar se zdi, da posodobitev povzroča več težav, ki vodijo do opečenja računalnikov Mac. Preberite ta članek, če želite izvedeti več