Ⅰ 前置
1.django项目本地服务器部署正常运行;
2.云服务器配置2h4g,centos7.9系统,100M带宽;
3.mysql版本
[root@aaa ~]# mysql --version
mysql Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)
Ⅱ 背景
将本地正常运行django项目原配置部署到云服务器。
Ⅲ 详细描述
1.步骤一 搭建python环境
①创建虚拟环境;
②虚拟环境下载程序依赖包;
注意:centos系统自带2.7版本,指定安装为python3运行路径,也可以自己修改启动软连接。
2.步骤二 安装mysql数据库
①centos系统自带mariadb数据库,需删除后才能成功安装mysql;
删除指令
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
目前操作本地和云服务器mariadb都是5.5.56-2.el7.x86_64,
检查
rpm -qa|grep mariadb
后按照实际删除。
②mysql安装rpm -ivh mysql-community-server-8.0.20-1.el7.x86_64.rpm报错
处理:执行指令
yum install libaio
重新安装失败步骤。
③注意事项:
a.获取临时密码后重置登陆密码;
b.开启远程访问权限;
c.防火墙开启对外访问端口port(云服务器防火墙默认关闭,需自行开启);
# 防火墙状态查看
systemctl status firewalld
# 开启防火墙
systemctl start firewalld
d.mysql8版本密码策略为caching_sha2_password,django项目正常启动需要修改为mysql_native_password;
alter user 'root'@'%' identified with mysql_native_passowrd by 'your_password';
3.步骤三 安装git
①查看
git --version
②安装
yum install git
4.步骤四 安装nginx
直接复用本地服务器配置nginx.conf
5.步骤五 服务器配置
①确认防火墙开启
systemctl status firewalld
②防火墙开放数据库端口(不需远程非必要)
③防火墙开放web服务端口80
# 查看开放端口
firewall-cmd --zone=public --list-ports
# 开放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重载firewall配置
firewall-cmd --reload
# 开放端口移除80
firewall-cmd --zone=public --remove-port=80/tcp --permanent
6.步骤六 拉取项目(gitee)
git clone gitee_your_project_url
Ⅳ 运行问题
1. 启动程序后服务端查看运行正常,但是访问报400
问题解决:setting中正式环境ALLOWED_HOSTS未配置云服务所
在公网ip或者域名,加上后正常;
if 'ENVIRONMENT' in database_conf.keys():
if database_conf['ENVIRONMENT']:
ALLOWED_HOSTS = ["ip", 'http.cn', 'https.cn']
DEBUG = False
MEDIA_ROOT = "/home/dev_sources/"
MEDIA_URL = 'dev/photo/'
else:
DEBUG = True
MEDIA_ROOT = os.path.join(BASE_DIR, "static/")
MEDIA_URL = 'dev_photos/'
ALLOWED_HOSTS = ['*']
else:
DEBUG = True
MEDIA_ROOT = os.path.join(BASE_DIR, "static/")
MEDIA_URL = 'dev_photos/'
ALLOWED_HOSTS = ['*']
注:为了避免本地代码更新setting变换,做了一个local_conf配置识别环境,再正式环境中加入云服务器所在ip或者域名。
2.本地访问bootstrap页面样式正常,但是正式环境加载失败
问题解决:见【nginx】服务器部署--bootstrp样式访问异常
3.图片加载异常
原因:nginx配置
问题处理:增加项目用到全部图片格式
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico|JPG|PNG|GIF)$
{
expires 12h;
}
4.mysqlclient链接报错
问题解决:见【django】linux系统部署django项目mysqlclient下载失败
Ⅴ总结
over!