• Ubantu server部署django/flask项目


    一、 在开发机上的准备工作:
    1. 用`pip freeze > requirements.txt`将当前环境的包导出到`requirements.txt`文件中,方便在部署的时候安装。
    2. 将项目上传到服务器上的`/srv`目录下。这里以`git`的形式为例。`scp`

    1 * git init
    2 * git remote add origin xxx.git
    3 * git add .
    4 * git commit -m 'first commit'
    5 * git pull origin master --allow-unrelated-histories
    6 * git push origin master

    二、 安装虚拟机及ubantu server:

    1.安装虚拟机VMware

    可在pc.qq.com下载,网上找秘钥安装

    1.安装Ubantu server,镜像下载地址:http://mirrors.163.com/ubuntu/,安装过程网上一大堆,参考https://jingyan.baidu.com/article/14bd256ee74dd7fb6d2612b5.html,注意镜像界面填写163地址

    2.安装python及pip

    Ubantu server18.04版本自带python3,desktop版本可以通过命令下载,Ubantu Desktop18.04自带python2.7,需要指定版本下载,如sudo apt install python3.6

    python安装镜像推荐: -i https://pypi.doubanio.com/simple 或 https://pypi.tuna.tsinghua.edu.cn/simple

    1 * sudo apt install python3
    2 * sudo apt install python3-pip
    3 * pip install --upgrade pip  -i https://pypi.doubanio.com/simple

     如果apt install python-pip,貌似会把直接把python2.7下下来,pip也是python2.7的,卸载方法:

    sudo apt-get remove --auto-remove python2.7,可将依赖包完全卸掉,包括pip。如单纯sudo apt-get remove python2.7,提示卸载成功,但是实际上没卸载掉

    下载后可通过which pip3查找执行文件在哪

     python的pip下载镜像系统修改,root目录中新建.pip文件夹,在pip.conf添加镜像

      1. [global]
      2. index-url = https://pypi.tuna.tsinghua.edu.cn/simple

     

     制定Python3.6为默认版本:先删除默认的Python软链接:sudo rm /usr/bin/python,

    然后创建一个新的软链接指向需要的Python版本:sudo ln -s /usr/bin/python3 /usr/bin/python

    三、安装Xshell

    方便在开发机上连接ubantu服务器,在Windows腾讯软件下载安装Xshell,在ubantu中下载安装ssh客户端及服务器

    1 sudo apt install openssh-server openssh-client
    2 service ssh restart

    在ubantu中ipconfig查看IP地址,系统安装时NET模式,由主机自动分配IP 

     

    连接成功!

    四、 安装`virtualenv`以及`virutalenvwrapper`创建虚拟环境

    可直接安装virtualenvwrapper包,会自动将依赖包virtualenv下载,1步可以省

    1 * pip3 install virtualenv
    2 * pip3 install virtualenvwrapper

    在¥HOME目录新建.virtualenvs目录,用于存放虚拟环境文件。

    添加环境变量:

    * sudo apt install vim
    * vim ~/.bashrc 进入文件中,填入以下两行代码:

    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh

    执行source ~/.bashrc,没有提示就是成功。如提示No such direction or file,可能是执行文件不对,which virtualenvwrapper.sh查看安装在哪了,source目录对应修改。

    在本角色下mkvirtualenv XXname新建虚拟环境名,如用root权限则报错,命令行前面有(XXname)代创建成功

    常用命令:退出命令:deactivate,使用进入命令workon XXname,删除命令:rmvirtualenv XXname,列出虚拟环境表:lsvirtualenv,快速进入激活虚拟环境所在目录:cdvirtualenv

     五、安装mysql数据库

    sudo apt install mysql-server mysql-client

    安装后需用root用户有权限使用,直接输入mysql进去后更改密码,具体详见https://www.cnblogs.com/iamorz/p/12883266.html

    创建开发使用的数据库,create databases falsk_bbs charset utf8;

     六、安装其他所使用工具

    项目中使用memcached,sudo apt install memcached

    安装成功后,telnet 127.0.0.1 11211链接,set username 0 60 5 hello设置值,get username取值,quit退出

    七、上传至码云

    开发机上cmd终端cd切到项目所在文件夹,pip freeze > requirements.txt生成依赖文件包,以备pip install -r requirements.txt安装使用

    将代码上传至码云:https://gitee.com/profile。登录成功后,新建仓库(以前叫新建项目),可起中文名,对应路径自动给翻译成英文(眼前一亮!)

     

    选择私有(暂时不花钱)或公开,在克隆/下载处可复制项目git地址

    安装Git软件,在pc.qq.com腾讯软件(很强大)管理中下载一顿下一步安装。

    安装成功后,鼠标右键会多出两个选项(Git Gui Here、Git Bash Here),在项目所在文件夹下, 鼠标右键选择Git Bash Here

    首次使用设置用户名和密码。git config --global user.name "bryan sun" ,git config --global user.email "hitsjt@gmail.com"

    1 git init  //初始化为GIT可管理的包
    2 git remote add origin xxx.git  //与码云Git代码地址进行关联
    3 git add .
    4 git commit -m 'first commit'  //确认添加所有文件
    5 git pull origin master --allow-unrelated-histories  //需输入码云账号密码,从码云上拉下代码,第一次拉空项目后,开发机文件夹下多出README.MD文件
    6 git push origin master  //将项目推到码云Git地址中

    此时登录码云刷新,即可看到项目已上传成功!

     八、Ubantu服务器pull代码下来

    安装git,atp install git ,ubantu server貌似自带git

    cd进入/srv/目录mkdir一个文件夹,进入后git init初始化为git管理包,git remote add origin <git_url地址>,git pull origin master从码云上拉下项目代码

    如果再次从git拉代码,会提示已经存在,是否保留本地修改两种方式:

    保留:git stash的时候会把你本地快照,然后git pull 就不会阻止你了,pull完之后这时你的代码并没有保留你的修改。

    git stash

    git pull origin master

    git stash pop

    不保留:直接将本地的状态恢复到上一个commit id 。然后用远程的代码直接覆盖本地就好了。

    git reset --hard

    git pull origin master 

     workon 虚拟环境中,安装所有需要的依赖包:pip install -r requirements.txt -i https://pypi.doubanio.com/simple

    安装过程中,如果出现某依赖包版本异常则回滚停止,需要删掉requirements.txt中的依赖包再继续,后续另行安装

    出现ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output错误,则更新pip及setuptools

     提示Successfully installed balabala则代表安装成。

    进入虚拟环境项目所在文件夹下,python xx.py简单测试下程序是否能跑通。

    九、安装uwsgi

    uwsgi是一个应用服务器,非静态文件的网络请求就必须通过他完成,他也可以充当静态文件服务器,但不是他的强项。uwsgi是使用python编写的,因此通过pip install uwsgi就可以了。(uwsgi必须安装在系统级别的Python环境中,不要安装到虚拟环境中)。
    使用命令uwsgi --http :8000 --wsgi-file /opt/zlbbs/zlbbs.py -callable app -H /root/.virtualenvs/zlbbs-env。用uwsgi启动项目,如果能够在浏览器中访问到这个页面,说明uwsgi可以加载项目了

    cd到项目目录下,新建uwsgi.ini文件,如不使用nginx,则使用http协议,如何配合nginx使用,则注释掉,采用socket通信,配置以下参数:

     1 [uwsgi]
     2 #http=0.0.0.0:8000
     3 # 指定项目目录
     4 chdir=/srv/Flask_bbs/
     5 # 指定python虚拟环境
     6 home=/root/.virtualenvs/flask_bbs
     7 # 指定加载的WSGI文件
     8 wsgi-file=main.py
     9 # 指定uWSGI加载的模块中哪个变量将被调用
    10 callable=app
    11 # 主进程
    12 master = true
    13 # 设置工作进程的数量
    14 processes=2
    15 # 设置每个工作进程的线程数
    16 threads=2
    17 # 将主进程pid写到指定的文件
    18 pidfile=%(chdir)/uwsgi.pid
    19 #设置后台运行,uwsgi.log保存日志信息
    20 daemonize=uwsgi.log
    21 # 日志文件
    22 req-logger=file:/srv/Flask_bbs/log/req.log
    23 logger=file:/srv/Flask_bbs/log/err.log
    24 # 退出的时候是否清理环境
    25 vacuum          = true

    然后使用命令uwsgi --ini zlbbs_uwsgi.ini运行

    如采用Http协议,运行后,在开发机同一网段内访问ubantu server的ip+端口号,即可访问了。  

    设置了主进程,kill -9 27355杀掉主进程,子进程响应关闭。

    十、安装nginx

    Nginx 是高效的 Web 服务器和反向代理服务器,可以用作负载均衡, 支持高并发,可以支持百万级的 TCP 连接,十万级别的并发连接,部署简单,内存消耗少,成本低。项目主要用他处理静态文件,动态文件交由uwsgi处理。

    安装nginx:sudo apt-get install nginx启动nginx服务:sudo service nginx start重载nginx服务:nginx -s reload

    在/etc/nginx/conf.d目录下,新建一个文件,叫做flask_bbs.conf,然后将以下代码粘贴进去:

     1 upstream flask_bbs {
     2     server unix:///srv/Flask_bbs/flask_bbs.sock; 
     3 }
     4
     5 # 配置服务器
     6 server {
     7     # 监听的端口号
     8     listen      80;
     9     # 域名
    10     server_name 192.168.153.128; 
    11     charset     utf-8;
    12 
    13     # 最大的文件上传尺寸
    14     client_max_body_size 75M;  
    15 
    16     # 静态文件访问的url
    17     location /static {
    18         # 静态文件地址
    19         alias /srv/Flask_bbs/static; 
    20     }
    21 
    22     # 最后,发送所有非静态文件请求到flask服务器
    23     location / {
    24         uwsgi_pass  flask_bbs;
    25         # uwsgi_params文件地址
    26         include     /etc/nginx/uwsgi_params; 
    27     }
    28 }

    写完配置文件后,为了测试配置文件是否设置成功,运行命令:service nginx configtest,如果不报错,说明成功。
    每次修改完了配置文件,都要记得运行service nginx restart

     在同一网段下,输入ubantu server的ip地址即可,项目已跑通!

  • 相关阅读:
    顺序 | order (Flexible Box Layout)
    顶部边距 | margin-top (Basic Box Model)
    面具重复 | mask-repeat (Masking)
    面具类型 | mask-type (Masking)
    面具模型 | mask-mode (Masking)
    面具大小 | mask-size (Masking)
    面具图像 | mask-image (Masking)
    mycat 只分库,不分表,并且主从读写分离范例
    《风控模型—WOE与IV指标的深入理解应用》
    《风控模型—群体稳定性指标(PSI)深入理解应用》
  • 原文地址:https://www.cnblogs.com/iamorz/p/12899520.html
Copyright © 2020-2023  润新知