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
导入项目
将项目文件夹→右键→添加压缩文件,压缩为zip包
数据迁移
mysqldump -u root -p activityroomreservationsystem>activityroomreservationsystem.sql
准备软件
- Xshell(用于远程操作服务器)
- Xftp(用于从客户端将项目包上传到服务器)
- Navicat 12 (用于同步数据库)
- 系统:Ubuntu16.04 64位
Xshell链接
查看sshd是否存在
ps -ef|grep sshd
启动sshd服务
sudo service sshd start
出现sshd.service为找到,说明ssh未安装(通过查看/ect/init.d目录下是否有ssh判读是否有ssh);
安装sshd,并启动
sudo apt-get install openssh-server
sudo service sshd start
如果启动服务后,还是连接失败,尝试重启ssh
service ssh restart
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等信息:
用下面的命令使网络设置生效,一定要重启才能成功:
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
- 编译
使用下面的命令集来使用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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通