写在前面:从无到有的记录自己在疫情期间折腾的django项目,给自己的一个寄托!(不要拖延,经历了什么记录一下)
一、环境:阿里云ecs + python3.6 + django2.2.11 + mysql
二、过程(服务器端)
- 阿里云不要钱的一个月ecs服务器(真香)申请一下,就有了自己的云上实例,默认安装了python2,但我要安装python3.6(安装在了/usr/local/)
yum -y install gcc # 更新gcc,不至于带不动
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
tar -xvzf Python-3.3.0.tgz
cd Python-3.6.4
./configure --with-ssl
make
yum -y install zlib zlib-devel
sudo make install
具体参考https://www.cnblogs.com/sunshine-H/p/8117968.html
- 更换镜像源为清华大学源
cd ~
cd python3.6
mkdir .pip3
cd .pip3
touch pip.conf
vi pip.conf
vi粘贴(P)下面内容
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = mirrors.aliyun.com
- 配置虚拟环境
sudo pip install virtualenv
sudo pip install virtualenvwrapper
mkdir $HOME/.virtualenvs # 配置目录保存虚拟环境
下面这块内容vi修改到~/.bashrc
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
退出vi保存
source ~/.bashrc
mkvirtualenv -p python3 虚拟环境名称
workon 虚拟环境 # 使用虚拟环境
deactivate # 退出虚拟环境
rmvirtualenv 虚拟环境 # 删除虚拟环境
- 安装git
为图方便,用了yum安装,版本较低,若后续不满足再重新安装yum install git
配置项目
git config --global user.name "XXXX"
git config --global user.email "XXXXXXXXXX"
ssh-keygen -t rsa -C "用户邮箱"
cd ~/.ssh/;cat **.pub # 查看公钥
复制公钥添加到GitHub上(下面会说到)
- 克隆项目
- 安装包
- 留坑安装MySQL
- 暴露服务端口
sudo iptables -I INPUT -p tcp --dport 9090 -j ACCEPT
sudo iptables-save
-
安装MySQL5.7
参考了这篇文章https://www.jianshu.com/p/276d59cbc529 -
防火墙的配置
- centos7用的是firewalld 不是service iptables
- 查看firewall状态
systemctl status firewalld
, active显示deactivated表示没有开启。 - 开启防火墙
systemctl start firewalld
(重启后会恢复到原来的状态)systemctl enable firewalld
(重启后不会恢复到原来的状态) - 关闭防火墙
systemctl stop firewalld
(重启后会恢复到原来的状态)systemctl disable firewalld
(重启后不会恢复到原来的状态) - 防火墙开放80端口
firewall-cmd --zone=public --add-port=80/tcp [-permanent]
加上-permanent表示永久有效 - 查看防火墙开放的端口
firewall-cmd --list-ports
-
安装并配置nginx
- 下载到/usr/local/src
wget http://nginx.org/download/nginx-1.10.2.tar.gz
还有openssl、zlib(解压缩的)、purc() - 解压缩
tar -zvf x xx.tar.gz
- 安装 一般都是
.config && make && make install
配置文件不都一样。 - . 修改nginx的配置文件 /usr/loacl/nginx/nginx.conf 的 / location为
{ include uwsgi_params; uwsgi_pass 127.0.0.1:8080; uwsgi_read_timeout 2; }
与wsgi关联,这样启动服务的时候通过uwsgi启动 - 设置通过用户名密码访问nginx:
htpasswd -c /usr/local/nginx/passwd.db 用户名
;添加用户名密码:htpasswd -b /usr/local/nginx/passwd.db 用户名 密码
whereis nginx
找到nginx的安装目录,cd到该位置,开启nginx./sbin/nginx
重启nginx./sbin/nginx -s reload
- 下载到/usr/local/src
-
安装uwsgi并配置
pip install uWSGI==2.0.18
- 在项目的maage.py的同级新建一个uwsgi的配置文件my_uwsgi.ini
- 编辑该ini文件
-
``` [uwsgi] # uwsgi启动服务的端口 socket = :8080 # 项目的完整路径 chdir = /home/zhx/web_code/zhang/zhanghuixin # 相对于该配置文件(zhang_uwsgi.ini来说,项目里的wsgi文件) module = zhanghuixin.wsgi # 允许主进程的存在 master = true # 最大进程数,最好和服务器的核数相同 processes = 1 # 当服务器自动退出的时候自动清除环境,删除unix socket和pid文件 vacuum = true ```
- 配置完与应用对接,上面nginx里的配置有跟uwsgi的对接,现在就可以通过uwsgi来启动服务了
uwsgi -d --ini my_uwsgi.ini
,-d表示后台运行,需要注意的是,ps -ntlp查到pid,kill pid的命令只是让uwsgi重启的,如果要停止该进程,需要killall -s INT uwsgi
三、本地(win10端)
- pycharm新建项目文件夹,创建虚拟环境,安装完成后pycharm打开terminal没有自动用虚拟环境,需要手动cd到虚拟环境目录\scripts, 执行activate.bat激活运行
django-admin startprojects 项目名
python manage.py startapp 子应用名
- 更改settings.py的数据库配置
- 安装pymysql包,发现报错ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3,百度说可以安装mysqlclient包,直接pip安装又有报错,需要手动下载wle包,注意python版本要对应。
- 配置git
git init
创建.gitignor
git add .
git commit -m "first commit"
git config --global user.name "你的GitHub用户名"
git config --global user.email "你的GitHub注册邮箱"
ssh-keygen -t rsa -C "你的GitHub注册邮箱" # 添加公钥到远程仓库
关联本地仓库与远程
git remote add origin 远程仓库地址
git pull --rebase origin master # pull下来README文件
git push origin master
现在项目基本框架已经搭完,后续就是业务功能了!