阿里云服务器Centos 7 下部署Django + uWSGI + Nginx

版权声明:未经博主同意,禁止转载。谢谢! https://blog.csdn.net/cp_123321/article/details/87608832

环境

Python: 3.6

Django: 2.1

OS: CentOS 7 x86_64

uwsgi: 2.0.17
下载Cmder    cmder.zip下载  大概108M.下载好后解压到桌面,

打开Cmder

Cmder官网  https://github.com/cmderdev/cmder/releases

登录到阿里云服务器,点击远程连接可以连接到服务器,

公网ip 


1.打开Cmder,链接到服务器的公网ip,   ssh root@公网ip   

2.yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel mysql-devel gcc gcc-devel python-devel
升级或者安装一些python依赖包

3. wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
下载python,只需要wget + python的下载地址就可以

4.解压python压缩包   tar -zxvf Python-3.6.5.tgz

5.cd Python-3.6.5

6.安装python ,vim README.rst (安装的命令在这个文件里,即python-3.6.5解压出来的文件里)
安装命令
    ①./configure
    ②make
    ③make install
安装好后,如果直接输入python还是2.7的,输入./python是3.6的,(.代表当前文件夹)

7.创建虚拟环境 ./python -m venv /root/python3env

8.激活虚拟环境,先切到python3env的上一级目录
source python3env/bin/activate
deactivate  退出虚拟环境


9.打开一个新的cmder,将windows中的项目移动到服务器中,(如果没有生成requirements.txt文件, 则在pycharm中Terminal下运行(随便选择一个django项目)
pip freeze > requirements.txt  将当前环境所安装的包都列出来放在这个文件里)

scp -r C:\Users\Administrator\Desktop\python\正课\27.Django2\mysite [email protected]:/root/mysite

10.(在虚拟环境里安装)安装项目的依赖包,都在requirements.txt中,所以需要切到项目里
cd mysite
pip install -r requirements.txt
安装好后,测试一下项目是否正常运行(python manage.py runserver)

11.安装uwsgi,在虚拟环境里安装
pip install uwsgi

12.下载并安装nginx (静态文件服务器)       
yum install nginx

13.实例-(右边的)更多-网络安全组-安全组配置-(上边选择)安全组列表-配置规则-(右上角)添加安全组规则

端口80/80   授权对象0.0.0.0/0(让所有的都可以访问)
端口8080/8080   授权对象0.0.0.0/0(让所有的都可以访问)

14.在项目里 
vim settings.py 修改ALLOWED_HOSTS = ['*']
在STATIC_URL = '/static/'下添加
STATIC_ROOT = "static" (加载静态文件路径)

15.在项目里创建文件
vim django_uwsgi.ini(自己起的文件名字) 在里边添加以下内容
[uwsgi]                   
# 通过uwsgi方位django需要配置http 
socket = :8000                            
# web项目根目录                
chdir = /home/root1/mysite (需要查看django_uwsgi.ini所在的文件路径)          
# module指定项目自带的wsgi配置文件的位置
module = mysite.wsgi                              
# 允许主进程存在                 
master = true                                    
# 开启进程数量                  
processes = 3             
# 服务器退出时自动清理环境            
vacuum = true  

16.运行项目(需要在虚拟环境里,而且要在项目mysite里)
uwsgi --ini django_uwsgi.ini --buffer-size 30000
(出现以下,证明成功WSGI app 0 (mountpoint='') ready in 6 seconds on interpreter 0x24eacd0 pid: 41241 (default app)
uWSGI running as root, you can use --uid/--gid/--chroot options)

17.打开一个新的cmder窗口,链接到服务器

18.配置nginx, cd /etc/nginx/
先将nginx.conf第一行的nginx改为root保存,如果不改,后边运行程序的时候会报权限不够
cd conf.d
然后在conf.d中新建mysite.conf文件
vim mysite.conf  配置可以参考default.conf
server {                                          
        # 访问时的端口号,跟项目端口不能一样                       
        listen  8080;                             
        location / {                              
                include /etc/nginx/uwsgi_params;  
                uwsgi_pass 127.0.0.1:8000;        
        }
    #加载静态文件路径
    location /static{
    alias /root/mysite/static;
}                                         
}    

19.nginx -t 检查配置文件写的是否有问题(权限不够加sudo)

20.ps -ef|grep nginx 查看nginx运行服务(如果只有一行,则需要开启nginx服务,如果有多行,则关闭nginx,然后重开nginx服务)

21.systemctl start nginx 开启nginx服务,需要运行程序
journalctl -xe(如果开启nginx服务时报错,下边会提示输入这个命令,查看详细错误)

22.(切到第一个cmder,停止项目运行,然后执行以下命令)
然后在mysite项目里运行python manage.py collectstatic((可以通过查看命令 python manage.py  --help))
 ll static/  命令查看多了一个admin,css文件

23.浏览器访问 公网ip:8080
就可以正常访问了
如果提示503错误,则说明需要关闭防火墙SELinux防火墙。
vim /etc/selinux/config
将SELINUX后的位置改为disabled
阿里服务器是已经将防火墙关闭的.

猜你喜欢

转载自blog.csdn.net/cp_123321/article/details/87608832