Skip to content

Instantly share code, notes, and snippets.

@dark-reiser
Last active January 11, 2024 09:52
Show Gist options
  • Save dark-reiser/c168c708152479236ce5 to your computer and use it in GitHub Desktop.
Save dark-reiser/c168c708152479236ce5 to your computer and use it in GitHub Desktop.
Setting Backend Python

#Konfigurasi Virtual Environment

  1. Jalankan vagrant dan masuk
vagrant up
vagrant ssh
  1. Install virtualenv dengan perintah

    pip install virtualenv
    

    atau

    easy_install install virtualenv
    
  2. Buat direktori project baru di home

    mkdir ~/projects && cd ~/projects/
    
    
  3. Buat virtual environment baru dengan nama venv

    virtualenv venv
    
  4. Aktivasi virtual environment dengan perintah

source venv/bin/activate
  1. Install dependensi
  • buat file requirements.txt yang berisikan:

ago==0.0.6

Cython==0.22.1

Django==1.4

docopt==0.4.0

falcon==0.1.10

greenlet==0.4.7

gunicorn==19.2.1

lxml==3.4.2

mandrill==1.0.57

meinheld==0.5.7

MySQL-python==1.2.5

oauthlib==0.7.2

Pygments==2.0.2

python-memcached==1.53

python-mimeparse==0.1.4

redis==2.10.3

requests==2.4.3

requests-oauthlib==0.4.1

schedule==0.3.1

shortuuid==0.4.2

six==1.7.3

tweepy==3.2.0

twython==3.2.0

