рдЦрд░реЛрдВрдЪ рд╕реЗ django рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡рд░ рдХреА рд╕реНрдерд╛рдкрдирд╛

рдореИрдВ django рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдРрд╕рд╛ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдЙрди рдкрд░ django рд╕рд╛рдЗрдЯреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд░реЛрдВрдЪ рд╕реЗ рдПрдХ VPS рд╕рд░реНрд╡рд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдХрд┐рд╕реА рддрд░рд╣, рдореБрдЭреЗ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рдХрд┐ рд╕реЗрдЯрдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЪрд░рдг рджрд░ рдЪрд░рдг рд▓рд┐рдЦрдирд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ "рдХрд╛рдЧрдЬ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдкрд░" рдЗрди рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рдФрд░ рддреЗрдЬ рд╣реИ - рд╕рднреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреБрдЫ рдХреЛ рдпрд╛рдж рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдФрд░ рдЕрдзрд┐рдХ - рдореИрдВрдиреЗ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ - рдореИрдВрдиреЗ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рд╕рд░реНрд╡рд░ рддреИрдпрд╛рд░ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрдЬрдЧрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╢реБрд░реБрдЖрддреА, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдкрд╛рдПрдВрдЧреЗред рдХреБрдЫ рдореЛрдбрд╝ рдХреЗ рд╕рд╛рде, рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред

рддреЛ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдЕрднреА VPS рд╕рд░реНрд╡рд░ рдЦрд░реАрджрд╛ рд╣реИ рдФрд░ рд╡рд╣рд╛рдВ рдПрдХ рд╕реНрдерд┐рд░ рдбреЗрдмрд┐рдпрди рд░рд┐рд▓реАрдЬрд╝ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрдирд╛ рдЖрд░рдПрд╕рдП рдХреБрдВрдЬреА рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ:

ssh-copy-id root@server

рдЕрдм рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ:

wget -O ~ / install.sh dipz.org/57292/nixtext
sh ~ / install.sh

рдпрд╣ рд╣реИ :) рдпрджрд┐ рдЖрдкрдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдпрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ, рддреЛ рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ nginx, postgres, рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ, uwsgi рд╕реНрдерд╛рдкрд┐рдд рд╣реИ; рдПрдХ рд╡реЗрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ; рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп DVCS рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ; рд╡рд┐рднрд┐рдиреНрди рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рдереЗ рдФрд░ рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдкрдХреЛ рдмрд╕ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ / web / project_name рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреНрд▓реЛрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдлрд┐рд░ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП nginx рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ (рд╕рд╛рдЗрдЯ-рд╕рдХреНрд╖рдо рдореЗрдВ рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ), рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓рд┐рдЦреЗрдВ рдФрд░ рд╕рд╛рдЗрдЯ рдХреЛ рд╢реБрд░реВ рдХрд░реЗрдВред

рдореЗрд░реЗ django рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ virtualenv рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рддрд╛ рд╣реИ, syncdb рдмрдирд╛рддрд╛ рд╣реИ, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдмрдирд╛рддрд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЕрдиреНрдп рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИред

рдирддреАрдЬрддрди, рдПрдХ рдирдВрдЧреЗ рд╕рд░реНрд╡рд░ рдкрд░ django рд╕рд╛рдЗрдЯ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рдПрдХ рджрд┐рдирдЪрд░реНрдпрд╛ рд╕реЗ рдПрдХ рддреНрд╡рд░рд┐рдд рдФрд░ рд▓рдЧрднрдЧ рджрд░реНрдж рд░рд╣рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рд╡реИрд╕реЗ рднреА, рдХреБрдЫ рдереНрд░реЗрдб рдмрдЧ рдмрд╛рд╣рд░ рдЖ рдЬрд╛рдПрдВрдЧреЗ)ред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдпрд╣рд╛рдВ рд╣реИ: dipz.org/57292

рдореИрдВрдиреЗ рд░реВрд╕реА рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкрд╛рда рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рднреА рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

#!/bin/sh

# vim -
# : , ssh
# habrahabr
wget -O ~/.vimrc http://dumpz.org/25712/nixtext/

# vim -
# , , crontab,
# nano
update-alternatives --set editor /usr/bin/vim.basic

# netselect-apt .
#
# debian
apt-get install netselect-apt -y
rm /tmp/sources.list
netselect-apt -o /tmp/sources.list -n stable

