有很多构建方式,记录下本次使用docker部署的过程,日后参考
安装docker,略
端口映射外部82到80
docker pull python
run -itd -p 82:80 --name YYST 6bf7a4fa2d45
docker exec -it YYST bash
从https://github.com/584807419/YYST拉取代码,绿色按钮处复制url
apt-get update
apt-get install git
apt-get install vim
apt-get install nginx
pip install uwsgi
cd /var/
mkdir www
cd www
git clone https://github.com/584807419/YYST.git
用pip安装依赖包时默认访问https://pypi.Python.org/simple/,国内厂商提供的pipy镜像目前可用的有:
http://pypi.douban.com/ 豆瓣
http://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学
配置指定的镜像源,在当前用户目录下创建.pip文件夹
mkdir ~/.pip
然后在该目录下创建pip.conf文件填写:
[global]
trusted-host=mirrors.aliyun.com
index-url=http://mirrors.aliyun.com/pypi/simple/
cd YYST
pip install -r packages.txt
python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic
vi /etc/nginx/sites-available/YYSY_nginx.conf
server {
listen 80;
server_name 127.0.0.1;
charset utf-8;
client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass unix:///var/www/YYST.sock;
}
}
创建软连接
sudo ln -s /etc/nginx/sites-available/YYSY_nginx.conf /etc/nginx/sites-enabled/YYSY_nginx.conf
把sites-enabled里面原有的default干掉
测试配置语法问题
sudo service nginx configtest 或 /path/to/nginx -t
重启 nginx 服务器:
sudo service nginx reload 或 sudo service nginx restart 或 /path/to/nginx -s reload
vi /var/www/YYST_uwsgi.ini
# Django-related settings
[uwsgi]
# http =:80
socket = /var/www/YYST.sock
# the base directory (full path)
chdir = /var/www/YYST
# Django s wsgi file
module = YYST/YYST.wsgi
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 4
# ... with appropriate permissions - may be needed
chmod-socket = 664
# clear environment on exit
vacuum = true
cd /var/www/
uwsgi –ini YYST_uwsgi.ini
访问:http://116.196.98.152:83/job/pyjob/
有多重方式,开发环境的话不用uwsgi,也可以直接debug方式python manage.py runserver 86演示和运行代码
也可用nginx反向代理转发80请求到86端口
反向代理适用于很多场合,负载均衡是最普遍的用法。
当在一台主机上部署了多个不同的web服务器,并且需要能在80端口同时访问这些web服务器时,可以使用 nginx 的反向代理功能: 用 nginx 在80端口监听所有请求,并依据转发规则(比较常见的是以 URI 来转发)转发到对应的web服务器上。
例如有 webmail , webcom 以及 webdefault 三个服务器分别运行在 portmail , portcom , portdefault 端口,要实现从80端口同时访问这三个web服务器,则可以在80端口运行 nginx, 然后将 /mail 下的请求转发到 webmail 服务器, 将 /com下的请求转发到 webcom 服务器, 将其他所有请求转发到 webdefault 服务器。
假设服务器域名为example.com,则对应的 nginx http配置如下:
http {
server {
server_name example.com;
location /mail/ {
proxy_pass http://example.com:protmail/;
}
location /com/ {
proxy_pass http://example.com:portcom/main/;
}
location / {
proxy_pass http://example.com:portdefault;
}
}
}
以上的配置会按以下规则转发请求( GET 和 POST 请求都会转发):
将 http://example.com/mail/ 下的请求转发到 http://example.com:portmail/
将 http://example.com/com/ 下的请求转发到 http://example.com:portcom/main/
将其它所有请求转发到 http://example.com:portdefault/
需要注意的是,在以上的配置中,webdefault 的代理服务器设置是没有指定URI的,而 webmail 和 webcom 的代理服务器设置是指定了URI的(分别为 / 和 /main/)。
如果代理服务器地址中是带有URI的,此URI会替换掉 location 所匹配的URI部分。
而如果代理服务器地址中是不带有URI的,则会用完整的请求URL来转发到代理服务器。
以上配置的转发示例:
http://example.com/mail/index.html -> http://example.com:portmail/index.html
http://example.com/com/index.html -> http://example.com:portcom/main/index.html
http://example.com/mail/static/a.jpg -> http://example.com:portmail/static/a.jpg
http://example.com/com/static/b.css -> http://example.com:portcom/main/static/b.css
http://example.com/other/index.htm -> http://example.com:portdefault/other/index.htm
上面代码YYST项目此种方式所使用配置
server {
listen 80;
server_name 127.0.0.1;
charset utf-8;
client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass unix:///var/www/YYST.sock;
proxy_pass http://127.0.0.1:85;
}
}
容器使用相关知识:
http://www.runoob.com/docker/docker-run-command.html
https://yeasy.gitbooks.io/docker_practice/content/network/port_mapping.html
nginx服务器安装及配置文件详解:
https://segmentfault.com/a/1190000002797601