1、在开发机上的准备工做java
一、 确认项目没有bug。python
二、设置`ALLOW_HOST`为你的域名,以及ip地址。mysql
四、设置`DEBUG=False`,避免若是你的网站产生错误,而将错误信息暴漏给用户。nginx
四、用 cmd 进入项目所在的虚拟环境目录下,用`pip freeze > requirements.txt`命令将当前环境的包导出到`requirements.txt`文件中,方便在部署的时候安装。git
五、安装 git 后,在项目文件所在的目录下右键,打开 “Git Bash Here”,再使用 git 命令将项目上传到 GitHub上(在GitHub上新建一个项目);web
(git 命令:https://gitee.com/liaoxuefeng/learn-java/raw/master/teach/git-cheatsheet.pdf)sql
1 git init # 把这个文件夹变成Git可管理的仓库; 2 git remote add origin xxx.git # 关联远程的项目,xxx.git为GitHub新建项目的仓库地址(HTTPS); 3 git add . # 将本地代码添加到git管理的仓库中; 4 git commit -m 'first commit' # 再把项目提交到仓库; 5 git pull origin master --allow-unrelated-histories # 将远程代码拉到本地进行合并; 6 git push origin master # 将本地库的代码推送到远程仓库(即GitHub上)。
参考博客:http://www.javashuo.com/article/p-orbpxlnn-es.htmlshell
2、使用Xshell链接虚拟机上的ubuntu_server服务器(安装服务器:http://www.javashuo.com/article/p-evhumaun-cb.html)数据库
一、ubuntu_server配置:django
二、在Xshell新建链接,IP为服务器IP地址,在用户身份验证中填写服务器的用户与密码,链接后在Xshell上操做ubuntu_server;
三、修改 apt 源,先复制 cources.list 文件,再使用 vi sources.list 编辑内容,删除其余内容,再添加阿里云的 apt 源;
1 # 阿里云源; 2 deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties 3 deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted 4 deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties 5 deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted 6 deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties 7 deb http://mirrors.aliyun.com/ubuntu/ xenial universe 8 deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe 9 deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse 10 deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse 11 deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse 12 deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties 13 deb http://archive.canonical.com/ubuntu xenial partner 14 deb-src http://archive.canonical.com/ubuntu xenial partner 15 deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted 16 deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties 17 deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe 18 deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
最后更新源:apt update 。
3、在服务器上的准备工做
一、安装好 python :pip install python *(*:版本号) & sudo apt install python-pip --reinstall(卸载pip: sudo python -m pip uninstall pip)
二、安装 “virtualenv” 和 “virtualenvwrapper”:
1 export WORKON_HOME=$HOME/.virtualenvs 2 source /usr/local/bin/virtualenvwrapper.sh
三、安装`OpenSSH`,方便XShell或者CRT链接服务器:
四、安装 “MySQL”数据库和客户端:apt install mysql-server mysql-client ,
五、安装时会一块儿建立 mysql ,而后使用帐号密码登陆:mysql -uroot -proot,建立相应的数据库:create database *** charset utf8;(*:与项目的数据库名一致);而后退出并在虚拟环境中运行:python manage.py migrate , 将迁移文件映射到数据库中;
而后编辑 mysql.cnf 文件,找到 bind-address = 127.0.0.1 并将其注释掉;
再登陆进入 mysql 中,使用如下命令受权其它机器能够链接,以便在本地使用 navicate 链接服务器端的数据库,进行数据传输,再重启mysql ;
1 # user 与 password 与数据库的信息一致; 2 GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; 3 FLUSH PRIVILEGES;
六、在 navicate 中进行数据传输,新建与服务器一致的 MySQL ,再进行数据传输;
七、安装 “memcached”:apt install memcached ,
八、在Xshell上将项目拉到服务器上:
九、运行服务器查看项目:python manage.py runserver 0.0.0.0:8000
十、在虚拟环境下收集静态文件:python manage.py collectstatic (后面的 nginx 需用到)
十一、更改项目内容时,先在 git 运行:
而后在 Xshell 运行:git pull origin master
4、安装uwsgi
1.、uwsgi:是一个应用服务器,用来完成非静态文件的网络请求,也可充当静态文件服务器,但不是强项。uwsgi 是使用python编写的。安装: pip install uwsgi ( uwsgi 必须安装在系统级别的Python环境中,不要安装到虚拟环境中)。
二、启动项目:uwsgi --http :8000 --module ***.wsgi --vritualenv /root/.virtualenvs/虚拟环境名称(*:当前项目名称)。如在浏览器中访问到这个页面,说明`uwsgi`能够加载项目。
三、可在当前项目的路径下面,建立一个文件:`项目名+_uwsgi.ini`的文件,并编辑该文件
1 [uwsgi] 2 3 # Django相关的配置 4 # 必须所有为绝对路径 5 # 项目的路径 6 chdir = /srv/zhiliaoketang 7 # Django的wsgi文件 8 module = zhiliaoketang.wsgi 9 # Python虚拟环境的路径 10 home = /root/.virtualenvs/django-env-py2 11 12 # 进程相关的设置 13 # 主进程 14 master = true 15 # 最大数量的工做进程 16 processes = 10 17 # socket文件路径,绝对路径 18 socket = /srv/zhiliaoketang/zhiliaoketang.sock 19 # 设置socket的权限 20 chmod-socket = 666 21 # 退出的时候是否清理环境 22 vacuum = true
而后使用命令 uwsgi --ini zhiliaoketang.ini ,用来启动项目。
5、安装nginx
一、 nginx:是一个 web 服务器。用来加载静态文件和接收 http 请求。安装:sudo apt install nginx
二、经常使用命令:
三、收集静态文件:
静态文件由 nginx 来服务,而不是django。首先确保在项目的`settings.py`文件中有一个`STATIC_ROOT`配置,该配置指定静态文件存放在哪一个目录下。
执行命令: python manage.py collectstatic 来收集全部静态文件,将这些静态文件放在指定的目录下。
1 # 在项目目录的虚拟环境下运行 2 (django-env-py3) root@li:/srv/xfz# python manage.py collectstatic
1 # settings.py 文件下静态文件存放路径; 2 3 STATIC_URL = '/static/' 4 STATIC_ROOT = os.path.join(BASE_DIR,'front','static_dist') 5 STATICFILES_DIRS = [ 6 os.path.join(BASE_DIR,'front','dist'), 7 ]
四、在`/etc/nginx/conf.d`目录下,新建一个文件`touch + 项目名.conf`,而后编辑该文件:
1 # xfz:我的项目名 2 upstream xfz{ 3 server unix:///srv/xfz/xfz.sock; 4 } 5 6 # 配置服务器 7 server{ 8 # 监听的端口号 9 listen 80; 10 11 # 我的域名 12 server_name 192.168.164.128; 13 charset utf-8; 14 15 # 文件最大上传限度 16 client_max_body_size 75M; 17 18 # 静态文件访问的url 19 location /static{ 20 # 静态文件地址 21 alias /srv/xfz/front/static_dist; 22 } 23 24 # 访问图片 25 location /image/{ 26 root /usr/xfz/media/; 27 autoindex on; 28 } 29 30 # 发送非静态文件请求到django服务器 31 location / { 32 uwsgi_pass xfz; 33 # uwsgi_params 文件地址 34 include /etc/nginx/uwsgi_params; 35 } 36 }
五、写完配置文件后,测试配置文件是否设置成功: service nginx configtest 不报错,说明成功。
六、每次修改完了配置文件,运行: service nginx restart
6、supervisor配置
supervisor:用来管理 uwsgi,能够在 uwsgi 发生意外的状况下,会自动的重启。(nginx:自己是守护进程,会自动重启)
一、 安装:pip install supervisor(系统级别的python环境下)
二、 在项目的根目录下建立一个文件 :`touch + 项目名 + _supervisor.conf`,再建立一个文件夹 “log”;
三、而后编辑新建文件内容:
1 # supervisor的程序名字 2 [program:mysite] 3 # supervisor执行的命令 4 command=uwsgi --ini zlkt_uwsgi.ini 5 # 项目的目录 6 directory = /srv/zhiliaoketang 7 # 开始的时候等待多少秒 8 startsecs=0 9 # 中止的时候等待多少秒 10 stopwaitsecs=0 11 # 自动开始 12 autostart=true 13 # 程序挂了后自动重启 14 autorestart=true 15 # 输出的log文件 16 stdout_logfile=/srv/zhiliaoketang/log/supervisord.log 17 # 输出的错误文件 18 stderr_logfile=/srv/zhiliaoketang/log/supervisord.err 19 20 [supervisord] 21 # log的级别 22 loglevel=info 23 24 # 使用supervisorctl的配置 25 [supervisorctl] 26 # 使用supervisorctl登陆的地址和端口号 27 serverurl = http://127.0.0.1:9001 28 29 # 登陆supervisorctl的用户名和密码 30 username = admin 31 password = 123 32 33 [inet_http_server] 34 # supervisor的服务器 35 port = :9001 36 # 用户名和密码 37 username = admin 38 password = 123 39 40 [rpcinterface:supervisor] 41 supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
四、编辑退出后的运行命令:supervisord -c xfz_supervisor.conf (xfz:我的项目名)
五、如想启动`uwsgi`,可以使用命令 supervisorctl -c supervisor.conf 进入到管理控制台,而后执行相关的命令进行管理:
大概流程图: