zoukankan      html  css  js  c++  java
  • luffy的上线

    购买服务器

    # 购买阿里云服务器
    # 短期或是测试使用,创建 按量收费 服务器,可以随时删除,删除后不再计费,但要保证账户余额100元以上
    

    连接服务器

    1)账号
    >: ssh root@39.99.192.127
    
    2)密码
    >: ********
    

    服务器命令

    管理员权限
    1)以下所有的服务器命令均可以在管理员权限下执行
    >: sudo 命令
    
    配置终端
    1)编辑配置文件
    >: vim ~/.bash_profile
    
    2)将原来内容全部删除掉
    >: ggdG
    
    3)进入编辑状态:填入下方两行
    >: i
    
    export PATH=$PATH:$HOME/bin
    PS1='Path:w
    >:'
    
    4)退出编辑状态
    >: esc
    
    5)保存修改并退出
    >: :wq
    
    6)生效配置
    >: source ~/.bash_profile
    

    重要

    更新系统软件包
    >: yum update -y   更新源
    
    安装软件管理包和可能使用的依赖
    >: yum -y groupinstall "Development tools"   #开发者的工具包
    >: yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel   #系统依赖的
    
    检测是否成功:会将git作为依赖安装号
    >: git
    

    安装Mysql:Docker安装了

    1)前往用户根目录
    >: cd ~
    
    2)下载mysql57
    >: wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
    
    也可以本地上传,这条命令要在本地终端上执行
    >: scp -r C:UsersdellDesktoppkgmysql57-community-release-el7-10.noarch.rpm root@39.99.192.127:~
    
    3)安装mysql57
    >: yum -y install mysql57-community-release-el7-10.noarch.rpm
    >: yum -y install mysql-community-server
     Gkz:tY)!c51%
    4)启动mysql57并查看启动状态
    >: systemctl start mysqld.service
    >: systemctl status mysqld.service
    
    5)查看默认密码并登录
    >: grep "password" /var/log/mysqld.log
    >: mysql -uroot -p
    
    6)修改密码
    >: ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
    >: ALTER USER 'root'@'localhost' IDENTIFIED BY 'Owen1234?';
    

    安装Redis:Docker安装了

    1)前往用户根目录
    >: cd ~
    
    2)下载redis-5.0.5
    >: wget http://download.redis.io/releases/redis-5.0.5.tar.gz
    >: scp -r C:UsersdellDesktoppkg
    edis-5.0.5.tar.gz root@39.99.192.127:~
    
    3)解压安装包
    >: tar -xf redis-5.0.5.tar.gz
    
    4)进入目标文件
    >: cd redis-5.0.5
    
    5)编译环境
    >: make
    
    6)复制环境到指定路径完成安装
    >: cp -r ~/redis-5.0.5 /usr/local/redis  #将文件夹复制到 后面的文件夹
    
    7)配置redis可以后台启动:修改下方内容
    >: vim /usr/local/redis/redis.conf
    
    daemonize yes
    
    8)完成配置修改
    >: esc
    >: :wq
    
    9)建立软连接
    >: ln -s /usr/local/redis/src/redis-server /usr/bin/redis-server
    >: ln -s /usr/local/redis/src/redis-cli /usr/bin/redis-cli
    
    10)后台运行redis
    >: cd /usr/local/redis
    >: redis-server  &
    
    ctrl + c
    
    11)测试redis环境
    >: redis-cli
    ctrl + c
    
    12)关闭redis服务
    >: pkill -f redis -9
    

    安装Python3.6

    1)前往用户根目录
    >: cd ~
    
    2)下载 或 上传 Python3.6.7
    # 服务器终端
    >: wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz
    
    # 本地终端,给服务器上传
    >: scp -r 本地Python-3.6.7.tar.xz ssh root@39.99.192.127:服务器路径
    >: scp -r C:UsersdellDesktoppkgPython-3.6.7.tar.xz ssh root@39.99.192.127~
    
    3)解压安装包
    >: tar -xf Python-3.6.7.tar.xz
    
    4)进入目标文件
    >: cd Python-3.6.7
    
    5)配置安装路径:/usr/local/python3
    >: ./configure --prefix=/usr/local/python3
    
    6)编译并安装
    >: make && sudo make install
    
    7)建立软连接:终端命令 python3,pip3
    >: ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
    >: ln -s /usr/local/python3/bin/pip3.6 /usr/bin/pip3
    
    8)删除安装包与文件:
    >: rm -rf Python-3.6.7
    >: rm -rf Python-3.6.7.tar.xz
    

    配置pip源:阿里云不用配置,默认配置阿里源

    1)创建pip配置路径
    >: mkdir ~/.pip
    
    2)进入目录编辑配置文件:填入下方内容
    cd ~/.pip && vim pip.conf
    
    [global]
    index-url = http://pypi.douban.com/simple
    [install]
    use-mirrors =true
    mirrors =http://pypi.douban.com/simple/
    trusted-host =pypi.douban.com
    

    安装uwsgi

    1)在真实环境下安装
    pip3 install uwsgi
    
    2)建立软连接
    ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
    

    安装虚拟环境

    1)安装依赖
    >: pip3 install virtualenv
    >: pip3 install virtualenvwrapper
    
    2)建立虚拟环境软连接
    >: ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv
    
    3)配置虚拟环境:填入下方内容
    >: vim ~/.bash_profile
    
    VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    source /usr/local/python3/bin/virtualenvwrapper.sh
    
    4)退出编辑状态
    >: esc
    
    5)保存修改并退出
    >: :wq
    
    6)更新配置文件内容
    >: source ~/.bash_profile
    
    7)虚拟环境默认根目录:~/.virtualenvs
    

    安装Nginx

    1)前往用户根目录
    >: cd ~
    
    2)下载nginx1.13.7
    >: wget http://nginx.org/download/nginx-1.13.7.tar.gz
    
    3)解压安装包
    >: tar -xf nginx-1.13.7.tar.gz
    
    4)进入目标文件
    >: cd nginx-1.13.7
    
    5)配置安装路径:/usr/local/nginx
    >: ./configure --prefix=/usr/local/nginx
    
    6)编译并安装
    >: make && sudo make install
    
    7)建立软连接:终端命令 nginx
    >: ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
    
    8)删除安装包与文件:
    >: cd ~
    >: rm -rf nginx-1.13.7
    >: rm -rf nginx-1.13.7.tar.xz
    
    9)测试Nginx环境,服务器运行nginx,本地访问服务器ip
    >: nginx
    >: 服务器绑定的域名 或 ip:80
    

    Nginx命令

    1)启动
    >: nginx
    
    2)关闭nginx
    >: nginx -s stop
    
    3)重启nginx
    >: nginx -s reload
    
    4)查看端口,强行关闭
    >: ps -aux|grep nginx
    >: kill <pid:进程编号>
    

    路飞项目部署:Nginx + uwsgi + django + vue

    配置前台项目

    上线前配置

    settings.js
    base_url: 'http://39.99.192.127:8000',  // 真实环境:django项目就是跑在8000端口上的
    

    上线

    """
    # 本地终端操作
    1)本地项目打包,前往luffycity项目目录下
    >: cnpm run build
    
    2)本地终端上传
    >: scp -r dist root@39.99.192.127:~
    
    # 开始服务器连接,在服务器终端操作
    3)移动并重命名
    mv ~/dist /home/html
    
    4)去向Nginx配置目录,备份配置,完全更新配置:填入下方内容
    >: cd /usr/local/nginx/conf
    >: mv nginx.conf nginx.conf.bak
    >: vim nginx.conf
    >: i
    
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        server {
            listen 80;
            server_name  127.0.0.1; # 改为自己的域名,没域名修改为127.0.0.1:80
            charset utf-8;
            location / {
                root /home/html; # html访问路径
                index index.html; # html文件名称
                try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题
            }
        }
    }   
    
    5)退出
    >: esc
    >: :wq
    
    6)重启nginx
    >: nginx -s reload
    """
    

    路飞后台部署

    本地操作

    上线前配置

    prod.py:上线的配置文件,内容拷贝dev.py,前身就是settings.py
    # 关闭测试环境
    DEBUG = False
    ALLOWED_HOSTS = [
        '39.99.192.127'  # 公网ip地址
    ]
    
    CORS_ORIGIN_ALLOW_ALL = True  # 允许所有跨域
    
    
    # 静态文件配置:上线后还有额外配置,见下方 后台样式问题
    STATIC_URL = '/static/'
    
    
    # 后台http根路径
    # BASE_URL = 'http://127.0.0.1:8000'
    BASE_URL = 'http://39.99.192.127:8000'
    # 前台http根路径
    # LUFFY_URL = 'http://127.0.0.1:8080'
    LUFFY_URL = 'http://39.99.192.127:80'
    # 订单支付成功的后台异步回调接口
    NOTIFY_URL = BASE_URL + '/order/success/'
    # 订单支付成功的前台同步回调接口
    RETURN_URL = LUFFY_URL + '/order/pay/success/'
    
    
    REST_FRAMEWORK = {
        # 渲染模块
        'DEFAULT_RENDERER_CLASSES': [
            'rest_framework.renderers.JSONRenderer',
            # 'rest_framework.renderers.BrowsableAPIRenderer',
        ],
        # ...
    }
    
    wsgi.py 、manage_prod.py该文件就是manage.py的一个副本)
    # 需要做上线修改的内容
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.prod')
    

    导出项目环境

    1)进入本地项目根目录
    >: cd 项目根目录
    
    2)本地导出项目环境
    >: pip3 freeze > packages.txt
    
    3)如果环境中有特殊的安装包,需要处理一下xadmin
    packages.txt中的
    	xadmin==2.0.1
    要被替换为
    	https://codeload.github.com/sshwsfc/xadmin/zip/django2
    

    项目提交到远程git仓库

    1)去向本地项目仓库
    >: cd 项目根目录
    
    2)本地版本库操作
    >: git status
    >: git add .
    >: git commit -m '项目2.0上线'
    
    3)提交到远程版本库
    >: git pull origin master
    >: git push origin master
    

    线上操作

    git同步上线项目

    1)创建存放后台项目的目录
    >: mkdir /home/project
    
    2)进入后台项目管理目录同步git仓库中的项目
    >: cd /home/project
    >: git clone https://gitee.com/doctor_owen/luffyapi.git
    

    项目虚拟环境

    1)创建线上luffy项目虚拟环境
    >: mkvirtualenv luffy
    >: workon luffy
    
    2)安装所需环境,在packages.txt所在目录下安装执行packages.txt文件
    >: pip install uwsgi
    >: pip install -r /home/project/luffyapi/packages.txt
    

    完成uwsgi与nginx后台项目配置

    """
    1)进行uwsgi服务配置,内容如下
    >: vim /home/project/luffyapi/luffyapi.xml
    
    <uwsgi>    
       <socket>127.0.0.1:8808</socket> <!-- 内部端口,自定义 --> 
       <chdir>/home/project/luffyapi/</chdir> <!-- 项目路径 -->            
       <module>luffyapi.wsgi</module>  <!-- luffyapi为wsgi.py所在目录名--> 
       <processes>4</processes> <!-- 进程数 -->     
       <daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
    </uwsgi>
    
    4)去向Nginx配置目录,备份配置,完全更新配置:填入下方内容
    >: vim /usr/local/nginx/conf/nginx.conf
    
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        server {
            listen 80;
            server_name  127.0.0.1; # 改为自己的域名,没域名修改为127.0.0.1:80
            charset utf-8;
            location / {
                root /home/html; # html访问路径
                index index.html; # html文件名称
                try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题
            }
        }
        # 新增的server
        server {
            listen 8000;
            server_name  127.0.0.1; # 改为自己的域名,没域名修改为127.0.0.1:80
            charset utf-8;
            location / {
               include uwsgi_params;
               uwsgi_pass 127.0.0.1:8808;  # 端口要和uwsgi里配置的一样
               uwsgi_param UWSGI_SCRIPT luffyapi.wsgi;  #wsgi.py所在的目录名+.wsgi
               uwsgi_param UWSGI_CHDIR /home/project/luffyapi/; # 项目路径
            }
        }
    } 
    """
    

    数据库设置:docker中操作

    1)管理员连接数据库
    >: mysql -uroot -pOwen1234?
    
    2)创建数据库
    >: create database luffyapi default charset=utf8;
    
    3)设置权限账号密码:账号密码要与项目中配置的一致
    >: grant all privileges on luffyapi.* to 'luffyapi'@'%' identified by 'Luffy123?';
    >: grant all privileges on luffyapi.* to 'luffyapi'@'localhost' identified by 'Luffy123?';
    >: flush privileges;
    
    4)退出mysql
    >: quit;
    

    完成项目的数据库迁移:Django采用2.0.7

    # 必须在luffy环境下
    1)数据库迁移
    >: cd /home/project/luffyapi/
    >: python manage_prod.py migrate
    
    2)创建超级用户
    >: python manage_prod.py createsuperuser
    # 账号密码:admin|Admin123
    

    如何Django不是2.0.7的其他版本,数据库迁移保存解决方案:修改源码

    1)修改base.py源码
    >: vim /root/.virtualenvs/luffy/lib/python3.6/site-packages/django/db/backends/mysql/base.py
    
    方案:36,37行注释掉
    
    2)修改operations.py源码
    >: vim /root/.virtualenvs/luffy/lib/python3.6/site-packages/django/db/backends/mysql/operations.py
    
    方案:146行添加
    	query = query.encode()
    

    启动uwsgi,重启nginx测试

    """
    1)启动uwsgi
    >: uwsgi -x /home/project/luffyapi/luffyapi.xml
    
    2)重启nginx
    >: nginx -s reload
    """
    

    后台样式:admin、rest_framework、xadmin等框架的静态样式也需要处理

    修改线上配置
    1)编辑线上配置文件
    >: vim /home/project/luffyapi/luffyapi/settings/prod.py
    
    
    2)修改static配置,新增STATIC_ROOT、STATICFILES_DIRS
    STATIC_URL = '/static/'
    STATIC_ROOT = '/home/project/luffyapi/luffyapi/static'  
    STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)
    
    3)退出编辑
    >: esc
    >: :wq
    
    迁移静态样式:项目目录下
    1)项目目录下没有 static 文件夹需要新建
    >: mkdir /home/project/luffyapi/luffyapi/static
    
    2)完成静态文件迁移
    >: python /home/project/luffyapi/manage_prod.py collectstatic
    
    Nginx配置静态路径
    1)修改nginx配置
    >: vim /usr/local/nginx/conf/nginx.conf
    
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        server {
            listen 80;
            server_name  127.0.0.1; # 改为自己的域名,没域名修改为127.0.0.1:80
            charset utf-8;
            location / {
                root /home/html; # html访问路径
                index index.html; # html文件名称
                try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题
            }
        }
        server {
            listen 8000;
            server_name  127.0.0.1; # 改为自己的域名,没域名修改为127.0.0.1:80
            charset utf-8;
            location / {
               include uwsgi_params;
               uwsgi_pass 127.0.0.1:8808;  # 端口要和uwsgi里配置的一样
               uwsgi_param UWSGI_SCRIPT luffyapi.wsgi;  #wsgi.py所在的目录名+.wsgi
               uwsgi_param UWSGI_CHDIR /home/project/luffyapi/; # 项目路径
            }
            # 新增的配置静态文件
            location /static {
                alias /home/project/luffyapi/luffyapi/static;
            }
        }
    }
    
    2)退出
    >: esc
    >: :wq
    
    启动服务
    1)关闭 uwsgi,重新启动 uwsgi
    >: pkill -f uwsgi -9
    >: uwsgi -x /home/project/luffyapi/luffyapi.xml
    
    2)关闭 nginx,重新启动 nginx
    >: nginx -s stop
    >: nginx
    

    线上项目测试

    1)本地浏览器访问xadmin后台
    http://39.99.192.127:8000/xadmin
    
    2)登录,录入测试数据
    # 账号密码:admin|Admin123
    
    3)或是导出本地数据库为sql,再在线上导入sql
    >: mysql -h 39.99.192.127 -P 3306 -u luffy -p
    >: Luffy123?
    >: use luffy
    >: 复制之前的数据备份
    

    重点 重点 重点

    # 1、真实环境和虚拟环境都要安装uwsgi,将真实环境下的uwsgi建立软连接
    
    # 2、redis服务一定要后台启动:redis-server &
    
    # 3、uwsgi启动django项目一定要进入虚拟环境下,因为环境都是安装在虚拟环境中
    
    # 4、服务器的日志都会被记录在于uwsgi配置文件 luffyapi.xml 同类目下的 uwsgi.log 中
    
  • 相关阅读:
    IIS7中的几种身份鉴别方式(一)Basic身份验证
    IIS7中的几种身份鉴别方式(二)集成身份验证
    java集合
    SharePoint 2010中welcome page的设置细节
    SharePoint中使用Linq出现未将对象引用到实例化的解决方法
    SharePoint 2010中关于An error was encountered while retrieving the user profile的处理方式记录
    The Need for an Architectural Body of Knowledge
    The Softer Side of the Architect
    Event Receivers 学习小结
    使用SmtpClient发送带图片的邮件的代码实现
  • 原文地址:https://www.cnblogs.com/liqiangwei/p/14315109.html
Copyright © 2011-2022 走看看