Posts Tagged ‘Nginx’

Generarea si instalarea unui certificat SSL cu Nginx si openSSL

misc-cookiePrimul pas este crearea unui folder in care vom stoca certificatul: /etc/nginx/ssl

mkdir /etc/nginx/ssl

cd /etc/nginx/ssl

Acum creem Server Key si Certificate Signing Request pentru certificat:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/server.key -out /etc/nginx/ssl/server.crt

Aici urmeaza un wizzard pe care il vom parcurge si la care cea mai importanta linie este cea a common name-ului unde tebuie introdus domeniul pentru carte am generat certificatul.

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:NYC
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Awesome Inc
Organizational Unit Name (eg, section) []:Dept of Merriment
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:webmaster@awesomeinc.com

Acum ca am terminat cu generarea efectiva a certificatului urmeaza configurarea lui din nginx. Asadar in VirtualHost-ul siteului example.com pentru care am creat certificatul, adaugam:

# HTTPS server
server {
listen 443;
server_name example.com;

root /usr/share/nginx/www;
index index.html index.htm;

ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
}

Acum o alta problema care apare este aceea ca pagina functioneaza si cu http si cu https, iar noi vrem sa mearga doar cu https, asa ca mai adaugam un:

rewrite ^ https://$server_name$request_uri? permanent;

in bucla unde este pus „listen 80”. Ca sa imi fie mai simplu eu am facut in felul urmator; Pentru inceput am modificat listen 80 in 443 fara sa mai adaug liniile de configurare pentru portul 443, air dupa ce am restartat nginx si am vazut ca functioneaza, deasupra buclei server listen 443 am mai adaugat un server listen 80 cu conditie de redirectare 80 -> 443 astfel:

server {
listen 80;
server_name my.domain.com;
rewrite ^ https://$server_name$request_uri? permanent;
}

Restart la Nginx si totul ar trebui sa functioneze corect.

Instalare+Migrare RedMine (Ruby) cu Nginx, MySQL si Passenger ca stand-alone application server prin reverse proxy (Nginx) in Ubuntu 12.04 LTS

redmine

In Nginx, migrarea sau instalarea unui RedMine nu este atat de simpla precum in Apache cu mod_passenger. De ce nu e asa de simpla ? Nu pentru ca nu ar exista un modul passenger pentru Nginx, ci pentru ca ar presupune (re)compilarea din sursa a pachetului Nginx, ceea ce pentru mine a fost un inconvenient dat fiind faptul ca pe acel server Nginx ruleaza si mai mult decat atat serveste aplicatii php-fpm, iar la un update as putea avea probleme din cauza ca pachetele caure au fost instalate cu apt-get au fost updatate, iar nginx compilat din sursa a ramas la aceeasi versiune. Asadar, am cautat o alta metoda, poate nu cea mai simpla, dar sper ca mai buna pe termen lung. Asdar voi face instalarea RedMine, folosind un Nginx deja instalat si care ruleaza pe server, impreuna cu Passenger, nu ca modul ci ca standalone server, iar intre Nginx si Passenger voi face reverse proxy 80 to 8080. Mai precis Passenger va rula cu portul 8080, iar din VirtualHost-ul de Nginx voi face reverse spre el.

Instalarea pachetelor si a dependintelor:

apt-get install build-essential openssl libcurl4-openssl-dev libreadline6 libreadline6-dev curl mysql-server libmysqlclient-dev git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion pkg-config imagemagick libmagick-dev

Creem un grup si un user ‘redmine’ cu care vom rula apoi passenger-ul ca si standalone si il vom putea daemoniza.

groupadd redmine

useradd -s /bin/bash -d /var/sites/redmine -m -g redmine redmine

cd /var/sites/redmine

Acum urmeaza instalarea ruby si rubygems. Eu voi merge pe versiunea ruby1.9.3.

apt-get install ruby1.9.3 rubygems

Urmeaza instalarea passenger folosind package managerul pentru Ruby.

gem install passenger –version=”4.0.3″

apoi instalarea Phusion Passenger ca Standalone server:

passenger start

Descarcam Redmine versiunea 2.3 folosind SVN:

svn co http://svn.redmine.org/redmine/branches/2.3-stable /var/sites/redmine

Dupa copierea fisierelor face chown astfel ca ele sa ruleze cu userul si grupul redmine:

chown -R redmine:redmine /var/sites/redmine

Acum creem VirtualHost-ul in Nginx prin care face reverse proxy folosind portul 8080 catre Passenger si bine-nteles declaram root-ul siteului.

vim /etc/nginx/sites-available/redmine

in care adaugam:

upstream redmine {
server 127.0.0.1:8080;
}

server {
listen   80; ## listen for ipv4; this line is default and implied
#       listen   [::]:80 default ipv6only=on; ## listen for ipv6
server_name redmine.example.com;
access_log  /var/log/nginx/redmine.access.log;
error_log  /var/log/nginx/redmine.error.log;

root /var/sites/redmine/public;
index index.html index.htm;

# Make site accessible from http://localhost/

location / {
proxy_pass  http://redmine;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

si acum bine-nteles il punem pe enable:

ln -s /etc/nginx/sites-available/redmine /etc/nginx/sites-enabled/

Acum creem un user si o baza de date MySQL. In cazul meu, le-am creat si am migrat datele de pe o instanta RedMine deja existenta pe un alt server unde rula cu Apache si mod_passenger, deci aici am facut doar dump la SQL:

mysql -u root -p

mysql> CREATE DATABASE redmine;

mysql> GRANT ALL ON redmine.* TO ‘redmine’@localhost IDENTIFIED BY ‘parola’;

Acum urmeaza sa fac dump la baza de date folosind fisierul .sql descarcat de pe vechiul server si userul si baza de date create adineauri:

mysql -u redmine -pparola redmine < redmine.sql

Acum urmeaza sa declaram conexiunea la baza de date din fisierul de config, si anume database.yml

vim /var/sites/redmine/config/database.yml

Unde adaugam/trebuie sa avem continutul:

# MySQL (default setup).  Versions 4.1 and 5.0 are recommended.
#
# Get the fast C bindings:
#   gem install mysql
#   (on OS X: gem install mysql — –include=/usr/local/lib)
# And be sure to use new-style password hashing:
#   http://dev.mysql.com/doc/refman/5.0/en/old-client.html

production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: parola
encoding: utf8

Acum ca am fixat si conexiunea la baza de date, mai trebuie sa reglam cateva probleme legate de versiunile de ruby folosite, si asta prin instalarea bundlerului:

apt-get install libmagickwand-dev
gem install bundler

bundle install

Acum va trebui generat un secret_token folosind rake:

rake generate_secret_token

Si pentru ca am trecut la o versiune mai noua de RedMine va trebui sa facem un db migrate intrucat structura s-a modificat putin:

RAILS_ENV=production rake db:migrate

Dupa ce am facut db:migrate urmeaza sa restartam nginx si sa pornim passenger folosind portul 8080 in modul production. Pentru moment eu nu demonizez procesul ca vreau sa vad daca apar unele erori. De asemenea, tot cum spuneam mai sus, Passenger trebuie rulat cu userul redmine, creat adineauri, dar inainte repornim Nginx. Asadar:

/etc/init.d/nginx/restart
sudo -u redmine -i

passenger start -p 8080 -e production      #se poate demoniza procesul adaugand -d la comanda

Cum spuneam la inceput, am pornit passenger pe portul 8080, iar din Nginx facem reverse proxy spre el, 80 to 8080.

Pe parcursul instalarii am intampinat o problema si anume, aparitia erorii „Internal server error” in momentul in care incercam sa accesez un proiect. Am remediat-o instaland gem-ul mysql2 (gem install mysql2) si apoi am modificat in database.yml din mysql in mysql2. Dupa aceasta actiune am rulat comenziule de clear la cache si la sessions: rake tmp:cache:clear si rake tmp:sessions:clear

Rulare VirtualHosts ca useri separati (pool-uri separate) in Nginx cu php5-FPM si Ubuntu 12.04 LTS

nginx_logoIn tutorialul anterior am prezentat instalarea Nginx cu php5-FPM in Ubuntu 12.04 LTS. Procedura instalarii este destul de simpla, insa ceva mai complicata este rularea Virtualhost-urilor ca si useri separati, mai precis pentru fiecare user un pool in care va rula php-ul. Totusi fata de Apache, procedura este mai simpla, intrucat Nginx din start a fost gandit sa functioneze usor ca si proxy & load balancing server si sa ruleze la fel de usor php-ul ca si useri separati pentru ca dupa cum stim, este destul de outdated sa rulam toate siteurile de pe un server ca si userul www-data.

Astfel, configurarile pentru php-fpm se afla in folderul /etc/php5/fpm/pool.d. Daca ne uitam acolo avem deja creat www.conf care este atribuit sa ruleze cu userul www-data, respectiv 127.0.0.1:9000.

Daca vrem ca un alt VirtualHost sa ruleze ca si alt user afla tin alt grup, prima data trebuie sa creem userul si grupul. Voi creea grupul web si userul web_test ca si parte din grupul web:

groupadd web
useradd -s /bin/false -d /home/web_test -m -g web web_test

Acum trebuie sa creem virtualhost pentru siteul care va rula cu userul web_test.

vim /etc/nginx/sites-available/web_test

care trebuie sa arate cam asa:

server {
listen 80; ## listen for ipv4; this line is default and implied
# listen [::]:80 default ipv6only=on; ## listen for ipv6

root /home/web_test/www;
index index.html index.htm;

# Make site accessible from http://localhost/
server_name webtest.com www.web_test.com;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9001
#
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# try_files $uri =404;
# # NOTE: You should have „cgi.fix_pathinfo = 0;” in php.ini
#
# # With php5-cgi alone:
fastcgi_pass 127.0.0.1:9001;
# With php5-fpm:
#fastcgi_pass unix:/var/run/php5-fpm/web_test.sock;
fastcgi_index index.php;
include fastcgi_params;
}

# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
location ~ /\.ht {
deny all;
}
}

Acum trebuie sa creem folderul php5-fpm unde se va crea socketul pentru siteul respectiv:

mkdir -p /var/run/php5-fpm

Urmeaza sa creem pool-ul pentru siteul web_test:

vim /etc/php5/fpm/pool.d/web_test.conf

unde adaugam:

[web_test]
listen = 127.0.0.1:9001
user = web_test
group = web
;request_slowlog_timeout = 5s
;slowlog = /var/log/php-fpm/slowlog-blog.log
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 4
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 200
listen.backlog = -1
pm.status_path = /status
request_terminate_timeout = 120s
rlimit_files = 131072
rlimit_core = unlimited
catch_workers_output = yes
env[HOSTNAME] = $HOSTNAME
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

este important aici sa fie definit un port diferit fata de cel implicit, mai precis pentru fiecare VirtualHost sa existe un port separat pe care fcgi sa asculte. Cel default, dupa cum se vede ruleaza fcgi cu 127.0.0.1:9000, iar pentru acesta web_test am alocat: 9001. Portul trebuie sa fie definit atat in pool cat si in VirtualHost.

Odata finalizate configurarile trebuie restartat atat nginx cat si php5-fpm:

/etc/init.d/nginx restart && /etc/init.d/php5-fpm restart

Testarea:

O putem face fie din phpinfo, sau ruland whoami.

Pentru phpinfo: vim /home/web_test/www/info.php unde adaugam:

<?php phpinfo(); ?>

Pentru whoami: vim /home/web_test/www/whoami.php unde adaugam:

<?php
echo exec('whoami');
?>

Instalare Nginx cu php5-FPM in Ubuntu 12.04 LTS

Instalarea Nginx:

apt-get install nginx

Instalarea php5-FPM:

apt-get install php5-common php5-cli php5-fpm

Pornirea Nginx:

/etc/init.d/nginx start

Enable php-FPM:

vim /etc/nginx/sites-available/default

unde trebuie sa decomentam liniile referitoare la „location ~ \.php$ {” astfel incat sa arate asa:

location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}

La final restartam nginx si php-fpm ruland:

/etc/init.d/nginx restart
/etc/init.d/php5-fpm restart

Testarea se face cu un info.php sau ruland whoami din php.

In ubuntu 12.10 sau o distributie mai noua trebuie inlocuita linia: fastcgi_pass 127.0.0.1:9000; cu fastcgi_pass unix:/var/run/php5-fpm.sock;

Password protect pe un folder folosind Nginx

Proce dura este aproape la fel de usoara ca si pe Apache, doar ca la Nginx presupune urmarea altor pasi.
Metoda care am adoptat-o eu pentru crearea unui .htpasswd cu Nginx este urmatoarea;

In VirtualHostul Nginx adaugam conditia de autentificare cu user si parola astfel:

location / {
auth_basic „Auth Required”;
auth_basic_user_file .htpasswd;
}

Apoi creem .htpasswd unde alocam userul si parola. Aici e putin mai diferit fata de Apache, mai ales daca vrem sa NU folosim pachetul apache-utils.

touch .htpasswd
chown root:www-data .htpasswd
chmod 640 .htpasswd #Nu trebuie sa fie citibil decat de proces

Apoi adaugam userii in .htpasswd. De cate ori se ruleaza comanda, se adauga un user in fisier.

printf „User_Name:$(openssl passwd -apr1 Parola_dorita)\n” >> .htpasswd # Acest model foloseste Apache MD5 Encryption

sau

printf „User_Name:$(openssl passwd -1 Parola_dorita)\n” >> .htpasswd # Acest model foloseste MD5 encryption

Metoda aceasta se urmeaza daca dorim sa stocam fisierul .htpasswd in acelasi folder cu DocumentRoot-ul declarat in Virtualhost.
Daca dorim sa stocam .htpasswd in /etc/nginx atunci in VirtualHost, in interiorul

Server{

}

adaugam:

auth_basic „Auth Required”;
auth_basic_user_file .htpasswd;

In acest caz ar fi indicat sa stocam htpaswd-ul sub forma Nume_Virtualhost.htpasswd ca sa nu le incurcam.

Django, Nginx, uWsgi, PostgreSQL, Virtualenv, Ubuntu 12.04 LTS

Instalarea Django impreuna cu serverul Web Nginx presupune urmarea mai multor pasi si anume, in prima faza instalarea aplicatiilor pe care platforma Django va rula:

sudo apt-get install nginx uwsgi uwsgi-plugin-python python-virtualenv libpq-dev python-dev

Dupa instalarea aplicatiilor de mai sus se instaleaza serverul de baze de date PostgreSQL:

sudo apt-get install postgresql python-psycopg2

Pentru ca acesta sa poata fi folosit, trebuie sa aiba o parola definita si apoi sa se creeze baza de date:
Se face conectarea la PostgreSQL:

sudo -u postgres psql template1

Se aloca o parola userului postgres:

ALTER USER postgres with encrypted password ‘strong_password’;

Dupa ce ce au fost urmate aceste proceduri se trece la crearea unui user, baza de date si alocarea privilegiilor userului asupra bazei de date:

CREATE DATABASE djangoweb;
CREATE USER django WITH PASSWORD ‘django_user_pass’;
GRANT ALL PRIVILEGES ON DATABASE django TO djangoweb;

Acum mai trebuie sa editam fisierul: /etc/postgresql/9.1/main/pg_hba.conf unde modificam urmatoarele linii:

local all postgres peer
CU
local all postgres md5

local all all peer
CU
local all all md5

evident se pot folosi si alte metode, dar am ales-o pe aceasta cu md5.
Ca setarile sa fie active se restarteaza serverul PostgresSQL cu comanda:

/etc/init.d/postgresql restart

Testarea userului creat se poate face ruland:

psql -d django -U django

Acum urmeaza instalarea Django, care o voi face foolosind Virtualenv, acesta fiind un environment virtual care ruleaza cu un alt user fata de cel principal (root?) intrucat daca pe un server avem mai multe aplicatii sa nu fie cazul ca pentru fiecare aplicatie sa incarcam modulele de pe toate celalate aplicatii.

Astfel creem grupul si userul djangoweb, si am ales sa stochez proiectul in /var/sites/djangoweb care va fi si home directory pentru userul djangoweb.

groupadd djangoweb

useradd -s /bin/bash -d /var/sites/djangoweb -m -g djangoweb djangoweb

caruia ii putem aloca mai apoi si o parola.

Acum ca avem userul creat ne logam cu acel user ruland comanda:

sudo -u djangoweb -i

unde folosind virtualenv creem proiectul djangoweb:

virtualenv djangoweb

cd djangoweb

activam virtual env folosind comanda:

source bin/activate

si instalam django folosind pip install:

pip install django

Si bine-nteles creem proiectul pe care eu am ales sa il numesc tot djangoweb:

django-admin.py startproject djangoweb

si aici observam ca s-a creat un folder djangoweb in interiorul folderului /var/sites/djangoweb. Urmeaza acum sa facem conectarea la baza de date PorstgreSQL

Editam fisierul /var/sites/djangoweb/djangoweb/settings.py unde adaugam liniile:

import os.path
PROJECT_DIR = os.path.dirname(__file__)

si evident facem setupul la baza de date creata adineauri cu PostgreSQL:

DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.postgresql_psycopg2’, # Add ‘postgresql_psycopg2’, ‘mysql’, ‘sqlite3’ or ‘oracle’.
‘NAME’: ‘djangoweb’, # Or path to database file if using sqlite3.
‘USER’: ‘djangoweb’, # Not used with sqlite3.
‘PASSWORD’: ‘django_user_passwd’, # Not used with sqlite3.
‘HOST’: ”, # Set to empty string for localhost. Not used with sqlite3.
‘PORT’: ”, # Set to empty string for default. Not used with sqlite3.
}
}

De asemenea decomentam linia ‘django.contrib.admin’ de la INSTALLED_APPS astfel ca trebuie sa arate cam asa:

INSTALLED_APPS = (
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.sites’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
# Uncomment the next line to enable the admin:
‘django.contrib.admin’,
# Uncomment the next line to enable admin documentation:
# ‘django.contrib.admindocs’,
)

Editam apoi fisierul /var/sites/djangoweb/urls.py unde decomentam liniile:

from django.contrib import admin
admin.autodiscover()

url(r’^admin/’, include(admin.site.urls)),

Astfel ca fisierul sa arate asa:

from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns(”,
# Examples:
# url(r’^$’, ‘myproject.views.home’, name=’home’),
#url(r’^myproject/’, include(‘myproject.foo.urls’)),

# Uncomment the admin/doc line below to enable admin documentation:
# url(r’^admin/doc/’, include(‘django.contrib.admindocs.urls’)),

# Uncomment the next line to enable the admin:
url(r’^admin/’, include(admin.site.urls)),
)

Atentie la indentare ca Python tine cont de asta.

Acum urmeaza sincronizarea bazei de date unde se creeaza tabelele:

pip install psycopg2

chmod +x manage.py

python manage.py syncdb

si tot aici se creeaza userul de administrator al Django:

Creating tables …
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log

You just installed Django’s auth system, which means you don’t have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use ‘root’): admin
E-mail address: user@domeniu.tld
Password:
Password (again):
Superuser created successfully.
Installing custom SQL …
Installing indexes …
Installed 0 object(s) from 0 fixture(s)

Acum ca totul a decurs corect, putem testa Django fara sa avem serverul web functional, folosind serverul de debug, ruland comanda:
python manage.py runserver 0.0.0.0:80 #unde 0.0.0.0:8080 inseamna ca poate fi accesat de oriunde din internet pe portul 8080.
Rezultatul daca totul a decurs bine trebuie sa arate asa:

Validating models…

0 errors found
Django version 1.4, using settings ‘myproject.settings’
Development server is running at http://0.0.0.0:80/
Quit the server with CONTROL-C.

Daca este totul ok, putem configura serverul web Nginx, unde creem un VirtualHost numit Djangoweb:

vim /etc/nginx/sites-available/djangoweb

unde adaugam:

server {
server_name „”;
listen 80;

root /var/sites/djangoweb/djangoweb/djangoweb;

location /static/ {
alias /var/sites/djangoweb/djangoweb/lib/python2.7/site-packages/django/contrib/admin/static/;
}

location / {
include uwsgi_params;
client_max_body_size 256M;
uwsgi_pass unix:/var/run/uwsgi/app/djangoweb/socket;
uwsgi_send_timeout 60;
uwsgi_read_timeout 60;
uwsgi_connect_timeout 60;
}
}

Ca sa fie enable acest VirtualHost facem symlink in sites-enabled:

ln -s /etc/nginx/sites-available/djangoweb /etc/nginx/sites-enabled/

Pentru uWsgi fisierul de configurare il adaugam in /etc/uwsgi/apps-available

sudo vim /etc/uwsgi/apps-available/djangoweb

uwsgi:
uid: djangoweb
gid: djangoweb
env: DJANGO_SETTINGS_MODULE=djangoweb.settings
chdir: /var/sites/djangoweb/djangoweb/djangoweb/
pythonpath: /var/sites/djangoweb/djangoweb/djangoweb/
virtualenv: /var/sites/djangoweb/djangoweb/
module: djangoweb.wsgi:application
chmod-socket: 666
touch-reload: /var/sites/djangoweb/djangoweb/djangoweb/.uwsgi_reload
buffer-size: 32768

Ca aceasta aplicatie uWsgi sa fie enable ii creem un symlink in apps-enabled:

ln -s /etc/uwsgi/apps-available/djangoweb /etc/uwsgi/apps-enabled/

De asemenea creem si fisierul .uwsgi_reload care este apelat din uwsgi:

touch /var/sites/djangoweb/djangoweb/djangoweb/.uwsgi_reload

La final restartam Nginx, uWsgi si PostgreSQL:

sudo /etc/init.d/nginx restart
sudo /etc/init.d/uwsgi restart
sudo /etc/init.d/postgresql restart

Atentie ! Unele setari din acest tutorial este posibil sa nu se potriveasca cu ceea ce aveti pe serverul vostru. In cazul in care ceva nu functioneaza corect consultati logurile, iar pentru orice adaugari la acest tutorial va rog sa scrieti un comentariu si voi tine cont de el.

P.S. Sper ca nu v-am zapacit (tare) cu atatea directoare „djangoweb” 🙂 . Pe viitor o sa folosesc nume mai diferite 🙂

Probleme aparute pe parcursul instalarii:
1. Unele pachete lipseau si a fost nevoie sa fie instalate manual ulterior. Am mai completat in tutorial, dar e posibil ca unele sa le fi omis.
2. Probleme cu socketul uWsgi care nu putea fi accesat corect. Trebuie verificate drepturile asupra fisierelor.
3. Erori de tipul „upstream prematurely closed connection” care apareau din cauza la unele linii declarate incorect in uWsgi.
4. Problema cu incarcarea CSS-urilor pe care am rezolvat-o prin alocarea linkului spre /static din VirtualHost Nginx.
5. Erori de tipul: „current transaction is aborted commands ignored until end of transaction block django” care a aparut din cauza ca nu a fost corect sincronizata baza de date si am rezolvat prin rularea: python manage.py syncdb apoi restart la Nginx, uWsgi, PostgreSQL
6. Probleme de indentare in settings.py sau urls.py

Pe parcursul instalarii m-am consultat si cu documentatia de pe situel orifial Django: https://docs.djangoproject.com/en/dev/intro/

srv StandDuPp
Articole recente