- sudo add-apt-repository ppa:deadsnakes/ppa
- sudo apt install python3.9
- python3.9 --version
- curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
- python3.9 get-pip.py
- sudo apt-get install python3.9-distutils
- python3.9 -m pip --version
- python3.9 -m pip install virtualenv
- python3.9 -m virtualenv venv
- pip --version
- apt-get -y install libz-dev libjpeg-dev libfreetype6-dev python-dev
- git clone https://github.com/NishantGhanate/MediaStream.git
- cd MediaStream
- python3.9 -m virtualenv venv
- source venv/bin/activate
- pip install -r requirements.txt
from django.core.management.utils import get_random_secret_key
get_random_secret_key()
'[SECRET KEY]'find . -path "/migrations/.pyc" -delete find . -name "*.pyc" -exec rm -- {} +
docker run -d --name=postgres_c -p 5432:5432 -e POSTGRES_PASSWORD=docker postgres
docker exec -it postgres_c psql -U postgres docker exec -it postgres_c psql -U postgres -p 5436 create database media_stream_local; \l \q drop schema media_stream
- python manage.py makemigrations
- python manage.py migrate
- python manage.py createsuperuser
- python manage.py runserver 0.0.0.0:8000
- python manage.py dumpdata video_app > ./video_app/data_backup/video_app_data.json
- python manage.py loaddata ./video_app/data_backup/video_app_data.json
In order to use celery we need to setup
Option 1 : 6.1 & 6.2
- Redis
OR
OPtion 2 :
- Erlang
- RabbitMQ on windows
Open another wsl terminal
- sudo apt-get install redis
- sudo service redis-server start
- redis-cli
- PING
- redis-cli MONITOR
EXtra : Redis GUI
- Redis on wsl 2
- redisInsight-v2 [https://redis.com/redis-enterprise/redis-insight/#insight-form]
- install redis on wsl : https://anggo.ro/note/installing-redis-in-ubuntu-wsl/
celery --app media_stream worker -l info --pool=solo
<syntax>
celery --app <project_name> worker -l info --pool=solo
celery -A media_stream worker -l INFO
celery -A media_stream worker -l info -Q celery, high
celery -A media_stream worker -l INFO -Q celery,high --pool=solo
Note : Make to sure to run migration if you have installed celery later
Using Chocolatey (power shell on admin mode):
choco install rabbitmq
OR
Install mannually
6.3.1 Erlang : https://www.erlang.org/downloads
- First install erlang & add to path
1 - Search edit environment variables for your account,
go to advanced > Enviroment varibales
2- Set environment variable:
Variable name : ERLANG_HOME
Variable value: C:\Program Files\Erlang
Note: Don't include bin on above step.
3- Append to the PATH environmental variable:
Variable name : PATH
Variable value: %ERLANG_HOME%\bin
6.3.2 RabbitMQ : https://www.rabbitmq.com/install-windows.html
> D:\Program Files\RabbitMQ Server\rabbitmq_server-3.10.5\sbin>
> rabbitmqctl.bat status
> rabbitmq-service.bat start | stop
Open : http://localhost:15672/mgmt
Username: guest
Password: guest
This is the template to follow:
> celery [celery args] flower [flower args]
> celery -A media_stream flower --port=5566
sudo apt install ffmpeg
sudo add-apt-repository ppa:nginx/stable
sudo apt-get install -y nginx `
1. Default Run
> python manage.py collectstatic
> gunicorn media_stream.wsgi -c gunicorn.conf.py
2. Cli Run
> sudo -s
> gunicorn --bind :8000 --workers 3 media_stream.wsgi --capture-output
3. Extra keywords
> gunicorn --bind :8000 --workers 3 media_stream.wsgi \
--log-level=DEBUG \
--timeout=0 \
--access-logfile=-\
--log-file=-
- Create guicorn socket config
sudo nano /etc/systemd/system/media_stream_gunicorn.socket
[Unit]
Description=media stream gunicorn socket connection
[Socket]
ListenStream=/run/media_stream_gunicorn.sock
[Install]
WantedBy=sockets.target
- Create guincorn socket service
sudo nano /etc/systemd/system/media_stream_gunicorn.service
Group=www-data
WorkingDirectory=/mnt/d/Github/MediaHls
ExecStart=/mnt/d/Github/MediaHls/venv/bin/gunicorn \
--access-logfile - \
--workers 3 \
--bind unix:/run/media_stream_gunicorn.sock \
media_stream.wsgi:application
[Install]
WantedBy=multi-user.target
- Start guicorn
sudo service media_stream_gunicorn.socket start sudo service media_stream_gunicorn.socket enable sudo media_stream_gunicorn.socket status
- Set permission
sudo chown -R www-data:root /mnt/d/Github/MediaHls
- Restart wsl using powershell in admin mode
wsl --shutdown
- Create nginx config
sudo nano /etc/nginx/conf.d/media_stream.conf
copy contents from project/ngix/media_stream
- Copy to site-enabled
sudo cp /etc/nginx/conf.d/media_stream.conf /etc/nginx/sites-enabled/
- Test nginx configsu
sudo nginx -t
sudo /etc/init.d/nginx start
sudo /etc/init.d/nginx reload
sudo /etc/init.d/nginx restart
sudo /etc/init.d/nginx status
using windows to host server from wsl make sure IISM is not using same port
python manage.py dumpdata video_app.LanguageModel > ./video_app/data_backup/model_name.json
python manage.py loaddata ./video_app/data_backup/model_name.json
python manage.py migrate video_app 0002_languagemodel
python manage.py migrate --fake video_app 0002_languagemodel
or
Take table data backup and clear migration log of speific model
DELETE FROM public.django_migrations
WHERE id= 37;
ps > wsl --shutdown
sudo systemctl enable gunicorn.socket
sudo systemctl start gunicorn.socket
sudo service gunicorn.socket start
Since we are working on wsl to keep git same across we will use autocrlf true
in windows & wsl as well .
1. See existing mode
> git config --get core.autocrlf
2 Set autocrlf true in gitbash & wsl terminal
> git config --global core.autocrlf true
3. Incase of already pushed crlf
sudo apt-get install dos2unix
find /mnt/d/github/MediaHls -type f -execdos2unix {} +
- https://pixabay.com/videos/search/small/
- https://arctype.com/blog/install-django-ubuntu/
sudo nano /etc/nginx/conf.d/test.conf
server { listen 8005; server_name localhost; error_log /mnt/d/Github/MediaHls/logs/nginx-error.log;
location /static/ {
autoindex on;
alias /mnt/d/Github/MediaHls/static/;
}
}
cd /var/log/nginx sudo nginx -c /etc/nginx/conf.d/test.conf -t
sudo /etc/init.d/nginx start sudo /etc/init.d/nginx configtest
sudo cp /etc/nginx/conf.d/test.conf /etc/nginx/sites-enabled/
sudo cp /etc/nginx/sites-enabled/default.conf /etc/nginx/conf.d/
cd /etc/nginx/sites-enabled/
sudo /etc/init.d/nginx restart
-
cat /var/log/nginx/error.log
cd /var/www/html; sudo nano index.nginx-debian.html
https://stackoverflow.com/questions/41766195/nginx-emerg-server-directive-is-not-allowed-here