zoukankan      html  css  js  c++  java
  • 项目上线全程

    1.买服务器,掏钱吧

    2.连上服务器,22端口改一下,默认密码改复杂一点.其他的随意, 再adduser 一个个人账户, 没事别用root

    给它加上sudo权限

    usermod -a -G sudo wqk
    # 再确认一下
    groups wqk
    切换到wqk
    su wqk

    3.安装虚拟环境,隔离项目

    可以用pip或者apt安装,这里我们选择pip

    a. 查看pip版本
              查看pip版本: pip -V
            查看pip3版本: pip3 -V
        b. 安装pip(如果存在则不需要安装)
            安装pip3: apt install python3-pip    
             安装pip2: apt install python-pip    
        c. 更新pip
              更新pip (如果pip版本高于9.0则不需要更新): 
                  更新pip3: pip3 install --upgrade pip
                 更新pip: pip install --upgrade pip
     
             注意: 更新后如出现以下错误(这是pip 10.0.0版本的BUG):
                Traceback (most recent call last): 
                File “/usr/bin/pip”, line 9, in 
                from pip import main
    
                解决方法:修改对应pip文件中的代码(pip和pip3类似)
                      例如更新pip时报错则需要修改 /usr/bin/pip 文件中的代码,
                    使用: sudo vim /usr/bin/pip 打开pip文件
                    将:          
                        from pip import main
                        if __name__ == '__main__':
                            sys.exit(main())
                    改成:
                        from pip import __main__
                        if __name__ == '__main__':
                            sys.exit(__main__._main())
    
            
        d. pip命令
              pip install xxx:安装xxx依赖包
            pip list:查看所有依赖包
            pip freeze:查看新安装的包
            pip uninstall xxx :卸载xxx包
    
    1.3, virtualenv和virtualenvwrapper 的安装和使用
       【请使用普通用户】 
        a. 安装虚拟环境
              sudo apt update
              sudo pip3 install virtualenv virtualenvwrapper
            sudo pip install virtualenv virtualenvwrapper
            sudo apt install virtualenv virtualenvwrapeer
            
            
            mkvirtualenv env3 -p /usr/bin/python3
              安装后如果不能使用虚拟环境命令,则需要配置环境变量
                1, 进入家目录: cd ~
                2, 使用vim打开.bashrc, 定位到最后:shift+g,并添加以下2行代码(注意修改自己Ubuntu的用户名)
                        export WORKON_HOME=/home/wqk/.virtualenvs
                        source /usr/local/bin/virtualenvwrapper.sh
                3, 在家目录创建.virtualenvs目录: mkdir .virtualenvs
                4, 加载修改后的设置,使之生效:source .bashrc
                (如果找不到virtualenvwrapper.sh,
                 则将路径改成/usr/local/bin/virtualenvwrapper.sh
                 然后重试 )
          b. 创建虚拟环境: 
              mkvirtualenv env  
              mkvirtualenv env2 -p /usr/bin/python3  (指定python路径)
          c. 退出虚拟环境
              deactivate 
        d. 进入虚拟环境: 
              workon 虚拟环境名称

    如果workon的时候报错 你还要将virtualenvwrapper.sh文件里的which python 升级为 which python3
    并且插入如下代码:

    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

    export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
     

     4.虚拟环境里面安装库文件,  一般从开发环境里面pip -freeze > environment.txt直接拿出来  然后pip install -r environment.txt 进行安装

    5.安装nginx,配置uwsgi,配置文件如下

    nginx安装和卸载:

    sudo apt-get install nginx
    sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。
    sudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件。
    user www-data;
    worker_processes auto;
    pid /run/nginx.pid;
    include /etc/nginx/modules-enabled/*.conf;
    
    events {
        worker_connections 768;
        # multi_accept on;
    }
    
    http {
    
        ##
        # Basic Settings
        ##
    
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;
    
        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;
    
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
    
        ##
        # SSL Settings
        ##
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;
    
        ##
        # Logging Settings
        ##
    
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
    
        ##
        # Gzip Settings
        ##
    
        gzip on;
    
        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
        
        server{
            listen 80 default_server;
            server_name localhost;
            
            
            location /static {
                alias /var/www/MZMARKET/MZMARKET/static;
            }
    
            location / {
                include /etc/nginx/uwsgi_params;
                uwsgi_pass 127.0.0.1:8888;
            
            }
        }
    
        ##
        # Virtual Host Configs
        ##
    
        include /etc/nginx/conf.d/*.conf;
        # include /etc/nginx/sites-enabled/*;
    }
    
    
    #mail {
    #    # See sample authentication script at:
    #    # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
    # 
    #    # auth_http localhost/auth.php;
    #    # pop3_capabilities "TOP" "USER";
    #    # imap_capabilities "IMAP4rev1" "UIDPLUS";
    # 
    #    server {
    #        listen     localhost:110;
    #        protocol   pop3;
    #        proxy      on;
    #    }
    # 
    #    server {
    #        listen     localhost:143;
    #        protocol   imap;
    #        proxy      on;
    #    }
    #}

    uwsgi需要pip3 install进行安装

    [uwsgi]
    # 使用nginx连接时 使用
    socket=0.0.0.0:8888
    
    # 直接作为web服务器使用
    # http=0.0.0.0:8888
    # 配置工程目录
    chdir=/var/www/OnlinePay
    
    # 配置项目的wsgi目录。相对于工程目录
    wsgi-file=OnlinePay/wsgi.py
    
    #配置进程,线程信息
    processes=4
    
    threads=10
    
    enable-threads=True
    
    master=True
    
    pidfile=uwsgi.pid
    
    daemonize=uwsgi.log

    supervisord.conf

    ;[include]
    ;files = relative/directory/*.ini
    [program:celery.worker] 
    ;指定运行目录 
    directory=/var/www/OnlinePay
    ;运行目录下执行命令
    command=celery -A OnlinePay worker --loglevel=info --concurrency=1

     额外的apt install知识

    apt-get install
    一键安装软件包,与源码安装不同的是,这个指令会自动检测并安装依赖,而且用apt-get安装的包都是成熟的软件包,基本不存在安装包有严重bug或者文件缺失的情况。
    
    sudo apt-get install -y
    这里主要将的就是-y选项,添加这个选项就相当于不需要重复地确认安装
    
    sudo apt-get install -q
    即-quiet,静默安装,当然也不是完全静默,会将低等级的log信息屏蔽。
    
    sudo apt-get remove
    既然有安装就会有卸载,remove指令就是卸载,值得注意的是,remove仅仅卸载软件,但是并不卸载配置文件
    
    sudo apt-get purge
    卸载指令,同时卸载相应的配置文件
    
    sudo apt-get autoremove
    这个就别用了,删除依赖库删的太多了

    5. 我们装下依赖库

    6.装下mysql

    sudo apt install mysql-server
    但是装mysql的时候经常遇到密码问题,给的默认密码也不能用,有时候root号都没有
    debian9默认安装的mysql密码重置语句为:
    UPDATE user SET Password = PASSWORD('12345678') WHERE user = 'root';

     UPDATE user SET plugin = 'mysql_native_password' WHERE user = 'root';

    +-----------+------+-------------------------------------------+-----------------------+
    | host | user | password | plugin |
    +-----------+------+-------------------------------------------+-----------------------+
    | localhost | root | *8BBA3B98FB48ECDB1980683A0D95F3343CAA2A6B | mysql_native_password |
    +-----------+------+-------------------------------------------+-----------------------+


    root密码重置:https://www.cnblogs.com/Owen-ET/p/9644727.html
    无root参考:
    https://blog.csdn.net/qq_37369726/article/details/101944373

    注意
    :跳过密码的设置在/etc/mysql/mysql.conf.d/mysqld.cnf里面

    记得:

    service mysql restart

    或者:

    /etc/init.d/mysqld restart

    7.把项目扔进去

    8. uwsgi --ini uwsgi.ini开启

    --reload uwsgi.pid 重启

    --stop uwsgi.pid 关闭

    9. 重启 nginx -s reload

    -s stop关闭

    10.测试项目

    11. 其他需要配置celery启动和 supervisor管理celery 单独写

    12. admin 样式丢失的问题:

    由于之前已建立了static目录,并保存了其他页面的依赖的静态文件,所有执行python manage.py collectstatic命令后,命令会发现static目录下已经存在了部分静态文件,因此命令行会报错。
    
    所以,将步骤改进为:
    
    1、在django项目中建立个temp的目录(临时目录,待会儿删除)
    
    2、在settings里把STATIC_ROOT设置为你刚才建立的temp目录
    
    比如:STATIC_ROOT = 'D:wampwwwdjangoprojectschatbot	emp'
    
    3、然后使用python manage.py collectstatic,这样django会自动把全部样式复制到temp目录
    
    4、打开temp,将admin复制粘贴至原有的而项目static目录下,并删除temp文件夹,STATIC_ROOT改为原先的项目static目录

     13.安全问题

    修改ssh端口 
    修改/etc/ssh/sshd_config,在Port 22下添加你的端口
    
    Port 22 
    Port YOUR_PORT 
    
    修改/etc/ssh/ssh_config,在Host *下添加你的端口
    
    Host * 
    Port 22 
    Port 你的端口 
    # ForwardAgent no 
    ... 
    
    重启ssh
    
    service ssh restart 
    
    查看状态
    
    netstat -an | grep "LISTEN "
  • 相关阅读:
    webpack 模块化 原理
    nodejs 程序 调试
    inno打包教程
    原生xhr、fetch 请求的拦截。mock 技术原理
    package.json 字段说明
    npm 依赖包 的管理【即 node_modules目录的设计原理】
    现在浏览器、webview 中 css的兼容性问题。
    安卓APP(H5本地打包apk应用)
    npm 脚本
    linux系统 离线安装node和nginx(即npm包)
  • 原文地址:https://www.cnblogs.com/djflask/p/12393249.html
Copyright © 2011-2022 走看看