wheel==0.24.0 ```

  • jalankan perintah berikut untuk menginstall dependensi
    pip install -r requirements.txt
    
  • bila terjadi beberapa pesan kesalahan sebagai contoh:
    sh: 1: mysql_config: not found
    
    install
    sudo apt-get install libpython-dev
    
    sudo apt-get install libmysqlclient-dev
    
    sudo apt-get install libxml2-dev libxslt-dev python-dev
    
  1. Clone app dari github
    git clone [email protected]:Aksaramaya/latihan.git
    
  2. install supervisor
    • instalasi
    pip install supervisor --pre
    
    • buat file konfigurasi
    echo_supervisord_conf > supervisord.conf
    
    • berikut contoh file konfigurasi setelah dirubah
      ; Sample supervisor config file.
      ;
      ; For more information on the config file, please see:
      ; http://supervisord.org/configuration.html
      ;
      ; Notes:
      ;  - Shell expansion ("~" or "$HOME") is not supported.  Environment
      ;    variables can be expanded using this syntax: "%(ENV_HOME)s".
      ;  - Comments must have a leading space: "a=b ;comment" not "a=b;comment".
    
      [unix_http_server]
      file=/tmp/supervisor.sock   ; (the path to the socket file)
      ;chmod=0700                 ; socket file mode (default 0700)
      ;chown=nobody:nogroup       ; socket file uid:gid owner
      ;username=user              ; (default is no username (open server))
      ;password=123               ; (default is no password (open server))
    
      ;[inet_http_server]         ; inet (TCP) server disabled by default
      ;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)
      ;username=user              ; (default is no username (open server))
      ;password=123               ; (default is no password (open server))
    
      [supervisord]
      logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
      logfile_maxbytes=50MB        ; (max main logfile bytes b4 rotation;default 50MB)
      logfile_backups=10           ; (num of main logfile rotation backups;default 10)
      loglevel=info                ; (log level;default info; others: debug,warn,trace)
      pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
      nodaemon=false               ; (start in foreground if true;default false)
      minfds=1024                  ; (min. avail startup file descriptors;default 1024)
      minprocs=200                 ; (min. avail process descriptors;default 200)
      ;umask=022                   ; (process file creation umask;default 022)
      ;user=chrism                 ; (default is current user, required if root)
      ;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')
      ;directory=/tmp              ; (default is not to cd during start)
      ;nocleanup=true              ; (don't clean up tempfiles at start;default false)
      ;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)
      ;environment=KEY="value"     ; (key value pairs to add to environment)
      ;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)
    
      ; the below section must remain in the config file for RPC
      ; (supervisorctl/web interface) to work, additional interfaces may be
      ; added by defining them in separate rpcinterface: sections
      [rpcinterface:supervisor]
      supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
    
      [supervisorctl]
      serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket
      ;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
      ;username=chris              ; should be same as http_username if set
      ;password=123                ; should be same as http_password if set
      ;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
      ;history_file=~/.sc_history  ; use readline history if available
    
      ; The below sample program section shows all possible program subsection values,
      ; create one or more 'real' program: sections to be able to control them under
      ; supervisor.
    
      ;[program:theprogramname]
      ;command=/bin/cat              ; the program (relative uses PATH, can take args)
      ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
      ;numprocs=1                    ; number of processes copies to start (def 1)
      ;directory=/tmp                ; directory to cwd to before exec (def no cwd)
      ;umask=022                     ; umask for process (default None)
      ;priority=999                  ; the relative start priority (default 999)
      ;autostart=true                ; start at supervisord start (default: true)
      ;autorestart=unexpected        ; whether/when to restart (default: unexpected)
      ;startsecs=1                   ; number of secs prog must stay running (def. 1)
      ;startretries=3                ; max # of serial start failures (default 3)
      ;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
      ;stopsignal=QUIT               ; signal used to kill process (default TERM)
      ;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
      ;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
      ;killasgroup=false             ; SIGKILL the UNIX process group (def false)
      ;user=chrism                   ; setuid to this UNIX account to run the program
      ;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
      ;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
      ;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
      ;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
      ;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
      ;stdout_events_enabled=false   ; emit events on stdout writes (default false)
      ;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
      ;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
      ;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
      ;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
      ;stderr_events_enabled=false   ; emit events on stderr writes (default false)
      ;environment=A="1",B="2"       ; process environment additions (def no adds)
      ;serverurl=AUTO                ; override serverurl computation (childutils)
    
      ; The below sample eventlistener section shows all possible
      ; eventlistener subsection values, create one or more 'real'
      ; eventlistener: sections to be able to handle event notifications
      ; sent by supervisor.
    
      ;[eventlistener:theeventlistenername]
      ;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)
      ;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
      ;numprocs=1                    ; number of processes copies to start (def 1)
      ;events=EVENT                  ; event notif. types to subscribe to (req'd)
      ;buffer_size=10                ; event buffer queue size (default 10)
      ;directory=/tmp                ; directory to cwd to before exec (def no cwd)
      ;umask=022                     ; umask for process (default None)
      ;priority=-1                   ; the relative start priority (default -1)
      ;autostart=true                ; start at supervisord start (default: true)
      ;autorestart=unexpected        ; whether/when to restart (default: unexpected)
      ;startsecs=1                   ; number of secs prog must stay running (def. 1)
      ;startretries=3                ; max # of serial start failures (default 3)
      ;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
      ;stopsignal=QUIT               ; signal used to kill process (default TERM)
      ;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
      ;stopasgroup=false             ; send stop signal to the UNIX process group (default false)
      ;killasgroup=false             ; SIGKILL the UNIX process group (def false)
      ;user=chrism                   ; setuid to this UNIX account to run the program
      ;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
      ;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
      ;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
      ;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
      ;stdout_events_enabled=false   ; emit events on stdout writes (default false)
      ;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
      ;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
      ;stderr_logfile_backups        ; # of stderr logfile backups (default 10)
      ;stderr_events_enabled=false   ; emit events on stderr writes (default false)
      ;environment=A="1",B="2"       ; process environment additions
      ;serverurl=AUTO                ; override serverurl computation (childutils)
    
      ; The below sample group section shows all possible group values,
      ; create one or more 'real' group: sections to create "heterogeneous"
      ; process groups.
    
      ;[group:thegroupname]
      ;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions
      ;priority=999                  ; the relative start priority (default 999)
    
      ; The [include] section can just contain the "files" setting.  This
      ; setting can list multiple files (separated by whitespace or
      ; newlines).  It can also contain wildcards.  The filenames are
      ; interpreted as relative to this file.  Included files *cannot*
      ; include files themselves.
    
      ;[include]
      ;files = relative/directory/*.ini
    
      [program:latihan]
      command=gunicorn -b 0.0.0.0:8000 -w 2 app:app
      directory=/home/vagrant/projects/latihan
      user=vagrant
      autostart=true
      autorestart=true
      stdout_logfile=/home/vagrant/projects/latihan/server.log
      stderr_logfile=/home/vagrant/projects/latihan/server.err
      redirect_stderr=true
      stopsignal=QUIT
    
  • Jalankan supervisor
    supervisord
    
  • Restart program
    supervisorctl restart latihan
    
  1. Coba akses aplikasi di 127.0.0.1:8000
  2. Untuk menonaktifkan virtual environment dengan perintah: deactivate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment