Nginx+uWsgi+Django部署网站到服务器

准备工作:安装Mysql和Python3.x

注意事项:安装之前,我们需要给默认的Python2.7安装pymysql+Django库,因为后面会出错就是因为未安装这两个库!

1 pip install pymysql==0.7.10
2 pip install django==1.10.6
View Code

 

安装虚拟环境:

提示:因Python3+自带虚拟环境,更简单好用,所以没必要再装一个。
在home目录下创建名称为vcmt的虚拟环境。

1 python3.6 -m venv /home/vcmt
View Code

激活虚拟环境:

1 source /home/vcmt/bin/activate  
View Code

退出命令:

1 deactivate
View Code

 

安装Python扩展库:

第一步,在已配置好的机器上使用:

1 pip freeze > requirements.txt
View Code

第二步,把生成的requirements.txt文件复制到目标机器上的root目录下。

第三步,在目标机器上执行pip install -r requirements.txt,读取文件requirements.txt中的扩展库信息并在本机进行安装。

 

上传项目到服务器:

把Django项目上传到服务器上。

注意:上传项目文件后把 /项目名/app名/migrations/ 下的类似00.. 的记录文件删除,有几个删除几个,但是不要删除别的文件。

 

修改settings.py文件:

 1 DEBUG = False
 2 
 3 ALLOWED_HOSTS = ['*']
 4 
 5 
 6 
 7 
 8 STATIC_ROOT = os.path.join(BASE_DIR, 'static')
 9 
10 MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
11 
12 STATIC_URL = '/static/'
View Code

 

配置Django项目:

安装好Django等必须库后,进入Django项目下,同步并创建数据库,执行:

1 python manage.py makemigrations
2 python manage.py migrate
View Code

建立后台超级用户:

1 python manage.py createsuperuser
View Code

启动自带的服务器,测试是否可以正常运行!(此时settings.py 中的DEBUG = False)输入:

python manage.py runserver 0.0.0.0:8000

 

 

同步静态文件:

python manage.py collectstatic

 

 

配置uWsgi:

在Django项目主目录下创建uwsgi.ini文件:

 1 [uwsgi]
 2 # 项目目录
 3 chdir=/root/biomass/
 4 # 指定项目的application
 5 module=biomass.wsgi:application
 6 # 进程个数
 7 workers=5
 8 pidfile=/root/biomass/script/uwsgi.pid
 9 # 指定IP端口
10 #http=:9090
11 # 指定静态文件
12 static-map=/static=/root/biomass/static
13 # 启动uwsgi的用户名和用户组
14 uid=root
15 gid=root
16 # 启用主进程
17 master=true
18 # 自动移除unix Socket和pid文件当服务停止的时候
19 vacuum=true
20 # 序列化接受的内容,如果可能的话
21 thunder-lock=true
22 # 启用线程
23 enable-threads=true
24 # 设置自中断时间
25 harakiri=30
26 # 设置缓冲
27 post-buffering=4096
28 # 设置日志目录
29 daemonize=/root/biomass/script/uwsgi.log
30 # 指定sock的文件路径
31 socket=127.0.0.1:9090
1 $ uwsgi --ini uwsgi.ini   # 启动uwsgi配置
2 [uwsgi-static] added mapping for /static => /home/trunk/static    # 启动成功
3 
4 $ uwsgi --stop uwsgi.pid  # 关闭uwsgi
5 signal_pidfile()/kill(): Operation not permitted [core/uwsgi.c line 1659]
6 
7 $ uwsgi --reload uwsgi.pid  #重新加载配置

 

Nginx配置:

Nginx常用命令:

1 $ /etc/init.d/nginx start  #启动
2 $ /etc/init.d/nginx stop  #关闭
3 $ /etc/init.d/nginx restart  #重启
4 $  killall nginx    #杀死所有nginx
5 $ nginx -t #检查配置文件是否有错
6 
7 # 如果是生产环境的话Nginx正在运行,就不要直接stop start 或者 restart  直接reload就行了
8 # 对线上影响最低
9 $ /etc/init.d/nginx reload

创建一个xxx.conf配置文件(nginx的默认配置目录为/etc/nginx/conf.d):

 1 server {   # 这个server标识我要配置了
 2         listen 80;  # 80 是http默认的端口, 443 是https默认的端口(网页一般使用这两个端口)
 3         server_name 39.105.157.191 ;  # 你访问的路径前面的url名称
 4         access_log  /var/log/nginx/access.log;  # Nginx日志配置
 5         error_log  /var/log/nginx/error.log;    # Nginx错误日志配置
 6         charset  utf-8; # Nginx编码
 7         gzip on;  # 启用压缩,这个的作用就是给用户一个网页,比如3M压缩后1M这样传输速度就会提高很多
 8         gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;  # 支持压缩的类型
 9 
10         error_page  404           /404.html;  # 错误页面
11         error_page   500 502 503 504  /50x.html;  # 错误页面
12 
13         # 指定项目路径uwsgi
14         location / {        # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
15             include /etc/nginx/uwsgi_params;  # 导入一个Nginx模块他是用来和uWSGI进行通讯的
16             uwsgi_connect_timeout 30;  # 设置连接uWSGI超时时间
17             # 指定uwsgi的sock文件所有动态请求就会直接丢给他
18             uwsgi_pass 127.0.0.1:9090;
19         }
20 
21         # 指定静态文件路径
22        # location /static/ {
23         #    alias  /root/biomass/static/;
24          #   index index.html index.htm;
25         #}
26 }

 

启动uWsgi后再启动Nginx即可

转载于:https://www.cnblogs.com/LMissher/p/10436052.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值