django2.2部署

Django2.2部署

参考博客:https://blog.csdn.net/u010681693/article/details/95044857

https://blog.csdn.net/weixin_43933164/article/details/90574891

https://www.cnblogs.com/xuepangzi/p/9219207.html

https://developer.aliyun.com/article/675910

前期准备

导出依赖包

打开Terminal终端,执行以下命令,将项目所需要的依赖包,都记录到一个文件内备用

pip freeze >plist.txt

image-20210418203055580

导入项目

将项目文件夹→右键→添加压缩文件,压缩为zip包

数据迁移

mysqldump -u root -p activityroomreservationsystem>activityroomreservationsystem.sql

准备软件

  • Xshell(用于远程操作服务器)
  • Xftp(用于从客户端将项目包上传到服务器)
  • Navicat 12 (用于同步数据库)
  • 系统:Ubuntu16.04 64位

Xshell链接

查看sshd是否存在

ps -ef|grep sshd

image-20210419005114132

启动sshd服务

sudo service sshd start

出现sshd.service为找到,说明ssh未安装(通过查看/ect/init.d目录下是否有ssh判读是否有ssh);

image-20210419005442459

安装sshd,并启动

sudo apt-get install openssh-server
sudo service sshd start

如果启动服务后,还是连接失败,尝试重启ssh

service ssh restart

image-20210418204240876

Xftp上传项目包

配置IP

为网卡配置静态IP地址

编辑文件/etc/network/interfaces:

sudo vi /etc/network/interfaces

并用下面的行来替换有关eth0的行:

auto ens33
iface ens33 inet static
address 172.18.xx.xx
gateway 172.18.xx.xx
netmask 255.255.255.0
dns-nameserver 172.17.xx.x 172.17.xx.x

内容解释:

 address 要设置的静态ip
 gateway  网关
 netmask 子网掩码
 dns-nameserver dns  (注释:有多个dns 用空格分开就行)

根据你的情况填上所有诸如address,netmask,network,broadcast和gateways等信息:

image-20210418201642725

用下面的命令使网络设置生效,一定要重启才能成功:

reboot 重启系统,设置完成。

安装Python3.7

方式1(不成功)

会访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑

sudo apt-get update

用于添加ppa源的小工具,ubuntu server默认没装

sudo apt-get install software-properties-common

添加源

sudo add-apt-repository ppa:deadsnakes/ppa

升级apt索引,如果过程中遇到卡在wait header,试试先sudo apt clean再update

sudo apt update

安装python3.7

sudo apt-get install python3.7

移到/user/bin

cd /usr/bin

过滤并查看python

ls -l | grep python

移除python

sudo rm python

建立软链接

sudo ln -s python3.7 python

查看python链接,一定要指向python3.7

python -V/python --version

安装源配置文件

sudo vim /etc/apt/sources.list

在文件结尾添加如下内容,保存并退出

deb http://cn.archive.ubuntu.com/ubuntu bionic main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-updates main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-security main multiverse restricted universe
deb http://cn.archive.ubuntu.com/ubuntu bionic-proposed main multiverse restricted universe

访问源列表里的每个网址,并读取软件列表,然后保存在本地电脑

sudo apt-get update
sudo apt-get upgrade

安装pip

sudo apt-get install python3-pip
改:
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

安装distutils

未安装成功:
sudo apt-get install python3-distutils

方式2(实测有用)

1.准备

在安装之前,请使用以下命令安装Python的先决条件。

sudo apt-get update
sudo apt-get install build-essential checkinstall
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev \
    libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

2.安装

使用python官方站点的以下命令下载Python。您也可以下载最新版本代替下面指定的版本。

cd /usr/src
sudo wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

sudo tar xzf Python-3.7.0.tgz
  1. 编译

使用下面的命令集来使用altinstall在您的系统上编译python源代码。

cd Python-3.7.0
sudo ./configure --enable-optimizations
sudo make altinstall

make altinstall用于防止替换默认的python二进制文件/ usr / bin / python。

4.检查Python版本

python3.7 -V

问题:安装python3.7出现ModuleNotFoundError: No module named ‘_ctypes’解决办法

解决办法:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev

配置虚拟环境

在当前目录下,创建一个python3.6的虚拟环境

python3.7 -m venv env37

进入虚拟环境

. env37/bin/activate

退出虚拟环境 deactivate

安装mysql

安装服务端

sudo apt-get install mysql-server -y

安装客户端

sudo apt-get install mysql-client

安装客户端与服务器的链接器

sudo apt-get install libmysqlclient-dev -y

配置远程连接权限

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 
# 英文输入环境下,敲 i 键,进入插入模式
#上下左右键移动光标,注释掉 bind-address = 127.0.0.1
#英文输入环境下,敲Esc键,输入:wq 保存退出

数据库重启:sudo service mysql start

上传项目

上传到用户家目录

zhg@ubuntu:~$ pwd
/home/zhg
zhg@ubuntu:~$ ls
ActivityRoomReservationSystem  env37

安装依赖包

进入虚拟环境

. env37/bin/activate

进入项目包

cd ActivityRoomReservationSystem

安装相关依赖包

pip3 install -r plist.txt

下载慢可用:

pip3 install -r plist.txt -i https://pypi.doubanio.com/simple

安装Django2.2

修改settings.py文件

移到项目包

cd ActivityRoomReservationSystem/ActivityRoomReservationSystem

修改ettings.py文件

vim settings.py

允许访问的文件

ALLOWED_HOSTS = ['*']

迁移数据

连接数据库

mysql -u root -p

建库

CREATE DATABASE `activityroomreservationsystem` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

数据还原

mysql -u root -p activityroomreservationsystem<activityroomreservationsystem.sql

安装uwsgi

进入虚拟环境

. env37/bin/activate

虚拟环境中安装uwsgi

pip3 install uwsgi

检测是否安装成功

cd ActivityRoomReservationSystem
uwsgi --http :8000 --module ActivityRoomReservationSystem.wsgi

#通过uwsgi启动项目,这一步必须在项目目录下操作执行
#ctrl+C键关闭项目服务状态
#fuser -k 8000/tcp
#关闭8000端口占用
#浏览器访问公网ip+8000 仍然可以正常访问,证明uwsgi安装成功

安装配置nginx

进入虚拟环境

. env37/bin/activate

安装nginx

cd ~
sudo apt install nginx -y

配置uwsgi与nginx连接

cd ActivityRoomReservationSystem
cp /etc/nginx/uwsgi_params .   #在项目目录下执行,注意后面这个点儿别落下 
#回到~目录下
cd ..

配置uwsgi.ini

vim uwsgi.ini
#进入uwsgi.ini,然后在英文输入下敲i键,进入插入模式,将以下内容填充进去(通过敲i键进入插入模式这一步不能省略,不然粘贴进去的内容会部分丢失)
#然后在英文输入下,Esc键,然后输入冒号wq+回车,保存退出。
[uwsgi]
chdir=/home/zhg/ActivityRoomReservationSystem
module=ActivityRoomReservationSystem.wsgi:application
home=/home/zhg/env37
master=true
processes=10
socket=:8001
chmod-socket = 666
vacuum=true

配置nginx

#cd 到项目目录下
vim ActivityRoomReservationSystem_nginx.conf
#新建进入了nginx.conf文件
#在英文输入法下,敲i键,进入可插入模式
#粘贴以下内容
upstream django {
    # server unix:/root/xueyiwang/xueyiwang.sock; # for a file socket
    server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
server {
    # the port your site will be served on
    listen      8000;
    # the domain name it will serve for
    server_name .example.com; # 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 /home/zhg/ActivityRoomReservationSystem/media;  # your Django project's media files - amend as required
    }

    location /static {
        alias /home/zhg/ActivityRoomReservationSystem/static; # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include   /home/zhg/ActivityRoomReservationSystem/uwsgi_params; # the uwsgi_params file you installed
    }
}

建立软链接

sudo ln -s /home/zhg/ActivityRoomReservationSystem/ActivityRoomReservationSystem_nginx.conf /etc/nginx/sites-enabled/

手机静态文件

#cd 到项目目录下执行
python manage.py collectstatic
#yes

最后测试

. env37/bin/activate
#修改settings.py中
DEBUG = False
cd ~
sudo service nginx restart
#重启nginx
#启动uwsgi
uwsgi --ini uwsgi.ini --enable-threads
#浏览器访问http://公网ip:8000 

备注可不用:在uwsgi配置中添加enable-threads = true

运行测试项目

进入虚拟环境

. env37/bin/activate

进入项目包

cd ActivityRoomReservationSystem

运行

python manage.py runserver 192.168.143.62:8000
python manage.py runserver 8.140.190.53:8000
posted @   昵称已经被使用  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示