Django项目线上部署流程

一、安装Mysql

1、新建文件、配置仓库源

编辑创建mariadb.repo仓库文件
vi /etc/yum.repos.d/MariaDB.repo

2、添加repo仓库配置

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

3、yum下载

yum install MariaDB-server MariaDB-client -y

4、启动mysql

systemctl start mariadb(通过yum下载的,可以使用systemctl管理)

5、初始化mysql

mysql_secure_installation
mysql.png

6、登录mysql客户端

mysql -uroot -p

二、安装uwsgi

uwsgi的安装通过pip就可以安装

pip install -i  https://pypi.douban.com/simple  uwsgi

测试uwsgi安装是否成功方法 ----->通过uwsgi启动一个python web服务

1、准备一个test_uwsgi.py文件,写入代码:
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World,im uwsgi....."] # python3

2、通过命令启动这个文件
uwsgi --http :8000 --wsgi-file test_uwsgi.py

3、浏览器测试访问
http://167.179.88.178:8000/

测试uwsgi安装是否成功方法 ----->通过uwsgi启动一个Django项目

1、准备好Django项目

2、在Django项目目录下执行一下命令:
uwsgi --http :8000 --module projects_name.wsgi

3、浏览器测试访问
http://167.179.88.178:8000/

三、安装nginx

1、 nginx解决依赖关系
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y

2、切到opt目录,下载nginx安装包
cd /opt
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz

3、解压安装包
tar -zxvf nginx-1.12.0.tar.gz

4、切换进入nginx目录
cd nginx-1.12.0

5、配置,编译安装到指定目录/opt/nginx1-12/
./configure --prefix=/opt/nginx1-12/ #这里不会生成文件夹
make && make install

6、启动nginx,进入sbin目录,找到nginx启动命令
进入nginx主目录,所有东西都在这了:cd /opt/nginx1-12
进入可执行命令目录:cd sbin
nginx相关命令:
./nginx :启动
ps -ef |grep nginx :检查端口和进程
./nginx -s stop :关闭
./nginx -s reload :重启(启动nginx服务时)
./nginx -t :检测nginx.conf语法是否正确

四、uwsgi和nginx对应的配置项

1.创建uwsgi的配置文件 uwsgi.ini,文件放哪里都可以
按照一下相关配置对应配置好相关信息:

[uwsgi]
# Django项目目录
chdir=/www/my_projects/server_manager/
# 指定项目的application
module=server_manager.wsgi:application
# 指定sock的文件路径---对应的nginx通信端口
socket=127.0.0.1:8000
# 进程个数
workers=5
#pidfile=/root/tg/myproject/script/uwsgi.pid
# 指定IP端口
http=0.0.0.0:8080
# 指定静态文件
static-map=/static=/www/my_projects/server_manager/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=/www/my_projects/uwsgi.log

2、测试uwsgi配置是否成功
uwsgi --http :8080 --module server_manager.wsgi
浏览器可以输入 http://167.179.88.178:8080 测试项目是否可以启动

3、创建存放Django静态文件的目录:
mkdir /opt/static/django

4、配置django项目settings.py文件

ALLOWED_HOSTS = ['*']

#收集静态文件的目录,静态文件内容都放这里了
STATIC_ROOT='/opt/static/django'
STATIC_URL = '/static/'
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,"static"),
]
STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的
文件都复制过来,把这些文件放到一起是为了用nginx等部署的时候更方便。

5、在Django项目下执行一下命令来收集静态文件:
python manage.py collectstatic

6、nginx配置
vi /opt/nginx1-12/conf/nginx.conf

server {
        listen       80;
        server_name  167.179.88.178;
        charset utf-8;
        access_log  /www/my_projects/logs/host.access.log;
        error_log  /www/my_projects/logs/host.error.log;

        location / {
            include  /opt/nginx1-12/conf/uwsgi_params;
            uwsgi_pass 127.0.0.1:8000;
            index  index.html index.htm;
        }
        location /static {
                alias /opt/static/django; # 静态文件绝对路径
        }

7、通过which uwsgi命令找到uwsgi可执行命令的绝对路径
/usr/bin/uwsgi

8、cd 到第一步创建的uwsgi.ini 文件的目录执行一下命令:
/usr/bin/uwsgi --ini uwsgi.ini
输出结果为一下内容:

[root@vultr my_projects]# /usr/bin/uwsgi --ini uwsgi.ini 
[uWSGI] getting INI configuration from uwsgi.ini
[uwsgi-static] added mapping for /static => /www/my_projects/server_manager/static
[root@vultr my_projects]# 

9、执行以下命令启动nginx服务:
/opt/nginx1-12/sbin/nginx

10、浏览器访问ip地址就可以看到部署好的项目了
http://167.179.88.178:80

附:服务器开启端口命令:
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

CentOS 7开放端口和关闭防火墙
https://www.jianshu.com/p/bad33004bb4f

你可能感兴趣的:(Django项目线上部署流程)