Django学习第十五讲: 项目部署上线操作相关

1.购买云服务器并进行端口设置

端口范围

80/80
3306/3306
6379/6379
23/23
443/433
22/22
80/80
3389/3389

2.通过nginx+uwsgi让项目运行在线上

Nginx默认是80端口

3.安装Python3.7

    1. 安装依赖包

yum install opensll-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ opensll-devel libffi-devel python-devel mariadb-devel

  • 2 下载Python源码
-1 wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
-2 tar -xzvf Python-3.7.3.tgz -C /tmp
-3 cd /tmp/Python-3.7.3
  • 3.把Python3.7安装到 /usr/local目录
-1 ./configure --prefix=/usr/local
-2 make
-3 make altinstall  # 这一步比较耗时
  • 4.更改/usr/bin/python链接
-1. ln -s /usr/local/bin/python3.7 /usr/bin/python3
-2. ln -s /usr/local/bin/pip3.7 /usr/bin/pip3

4.安装maridb

mariadb跟MySQL是一样的,centos中已经集成了,安装非常简单

  • 4.1. 安装
 sudo yum install mariadb-server
  • 4.2.启动,重启
sudo systemctl start mariadb       #启动
sudo systemctl restart mariadb    #重启
  • 4.3.设置安全规则,配置MySQL端口
  • 4.3.1 设置bind-ip,配置完成之后,重启一下mysql服务
进入到根目录下,执行下面的语句
vim /etc/my.cnf
在[mysqld]: 下面加一行
bind-address = 0.0.0.0
  • 4.3.2 设置外部ip可以访问
先进入MySQL才能运行下面命令

-1、 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

-2、GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;                       

-3、FLUSH PRIVILEGES;          #刷新权限
  • 4.3.3 访问MySQL

mysql -uroot

5.设置阿里云的对外端口


6.安装mysqlcilent

pip3 install mysqlclient
# 如果安装出问题,可以用下面的命令处理
centos 7: yum install python-devel mariadb-devel -y

安装完成后将数据库文件上传到服务器的数据库中

7.安装redis

yum install redis     #安装redis
service redis start  # 开启服务
也可以使用下面的命令
systemctl start redis.service
systemctl stop redis.service
================================
redis-cli                  #redis客户端连接命令

8.安装Nginx

-1  sudo yum install epel-release
-2  sudo yum install nginx   #安装 
-3  sudo systemctl start nginx    #启动

ps -aux|grep nginx (软件名称)
查看是否启动

9.安装virtualenvwrapper 虚拟环境

9.1安装

yum install python-setuptools python-devel
pip3 install virtualenvwrapper

9.2 创建虚拟环境

9.2.1 创建前首先要编辑 .bashrc 文件

命令:vim ~/.bashrc

vim操作:

i: 键进入编辑模式
ESC:键退出编辑模式
:wq 保存并退出
:!q强制退出

在文件的最下面 增加下面的代码

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

编辑完成后,重新加载.bashrc文件,在执行时可能会报错,所以在重新加载前先执行下面的命令:

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

执行完成后再执行下面的命令进行重新加载

source ~/.bashrc

如果报错,就查找一下文件,将查找到的文件路径复制到source中

sudo find / -name virtualenvwrapper.sh

9.2.2 新建虚拟环境

mkvirtualenv XXX  # 后面是虚拟环境名称
mkvirtualenv -p python3 XXX        # 用Python3新建虚拟环  执行此条命令

9.2.3 进入虚拟环境

workon XXX

9.2.4 退出虚拟环境

deactivate

9.2.5 其他问题

  • 如果安装虚拟环境报错,先更新pip
pip3 install -i https://pypi.douban.com/simple --upgrade pip

9.2.6 安装pip包

进入到虚拟环境中后,根据 我们项目的库文件进行库的安装 。
上传我们的项目文件到服务器中

将requireements.txt文件上传到服务器之后运行
pip install -r requireements.txt
安装依赖包

上传可以 filezilla进行上传

上传完成之后,更改我们的数据库连接信息,然后用django的自带服务器启动一下项目,看缺少哪些库或是文件,测试没问题后,进入到项目的 setting.py文件中将debug模式改为 false,同时将 ALLOWED_HOST改为[‘0.0.0.0’]或是 [’*’],允许所有的ip进行访问

9.2.7 staticfiles_dirs 和 static_root的使用区别

  • STATICFILES_DIRS :在debug=true时使用,当改为false时静态文件不能加载
  • STATIC_ROOT:在debug=false时使用,并且两者不能并存

10 安装uwsgi

在我们当前的虚拟环境下进行安装

10.1 安装

pip install uwsgi     #在虚拟环境下直接使用pip 即可

10.2测试uwsgi

一定要在我们当前项目目录下执行,不确定的话,可以执行 pwd命令查看当前是否是在项目目录下

uwsgi --http :8000 --module XXX.wsgi   #以http的形式在8000端口运行,执行的是我们项目下的wsgi文件

10.3

拉取所有需要的static file到同一目录
测试没有问题后,我们将静态文件重新进行处理

在django的setting文件中,添加下面一行内容
STATIC_ROOT = os.path.join(BASE_DIR, "static/")

运行命令
python manage.py collectstatic

10.4 nginx 和uwsgi的配置

可以在我们的pycharm中的项目目录中添加conf文件夹,并在里面新建下面的文件

  • nginx的配置
    新建uc_nginx.conf
# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
# configuration of the server

server {
# the port your site will be served on
listen      80;
# the domain name it will serve for
server_name xxx.xxx.xxx.xxx  |www.xx.com ;     #这里可以是ip地址,有域名的话直接绑定域名 substitute your machine's IP address or FQDN
charset     utf-8;

# max upload size
client_max_body_size 75M;   # adjust to taste

# Django media
location /media  {
    alias /root/xxx/media;  # 指向django的media目录
}

location /static {
    alias /root/xxx/static; # 这里的路径是我们项目存放的目录,根据你的项目存放的位置进行更改,指向django的static目录
}

# Finally, send all non-media requests to the Django server.
location / {
    uwsgi_pass  django;
    include     uwsgi_params; # the uwsgi_params file you installed
}
}
  • uwsgi的配置
    新建uwsgi.ini配置文件
# mysite_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /root/xxx
# Django's wsgi file
module          = xxx.wsgi
# the virtualenv (full path)

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          = 127.0.0.1:8001
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true
virtualenv = /root/.virtualenvs/XXX

#logto = /tmp/mylog.log

注:
chdir:表示需要操作的目录,也就是项目的目录
module:wsgi文件的路径
processes:进程数
virtualenv:虚拟环境的目录

10.4 nginx和uwsgi使用和注意

  • nginx
    使用前我们需要进入到 /etc/nginx/nginx.conf文件中做一下更改
    将文件中第一行的user nginx改为user root否则启动时会有权限问题
    然后重启nginx服务
sudo systemctl restart nginx

10.4.1 将配置文件加入到Nginx的启动配置文件中,软链接

sudo ln -s 你的目录/XXX/conf/nginx/uc_nginx.conf  /etc/nginx/conf.d/

也可以将我们自己写的nginx配置文件复制到 nginx的配置目录中

cp uc_nginx.conf  /etc/nginx/conf.d/

10.5 运行Nginx

sudo /usr/sbin/nginx

这里注意一定是直接用Nginx命令启动,不要用systemctl启动Nginx不然会有权限问题

10.6 通过配置文件启动uwsgi

首先进行入到我们的虚拟环境中

workon XXX
uwsgi -i 你的目录/XXX/conf/uwsgi.ini &

11.查看软件的错误日志

cd /var/log/软件名/
cat error.log

猜你喜欢

转载自blog.csdn.net/scyllake/article/details/109263813
今日推荐