# /tmp/sources.list
#
# :
# debian-: ,
# (sid) , nginx-
# uwsgi
echo "deb http://security.debian.org/ squeeze/updates main contrib non-free" > /etc/apt/sources.list
LINE = $( cat /tmp/sources.list | grep '^deb' | head -1 )
echo $LINE /etc/apt/sources.list >> /etc/apt/sources.list
echo $LINE | sed 's/stable/testing/' >> /etc/apt/sources.list
echo $LINE | sed 's/stable/sid/' >> /etc/apt/sources.list

# -,
# , -,
cat > /etc/apt/apt.conf.d/07custom << EOF
APT::Install-Recommends "false";
APT::Default-Release "stable";
EOF


#
# sources.list
aptitude update

# : en_US -.
# ru_RU
aptitude install locales -y
echo en_US.UTF-8 > /etc/default/locale
cat > /etc/locale.gen << EOF
en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8
EOF

locale-gen

#
# .. ,
aptitude upgrade -y

#
# psmisc pkill
# screen sudo
aptitude install psmisc screen sudo -y

# exim4,
# ,
# dpkg-reconfigure
aptitude install exim4 -y
#dpkg-reconfigure exim4-config

# nginx sid , uwsgi
# ngin
# -
aptitude install nginx -t sid -y
update-rc.d nginx defaults
/etc/init.d/nginx start

# web
# - django-
# RSA , ssh
# vim
useradd -m web -s /bin/bash
cp ~/.vimrc /home/web
mkdir /home/web/.ssh
cp ~/.ssh/authorized_keys /home/web/.ssh
chown -R web:web /home/web

# /web, -
mkdir /web /web/run /web/log
chown -R web:web /web

#
aptitude install mercurial subversion git-core -y

# mercurial
#
#
cat > /home/web/.hgrc << EOF
[ui]
username = Name Name
EOF

chown web:web /home/web/.hgrc

# python :)
# python-dev - python,
# python-, C
# python-setuptools easy_install
aptitude install python python-setuptools python-dev -y

# pip virtualenv
easy_install -U pip
easy_install -U virtualenv

# gcc python-
aptitude install gcc -y

# python- lxml
# ,
#
aptitude install python-lxml -y

# Fabric -
pip install -U fabric

# PIL
# ,
# , PIL JPEG :)
aptitude install libjpeg62-dev libfreetype6-dev -y
pip install -U PIL

# uwsgi
#
aptitude install libxml2-dev -y
pip install -U http://projects.unbit.it/downloads/uwsgi-latest.tar.gz

# postgres
# , - web
#
aptitude install postgresql python-psycopg2 -y
su postgres -c "cd /; createuser -s web"

# uwsgi-
#
# , ""
aptitude install supervisor -y

# ,
cat > /etc/supervisor/conf.d/inet.conf << EOF
[inet_http_server]]
port=666
#username=
#password=
EOF


# ,
# django- supervisor-
#
# uwsgi , uwsgi uwsgi.xml
#
cat > /etc/supervisor/conf.d/web.conf << EOF
#[program:PROJECT]
#directory=/web/PROJECT
#command=uwsgi -x uwsgi.xml
#user=web
EOF


# supervisor,
/etc/init.d/supervisor restop

# , web
# supervisorctl sudo
# -,
echo "web ALL = NOPASSWD: /usr/bin/supervisorctl" >> /etc/sudoers

# nginx
#
# VIM HOST PROJECT

cat > /etc/nginx/sites-enabled/template << EOF
server {
server_name .HOST.com;

error_log /web/log/HOST.com-error.log warn;
access_log /web/log/HOST.com-access.log;

location /static/admin-media {
alias /web/PROJECT/var/.env/lib/python2.6/site-packages/django/contrib/admin/media;
}

location /static/ {
root /web/PROJECT;
}

location /robots.txt {
root /web/PROJECT/static;
}

location /favicon.ico {
root /web/PROJECT/static;
}

location / {
include uwsgi_params;
uwsgi_pass unix:/web/run/PROJECT.sock;
}
}
EOF



рдЗрд╕ рдЬрдЧрд╣ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдорд╛рдЙрд╕ рдХрд╛ рдкрд╣рд┐рдпрд╛ рдЯреВрдЯ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛред

рдЕрджреНрдпрддрди : рдпрд╣ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд╕рдВрдХреЗрдд рд╣реИрдВред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ django-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЖрд░рд╛рдорджрд╛рдпрдХ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИред

UPDATE2 : рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреЗ рд▓рд┐рдП bitbucket: bitbucket.org/lorien/django-server Fork рдкрд░ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред

Source: https://habr.com/ru/post/In120363/


All Articles