Project for the UPV to develop an app like BlaBlaCar but only for UPV people.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'develop'

+372 -186
+2 -69
README.rst
··· 1 - UPV Car Share Project 2 - ===================== 1 + Poli Car Project 2 + ================ 3 3 4 4 Made with Python 3 and Django with :heart:. 5 5 6 6 .. image:: https://travis-ci.org/marcosgabarda/upvcarshare.svg?branch=master 7 7 :target: https://travis-ci.org/marcosgabarda/upvcarshare 8 - 9 - Install Spatialite (macOS) 10 - -------------------------- 11 - 12 - Install SpatiaLite with brew on macOS:: 13 - 14 - brew update 15 - brew install spatialite-tools 16 - brew install gdal 17 - 18 - Install Oracle client (macOS) 19 - ----------------------------- 20 - 21 - Download from `Oracle <http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html>`_ 22 - 23 - - instantclient-basic-macos.x64-12.1.0.2.0.zip 24 - - instantclient-sdk-macos.x64-12.1.0.2.0.zip 25 - 26 - Create a directory ``/usr/local/lib/oracle``:: 27 - 28 - export ORACLE_HOME=/usr/local/lib/oracle 29 - export VERSION=12.1.0.2.0 30 - export ARCH=x86_64 31 - 32 - mkdir -p $ORACLE_HOME 33 - 34 - Unpack both files to that directory, and create symlinks:: 35 - 36 - cd $ORACLE_HOME 37 - tar -xzf instantclient-basic-12.1.0.2.0-macosx-x64.zip 38 - tar -xzf instantclient-sdk-12.1.0.2.0-macosx-x64.zip 39 - mv instantclient_12_1/* $ORACLE_HOME 40 - rmdir instantclient_12_1 41 - 42 - cd /usr/local/lib/ 43 - ln -s $ORACLE_HOME/libclntsh.dylib.12.1 libclntsh.dylib.12.1 44 - ln -s $ORACLE_HOME/libclntsh.dylib.12.1 libclntsh.dylib 45 - ln -s $ORACLE_HOME/libocci.dylib.12.1 libocci.dylib.12.1 46 - ln -s $ORACLE_HOME/libnnz12.dylib libnnz12.dylib 47 - 48 - Install ``cx_Oracle`` from PIP:: 49 - 50 - env ARCHFLAGS="-arch $ARCH" pip install cx-Oracle==5.2.1 51 - 52 - Environment Variables 53 - --------------------- 54 - 55 - List of environment variables that the project needs to work in production: 56 - 57 - - ``DJANGO_ALLOWED_HOSTS="example.com"`` 58 - - ``DJANGO_SETTINGS_MODULE="config.settings.production"`` 59 - - ``DJANGO_SECRET_KEY="verylongstringwithnumbers"`` 60 - - ``DATABASE_URL="oraclegis://dbuser:dbpass@db.server.com:1521/dbname"`` 61 - 62 - Static files 63 - ------------ 64 - 65 - The default folder for Django's ``STATICFILES_DIRS`` value is ``/static/dist/``, therefore all 66 - static data have to be created by **gulp**. 67 - 68 - Run tests 69 - --------- 70 - 71 - To run the tests using Docker:: 72 - 73 - $ docker-compose -f dev.yml run app python3 manage.py test --settings=config.settings.test 74 -
+294
docs/deploy.rst
··· 1 + Despliegue en CentOS 2 + ==================== 3 + 4 + Instrucciones para la instalación de poli Car en un servidor **CentOS 7.2**. 5 + 6 + Dependencias de yum 7 + ------------------- 8 + 9 + .. code-block:: console 10 + 11 + $ yum install libjpeg-devel zlib-devel gcc python-devel libcap-devel supervisor gdal gdal-devel yum-utils 12 + 13 + Instalar Python 3 14 + ----------------- 15 + 16 + El proyecto requiere de **Python 3** para funcionar. Se puede instalar usando las fuentes, 17 + siguiendo estos pasos: 18 + 19 + .. code-block:: console 20 + 21 + $ sudo yum-builddep python 22 + $ wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz 23 + $ tar xf Python-3.5.2.tgz 24 + $ cd Python-3.5.2 25 + $ ./configure 26 + $ make 27 + $ sudo make install 28 + 29 + 30 + Instalar Node 31 + ------------- 32 + 33 + Para la gestión de los ficheros estáticos se necesita tener instalado **Node**. Para instalarlo desde 34 + el código fuente, basta seguir los siguientes pasos: 35 + 36 + .. code-block:: console 37 + 38 + $ wget https://nodejs.org/dist/v6.9.1/node-v6.9.1.tar.gz 39 + $ tar xvzf node-v6.9.1.tar.gz 40 + $ cd node-v6.9.1 41 + $ ./configure 42 + $ make 43 + $ sudo make install 44 + 45 + 46 + Instalar virtualenv 47 + -------------------- 48 + 49 + Para instalar las dependencias de Python, se recomienda usan un entorno virtual en vez de instalarlas 50 + directamente en el sistema. Para crear el entorno virtual y facilitar la gestión de este, se recomienda 51 + instalar y configurar ``virtualenvwrapper``. 52 + 53 + .. code-block:: console 54 + 55 + $ sudo pip install virtualenv virtualenvwrapper 56 + 57 + Hay que añadir lo siguiente al fichero ``.bashrc`` del usuario que se vaya a usar para instalar el proyecto, **no** 58 + en el de root. 59 + 60 + .. code-block:: bash 61 + 62 + export WORKON_HOME=$HOME/.virtualenvs 63 + source /usr/bin/virtualenvwrapper.sh 64 + 65 + Para que los cambios tengan efecto, recargamos el fichero ``.bashrc``: 66 + 67 + .. code-block:: console 68 + 69 + $ source ~/.bashrc 70 + 71 + Instalar proyecto 72 + ----------------- 73 + 74 + Para instalar el proyecto, primero creamos su entorno virtual: 75 + 76 + .. code-block:: console 77 + 78 + $ mkvirtualenv --python=/usr/local/bin/python3 carshare 79 + 80 + Luego, clonamos el código fuente del proyecto: 81 + 82 + .. code-block:: console 83 + 84 + (carshare) $ git clone git@git.upv.es:GIT_CARSHARE/carshare-project.git 85 + (carshare) $ cd carshare-project 86 + 87 + Luego, instalamos las dependencias de Python: 88 + 89 + .. code-block:: console 90 + 91 + (carshare) $ pip install -r requirements/production.txt 92 + 93 + Y por último, las dependencias de Javascript: 94 + 95 + .. code-block:: console 96 + 97 + (carshare) $ npm install 98 + 99 + 100 + Configuración del proyecto 101 + -------------------------- 102 + 103 + La configuración del proyecto se realiza mediante el uso de variables de entorno. Se pueden declarar en 104 + varios lugares, pero se recomienda crear el fichero ``.env`` en la carpeta raíz del código fuente. 105 + 106 + .. code-block:: bash 107 + 108 + # Poli Car project environment variables 109 + # ------------------------------------------------------------------------------ 110 + 111 + ORACLE_SID=ZETATEST 112 + 113 + DJANGO_SETTINGS_MODULE=config.settings.production 114 + DJANGO_ALLOWED_HOSTS=carsdes.cc.upv.es 115 + DJANGO_SECRET_KEY=someseed 116 + DATABASE_URL=oraclegis://{username}:{password}@{host}:{port}/{database} 117 + DJANGO_DEBUG=False 118 + 119 + UPV_LOGIN_DATA_USERNAME=carshare 120 + UPV_LOGIN_DATA_PASSWORD=SW2017-03:dLogin<b 121 + 122 + .. glossary:: 123 + 124 + ORACLE_SID 125 + Valor del SID de la base de datos de Oracle. 126 + 127 + DJANGO_SETTINGS_MODULE 128 + Ruta del módulo de settings que usará el proyecto. Para producción debe de estar siempre 129 + establecido ``config.settings.production`` como valor. 130 + 131 + DJANGO_ALLOWED_HOSTS 132 + Dominio desde el que se permitirán las peticiones. Si se intenta acceder con otro nombre, la 133 + aplicación responderá con un error 400. 134 + 135 + DJANGO_SECRET_KEY 136 + Semilla que se usa para guardar de forma segura las contraseñas en la base de datos. 137 + 138 + DATABASE_URL 139 + Credenciales y ruta para acceder a la base de datos. Siempre será de la siguiente forma: 140 + ``oraclegis://{username}:{password}@{host}:{port}/{database}``, donde ``{username}`` es el nombre de 141 + usuario de base de datos, ``{password}`` es la contraseña de ese usuario, ``{host}`` es la ruta del servidor, 142 + ``{port}`` es el puerto y ``{database}`` es el nombre de la base de datos. 143 + 144 + DJANGO_DEBUG 145 + Activa o desactiva el modo de depuración de la aplicación. Se usa ``True`` para activar y ``False`` para 146 + desactivar. 147 + 148 + UPV_LOGIN_DATA_USERNAME 149 + Nombre de usuario para acceder al servicio de login de la UPV. 150 + 151 + UPV_LOGIN_DATA_PASSWORD 152 + Contraseña para acceder al servicio de login de la UPV. 153 + 154 + 155 + Actualización del proyecto 156 + -------------------------- 157 + 158 + Tanto si se han hecho **cambios en el código fuente**, como si se trata de la primera vez que se instala, hay una 159 + serie de pasos que se tienen que ejecutar para asegurarse de que los cambios tienen efecto, siempre asumiendo que se 160 + está en la raíz del código fuente. 161 + 162 + Activar el entorno virtual: 163 + 164 + .. code-block:: console 165 + 166 + $ workon carshare 167 + 168 + Aplicar las migraciones de la base de datos: 169 + 170 + .. code-block:: console 171 + 172 + (carshare) $ ./manage.py migrate 173 + 174 + Compilar los ficheros estáticos: 175 + 176 + .. code-block:: console 177 + 178 + (carshare) $ npm run build 179 + 180 + Recopilar los ficheros estáticos: 181 + 182 + .. code-block:: console 183 + 184 + (carshare) $ ./manage.py collectstatic 185 + 186 + 187 + uWSGI 188 + ----- 189 + 190 + Poli Car sigue el `PEP 333 <https://www.python.org/dev/peps/pep-0333/>`_ para aplicaciones web hechas con Python, 191 + por lo que cualquier servidor de aplicaciones WSGI sería compatible con la aplicación. 192 + 193 + Sin embargo, se recomienda el uso de ``uWSGI`` como servidor de aplicaciones WSGI, que es el que se instala junto al 194 + resto de dependencias. Para configurarlo, hay que crear un fichero ``uwsgi.ini``, con el siguiente contenido, 195 + cambiando las rutas de los ficheros si fuera necesario: 196 + 197 + 198 + .. code-block:: ini 199 + 200 + [uwsgi] 201 + chdir = /home/carshare/carshare-project/upvcarshare 202 + module = config.wsgi 203 + home = /home/carshare/.virtualenvs/carshare 204 + env = DJANGO_SETTINGS_MODULE=config.settings.production 205 + master = true 206 + processes = 5 207 + socket = /home/carshare/carshare.sock 208 + chmod-socket = 666 209 + vacuum = true 210 + stats = /home/carshare/carshare_stats.sock 211 + 212 + 213 + .. note:: 214 + 215 + Asegúrate que el usuario que vaya a ejecutar nginx pueda acceder al fichero ``carshare.sock``. 216 + 217 + Supervisor 218 + ---------- 219 + 220 + Para que la gestión del proceso de uWSGI sea más sencilla, se recomienda usar ``supervisord``, que se instala 221 + con las dependencias de yum. Para ello, hay que crear el fichero ``/etc/supervisord.d/carshare.ini`` 222 + con los siguientes datos: 223 + 224 + .. code-block:: ini 225 + 226 + [program:carshare] 227 + user = carshare 228 + command = /home/carshare/.virtualenvs/carshare/bin/uwsgi --ini /home/carshare/uwsgi.ini 229 + environment = PATH="/home/carshare/.virtualenvs/carshare/bin" 230 + topsignal = HUP 231 + stderr_logfile = /var/log/carshare/carshare.log 232 + stderr_logfile_maxbytes = 50MB 233 + stderr_logfile_backups = 10 234 + loglevel = info 235 + 236 + Para cargar la nueva configuración hay que reiniciar el servicio: 237 + 238 + .. code-block:: bash 239 + 240 + $ sudo systemctl restart supervisord 241 + 242 + Y para reiniciar el servidor, cuando se requiera que se apliquen nuevos cambios: 243 + 244 + .. code-block:: bash 245 + 246 + $ sudo supervisorctl restart carshare 247 + 248 + Nginx 249 + ----- 250 + 251 + Se recomienda utilizar **Nginx** como proxy sobre **uWSGI**, y además, para servir los estáticos 252 + directamente 253 + 254 + Para configurarlo, crea el siguiente fichero ``/etc/nginx/conf.d/carshare.conf``, cambiando las rutas que 255 + sean necesarias: 256 + 257 + .. code-block:: nginx 258 + 259 + upstream carshare_app { 260 + server unix:///home/carshare/carshare.sock; 261 + } 262 + 263 + server { 264 + listen 80; 265 + client_max_body_size 0; 266 + charset utf-8; 267 + 268 + location /media { 269 + alias /home/carshare/carshare-project/upvcarshare/media; 270 + } 271 + 272 + location /static { 273 + alias /home/carshare/carshare-project/upvcarshare/public; 274 + } 275 + 276 + location / { 277 + uwsgi_pass carshare_app; 278 + uwsgi_read_timeout 600; 279 + uwsgi_param QUERY_STRING $query_string; 280 + uwsgi_param REQUEST_METHOD $request_method; 281 + uwsgi_param CONTENT_TYPE $content_type; 282 + uwsgi_param CONTENT_LENGTH $content_length; 283 + uwsgi_param REQUEST_URI $request_uri; 284 + uwsgi_param PATH_INFO $document_uri; 285 + uwsgi_param DOCUMENT_ROOT $document_root; 286 + uwsgi_param SERVER_PROTOCOL $server_protocol; 287 + uwsgi_param REMOTE_ADDR $remote_addr; 288 + uwsgi_param REMOTE_PORT $remote_port; 289 + uwsgi_param SERVER_ADDR $server_addr; 290 + uwsgi_param SERVER_PORT $server_port; 291 + uwsgi_param SERVER_NAME $server_name; 292 + uwsgi_param UWSGI_SCHEME http; 293 + } 294 + }
+4 -2
docs/index.rst
··· 3 3 You can adapt this file completely to your liking, but it should at least 4 4 contain the root `toctree` directive. 5 5 6 - Documentación de UPV Car Share Project 7 - ====================================== 6 + Documentación de Poli Car 7 + ========================= 8 8 9 9 Content: 10 10 11 11 .. toctree:: 12 12 :maxdepth: 2 13 13 14 + install 15 + deploy 14 16 15 17 Indices and tables 16 18 ==================
+72 -115
docs/install.rst
··· 1 - Installation on CentOS 2 - ====================== 3 - 4 - Instructions to install the project on a CentOS 7.2 server. 5 - 6 - Install yum dependencies 7 - ------------------------ 8 - 9 - .. code-block:: console 10 - 11 - $ yum install libjpeg-devel zlib-devel gcc python-devel libcap-devel supervisor gdal gdal-devel yum-utils 12 - 13 - Install Python 3 14 - ---------------- 15 - How to install Python 3 on CentOS from source: 16 - 17 - .. code-block:: console 1 + Instalación local 2 + ================= 18 3 19 - $ sudo yum-builddep python 20 - $ wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz 21 - $ tar xf Python-3.5.2.tgz 22 - $ cd Python-3.5.2 23 - $ ./configure 24 - $ make 25 - $ sudo make install 26 - 27 - 28 - Install Virtualenv 4 + Spatialite (macOS) 29 5 ------------------ 30 6 31 - .. code-block:: console 7 + Instalar Spatialite con brew en macOS:: 32 8 33 - $ sudo pip install virtualenv virtualenvwrapper 9 + brew update 10 + brew install spatialite-tools 11 + brew install gdal 34 12 35 - Add the following text to ``.bashrc`` file: 13 + Cliente Oracle (macOS) 14 + ---------------------- 36 15 37 - .. code-block:: bash 16 + Descargar desde `Oracle <http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html>`_ 38 17 39 - export WORKON_HOME=$HOME/.virtualenvs 40 - source /usr/bin/virtualenvwrapper.sh 18 + - instantclient-basic-macos.x64-12.1.0.2.0.zip 19 + - instantclient-sdk-macos.x64-12.1.0.2.0.zip 41 20 42 - Reload ``.bashrc``: 21 + Crear un directorio ``/usr/local/lib/oracle``:: 43 22 44 - .. code-block:: console 23 + export ORACLE_HOME=/usr/local/lib/oracle 24 + export VERSION=12.1.0.2.0 25 + export ARCH=x86_64 45 26 46 - $ source ~/.bashrc 27 + mkdir -p $ORACLE_HOME 47 28 48 - Install project 49 - --------------- 50 29 51 - .. code-block:: console 30 + Descomprimir los dos ficheros y crear los enlaces simbólicos:: 52 31 53 - $ mkvirtualenv --python=/usr/local/bin/python3 carshare 54 - (carshare) $ git clone git@git.upv.es:GIT_CARSHARE/carshare-project.git 55 - (carshare) $ cd carshare-project 56 - (carshare) $ pip install -r requirements/production.txt 32 + cd $ORACLE_HOME 33 + tar -xzf instantclient-basic-12.1.0.2.0-macosx-x64.zip 34 + tar -xzf instantclient-sdk-12.1.0.2.0-macosx-x64.zip 35 + mv instantclient_12_1/* $ORACLE_HOME 36 + rmdir instantclient_12_1 57 37 38 + cd /usr/local/lib/ 39 + ln -s $ORACLE_HOME/libclntsh.dylib.12.1 libclntsh.dylib.12.1 40 + ln -s $ORACLE_HOME/libclntsh.dylib.12.1 libclntsh.dylib 41 + ln -s $ORACLE_HOME/libocci.dylib.12.1 libocci.dylib.12.1 42 + ln -s $ORACLE_HOME/libnnz12.dylib libnnz12.dylib 58 43 59 - uWSGI 60 - ----- 61 44 62 - Create a ``uwsgi.ini`` file, with the following content: 45 + Instalar ``cx_Oracle`` desde PIP:: 63 46 64 - .. code-block:: ini 47 + env ARCHFLAGS="-arch $ARCH" pip install cx-Oracle==5.2.1 65 48 66 - [uwsgi] 67 - chdir = /home/carshare/carshare-project/upvcarshare 68 - module = config.wsgi 69 - home = /home/carshare/.virtualenvs/carshare 70 - env = DJANGO_SETTINGS_MODULE=config.settings.production 71 - master = true 72 - processes = 5 73 - socket = /home/carshare/carshare.sock 74 - chmod-socket = 666 75 - vacuum = true 76 - stats = /home/carshare/carshare_stats.sock 49 + Configuración del proyecto 50 + -------------------------- 77 51 52 + La configuración del proyecto se realiza mediante el uso de variables de entorno. Se pueden declarar en 53 + varios lugares, pero se recomienda crear el fichero ``.env`` en la carpeta raíz del código fuente. 78 54 79 - Be sure that the nginx user **can access** the ``carshare.sock`` file. 55 + .. code-block:: bash 80 56 81 - Supervisor 82 - ---------- 57 + # Poli Car project environment variables 58 + # ------------------------------------------------------------------------------ 83 59 84 - Create the following file ``/etc/supervisord.d/carshare.ini``, with the correct secret data: 60 + ORACLE_SID=ZETATEST 85 61 86 - .. code-block:: ini 62 + DJANGO_SETTINGS_MODULE=config.settings.production 63 + DJANGO_ALLOWED_HOSTS=carsdes.cc.upv.es 64 + DJANGO_SECRET_KEY=someseed 65 + DATABASE_URL=oraclegis://{username}:{password}@{host}:{port}/{database} 66 + DJANGO_DEBUG=False 87 67 88 - [program:carshare] 89 - user = carshare 90 - command = /home/carshare/.virtualenvs/carshare/bin/uwsgi --ini /home/carshare/uwsgi.ini 91 - environment = PATH="/home/carshare/.virtualenvs/carshare/bin",ORACLE_SID="ZETATEST",DJANGO_SETTINGS_MODULE="config.settings.production",DJANGO_ALLOWED_HOSTS="carsdes.cc.upv.es",DJANGO_SECRET_KEY="secret",DATABASE_URL="oraclegis://username:password@server:port/name" 92 - topsignal = HUP 93 - stderr_logfile = /var/log/carshare/carshare.log 94 - stderr_logfile_maxbytes = 50MB 95 - stderr_logfile_backups = 10 96 - loglevel = info 68 + UPV_LOGIN_DATA_USERNAME=carshare 69 + UPV_LOGIN_DATA_PASSWORD=SW2017-03:dLogin<b 97 70 98 - To load the new configuration file, restart supervisor service: 71 + .. glossary:: 99 72 100 - .. code-block:: bash 73 + ORACLE_SID 74 + Valor del SID de la base de datos de Oracle. 101 75 102 - $ sudo systemctl restart supervisord 76 + DJANGO_SETTINGS_MODULE 77 + Ruta del módulo de settings que usará el proyecto. Para producción debe de estar siempre 78 + establecido ``config.settings.production`` como valor. 103 79 104 - To restart the process: 80 + DJANGO_ALLOWED_HOSTS 81 + Dominio desde el que se permitirán las peticiones. Si se intenta acceder con otro nombre, la 82 + aplicación responderá con un error 400. 105 83 106 - .. code-block:: bash 84 + DJANGO_SECRET_KEY 85 + Semilla que se usa para guardar de forma segura las contraseñas en la base de datos. 107 86 108 - $ sudo supervisorctl restart carshare 87 + DATABASE_URL 88 + Credenciales y ruta para acceder a la base de datos. Siempre será de la siguiente forma: 89 + ``oraclegis://{username}:{password}@{host}:{port}/{database}``, donde ``{username}`` es el nombre de 90 + usuario de base de datos, ``{password}`` es la contraseña de ese usuario, ``{host}`` es la ruta del servidor, 91 + ``{port}`` es el puerto y ``{database}`` es el nombre de la base de datos. 109 92 110 - Nginx 111 - ----- 93 + DJANGO_DEBUG 94 + Activa o desactiva el modo de depuración de la aplicación. Se usa ``True`` para activar y ``False`` para 95 + desactivar. 112 96 113 - Create the following file ``/etc/nginx/conf.d/carshare.conf``: 97 + UPV_LOGIN_DATA_USERNAME 98 + Nombre de usuario para acceder al servicio de login de la UPV. 114 99 115 - .. code-block:: nginx 100 + UPV_LOGIN_DATA_PASSWORD 101 + Contraseña para acceder al servicio de login de la UPV. 116 102 117 - upstream carshare_app { 118 - server unix:///home/carshare/carshare.sock; 119 - } 103 + Ejecutar tests 104 + -------------- 120 105 121 - server { 122 - listen 80; 123 - client_max_body_size 0; 124 - charset utf-8; 125 - 126 - location /media { 127 - alias /home/carshare/carshare-project/upvcarshare/media; 128 - } 106 + Para ejecutar los test usando Docker:: 129 107 130 - location /static { 131 - alias /home/carshare/carshare-project/upvcarshare/public; 132 - } 108 + $ docker-compose -f dev.yml run app python3 manage.py test --settings=config.settings.test 133 109 134 - location / { 135 - uwsgi_pass carshare_app; 136 - uwsgi_read_timeout 600; 137 - uwsgi_param QUERY_STRING $query_string; 138 - uwsgi_param REQUEST_METHOD $request_method; 139 - uwsgi_param CONTENT_TYPE $content_type; 140 - uwsgi_param CONTENT_LENGTH $content_length; 141 - uwsgi_param REQUEST_URI $request_uri; 142 - uwsgi_param PATH_INFO $document_uri; 143 - uwsgi_param DOCUMENT_ROOT $document_root; 144 - uwsgi_param SERVER_PROTOCOL $server_protocol; 145 - uwsgi_param REMOTE_ADDR $remote_addr; 146 - uwsgi_param REMOTE_PORT $remote_port; 147 - uwsgi_param SERVER_ADDR $server_addr; 148 - uwsgi_param SERVER_PORT $server_port; 149 - uwsgi_param SERVER_NAME $server_name; 150 - uwsgi_param UWSGI_SCHEME http; 151 - } 152 - }