Archive for the ‘Aplicatii web’ Category

Resetare parola admin WordPress direct din MySQL

password-pixelResetarea parolei de admin de la WordPress se poate face destul de usor folosind sintaxa SQL dupa conectarea la baza de date MySQL. Cu totii stim ca userii in wordpress sunt stocati in tabela wp_users. Asa ca, ne conectam la sql, selectam baza de date si rulam comanda de update pentru password.

mysql -u user_baza_de_date -pParola

USE baza_de_date;

SELECT ID, user_login, user_pass from wp_users;

UPDATE wp_users SET user_pass = MD5(‘noua_parola_care_vrem_sa_o_alocam’) WHERE ID=1;

Userul admin, are ID-ul 1, iar parola este hashuita in MD5, asa ca am folosit MD5(”) pentru updatarea ei.

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 Gerrit Code Review cu Apache, MySQL in Ubuntu 12.04 si integrarea cu Active Directory Windows Server 2008 R2

Gerrit.svgInstalarea Gerrit Code Review presupune urmarea catorva pasi si se efectueaza destul de rapid.

In primul rand creem baza de date, userul si ii alocam privilegii, in MySQL.

mysql -u root -p
CREATE USER ‘gerrit2’@’localhost’ IDENTIFIED BY ‘secret’;
CREATE DATABASE reviewdb;
ALTER DATABASE reviewdb charset=latin1;
GRANT ALL ON reviewdb.* TO ‘gerrit2’@’localhost’;
FLUSH PRIVILEGES;

Apoi creem un user. Eu l-am numit gerrit2.

adduser gerrit2

care odata ce a fost creat implicit are home folder in /home/gerrit2. Facem switch pe el pentru a face instalarea gerrit:

sudo -u gerrit2 -i

Descarcam ultima versiune de Gerrit2 de aici: http://code.google.com/p/gerrit/downloads/list si apoi trecem la instalare, dar inainte de aceasta trebuie sa mai instalam un pachet si anume default-jre.

sudo apt-get install default-jre

si acum instalarea propriu-zisa:

java -jar gerrit.war init -d /home/gerrit2

Unde va urma un wizzard de unde va trebui sa faceti setarile. Tot de aici se face si integrarea cu Active Directory si anume; la metoda de autentificare se trece ‘ldap’, iar la urmatorul pas sistemul ne intreaba de serverul ldap unde punem: ldap://active_directory_server. Am creat si un user in Active Directory cu care sa se faca si conectarea intrucat Wizzard-ul imi cerea un login la serverul de AD.

Dupa finalizarea instalarii, ar trebui sa porneasca, dar de cele mai multe ori nu o face, asa ca cel mai sigur este sa il pornim manual rulandca user gerrit2:

/home/gerrit2/bin/gerrit.sh start

Acum dupa ce am pornit gerrit o sa putem accesa pe portul specificat din browser (care de obicei este mentionat la pornire), dar nu o sa ne putem loga din cauza uneri erori referitoare la Cookie. Asa ca editam:

vim /home/gerrit2/etc/gerrit.config

unde adaugam:

canonicalWebUrl = http://gerrit.pitechnologies.ro:8080

chiar sub basePath si bine-nteles restartam gerrit cu comanda:

/home/gerrit2/bin/gerrit.sh restart

In mare cam acestea sunt setarile pentru ca gerrit sa ruleze.

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

Joomla 1.6+ resetarea parolei userului admin folosind sintaxa SQL

joomlaSe mai intampla sa uitam parola de la userul admin al unui site construit in CMS-ul Joomla. Astfel, asa cum am mai zis eu phpmyadmin=EVIL, resetarea este cel mai bine sa se faca folosind sintaxa SQL.

Pentru ca lucrurile sa mearga 100% safe, in prima faza facem un backup la baza de date.

mysqldump -u user_mysql -pParola_mysql baza_de_date > baza_de_date_backup.sql

