本教程详细描述了如何简单实现在Linux服务器中部署django项目
未经允许请勿转载! 文章首发于在Linux服务器上简易部署django项目 | MakerHu的博客
- 安装好python3
- 创建虚拟环境
python -m venv /虚拟环境名称/
- 进入虚拟环境
cd /虚拟环境名/
- 进入bin目录
cd bin
- 运行虚拟环境
source activate
- 更新pip
pip install --upgrade pip
- 查看当前安装的模块
pip freeze
- 安装项目的django对应版本
pip install django==3.1.3
也可用清华镜像网安装(速度较快)
pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple django==3.1.3
- 再次查看安装模块
pip freeze
- 接着把项目在本地安装的模块都装到虚拟环境中(根据自身项目具体情况安装)
pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple pymysql
pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple cryptography
pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple apscheduler
- 安装http需要的模块
pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple gunicorn
- 安装bleach
pip install --upgrade -i https://pypi.tuna.tsinghua.edu.cn/simple bleach
- 在服务器中配置项目的数据库,这里以mysql为例(mysql需先在linux系统中安装好)
- 登录root
mysql -u root -p
- 创建项目数据库
create database cms;
- mysql创建新用户cmsmanager , 密码123456 (cmamanager为用户名, 123456为密码,可根据自己需要修改)
CREATE USER 'cmsmanager'@'%' IDENTIFIED BY '123456';
- 授予数据库cms的所有权限给cmsmanager
GRANT ALL PRIVILEGES ON cms.* TO 'cmsmanager'@'%';
如果登录cmsmanager账户时遇到错误ERROR 1045 (28000): Access denied for user 'cmsmanager'@'localhost' (using password: YES)
可能是因为你有一个用户名为空的账户,mysql会先匹配它,然后就一直提示你密码错误,需要删掉这个匿名用户,然后执行 FLUSH PRIVILEGES;
如下:Delete FROM user Where User='' and Host='localhost';
flush privileges;
14. 在django项目settings.py中配置好数据库
1 | DATABASES = { |
在django项目settings.py中允许所有主机访问
1 | ALLOWED_HOSTS = ["*"] |
将项目打包压缩(删掉虚拟环境)
将项目压缩包上传至服务器中刚创建的虚拟环境(见第2步)的根目录下(与bin目录同级)并解压,我用的远程连接服务器的工具是mobaxterm
在阿里云安全组中开放端口
如果不能访问端口
则
- 查看防火墙状态:
systemctl status firewalld
- 实例中已经安装Firewalld并且已经启用firewalld.service,若需要放行 TCP 5050端口,执行命令
firewall-cmd --add-port=5050/tcp --permanent
返回结果为success即表示已经放行TCP 5050端口(端口号根据自己需要修改)。 - 最后重新加载防火墙即可:
firewall-cmd --reload
- 最后,启动项目(这种方式如果关掉远程连接服务器的工具就停了,若要一直后台运行则跳过此步)
python manage.py runserver 0.0.0.0:5050
- 将项目后台运行(记得先启动虚拟环境:在虚拟环境的bin目录下
source activate
)
参考教程:https://www.cnblogs.com/yoyoketang/p/10593731.html
首先写一个启动文件:start.sh
在manage.py同级目录下vim start.sh
输入:1
2ps -aux | grep python|xargs kill -9
nohup python manage.py runserver 0.0.0.0:5050 >cms_website.out 2>&1 &编辑完成后按Esc建退出,输入
:wq
后按回车保存退出同理编辑停止文件stop.sh
在manage.py同级目录下vim stop.sh
输入:ps -aux | grep python|xargs kill -9
编辑完成后Esc退出,输入:wq
保存退出都编辑完成后授权这两个文件
chmod +777 start.sh
chmod +777 stop.sh
启动时输入:
./start.sh
关闭服务输入:
./stop.sh
查看实时日志
tail -f cms_website.out