Acum ne putem conecta la serverul SQL, fie dorect cu userul root fie cu credentialele bazei de date pe care ruleaza siteul si pe care le gazim in configuration.php la Joomla.

mysql -u user_mysql -p

use baza_de_date # pentru selectarea bazei de date

show tables; #pentru a vizualiza tabelele din baza de date

Aici facem resetarea parolei ruland:

UPDATE jos_users SET password=MD5(‘noua_parola_plain_text’) WHERE usertype = „Super Administrator”;

trebuie inlocuit jos_users cu prefixul tabelului pe care tocmai l-am vazut cand am rulat „show tables;”.

HTTP to HTTPS redirect folosind Apache2 cu un server de reverse proxy in fata

Cand folosim o masina virtuala cu Apache pe care rulam un site si vrem ca acesta sa ruleze folosind protocolul HTTPS impreuna cu un certificat SSL, iar in fata serverului avem un reverse proxy care este pe un alt server, atunci redirectarea si instalarea certificatului SSL trebuie sa fie pe reverse proxy, in zadar fiind pe masina virtuala.

Astfel, redirectarea HTTP to HTTPS permanenta la accesul http://srv.standdupp.ro care sa fie trimis spre https://srv.standdupp.ro trebuie sa se faca din reverse proxy astfel:

<VirtualHost *:80>

ServerName srv.standdupp.ro
# Creem aici redirectarea 80 to 443
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

</VirtualHost>

Apoi creem VirtualHost pentru HTTPS

<VirtualHost *:443>

ServerName srv.standdupp.ro
Order deny,allow
Allow from all

ProxyPreserveHost On
ProxyPass / http://ip_masina_virtuala/
ProxyPassReverse / http://ip_masina_virtuala/

</VirtualHost>

Instalare Redmine in Ubuntu 12.04 LTS folosind Apache cu Mod-Passenger si MySQL

Rularea Redmine in Ubuntu se face folosind Apache cu mod Passenger intrucat este o aplicatie care foloseste Ruby.
Pentru instalare in Ubuntu 12.04 se urmeaza pasii urmatori:

Instalarea Apache, Mod_passenger si MySQL, care bine-nteles ca va instala si Ruby si toate celalate dependinte de care Redmine mai are nevoie:

sudo apt-get install apache2 libapache2-mod-passenger
sudo apt-get install mysql-server mysql-client

Aici se defineste o parola pentru userul root de la MySQL de cae vom avea nevoie mai tarziu la crearea bazei de date si a userului cu care va rula Redmine. Nu este recomandat sa folosim userul root pentru rularea bazei de date Redmine.

Instalarea pachetului Redmine:

sudo apt-get install redmine redmine-mysql

In Wizzardul deschis, alegem Yes, MySQL si definim apoi parola de la userul root al MySQL pentru ca sistemul sa se poata conecta si sa poata crea un user dedicat in MySQL pentru Redmine pentru care ne va cere si o parola.

Acum editam /etc/apache2/mods-available/passenger.conf pentru a adauga linia care defineste userul cu care va rula Redmine: PassengerDefaultUser www-data


PassengerDefaultUser www-data
PassengerRoot /usr
PassengerRuby /usr/bin/ruby

Acum creem un symlink ca sa aiba si el fisierele in /var/www/redmine:

sudo ln -s /usr/share/redmine/public /var/www/redmine

Pentru teste eu am folosit VirtualHost-ul default, asa ca am mai adaugat un


RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on

Acum ca instalarea a fost dusa la bun sfarsit se poate accesa redmine din browser:

http://hostname/redmine

iar conectarea la admin se face cu userul admin si parola definita in Wizzard.

Fisierul in care este declarata conexiunea la baza de date este: /etc/redmine/default/database.yml in cazul in care la un moment dat se face backup sau se modifica parola userului MySQL.

Pentru o instalare mai complexa se poate urma tutorialul: http://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_in_Ubuntu

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