文章目录

  • 一、上线前准备
  • 二、阿里云机器购买
  • 三、上线架构图
  • 四、安装Git
  • 五、云服务器安装MySQL
  • 六、云服务器安装Redis
  • 七、云服务器安装源码安装Python
  • 八、云服务器安装Uwsgi
  • 九、安装虚拟环境
  • 十、安装nginx
  • 十一、前端项目部署
  • 十二、后端项目部署
    • 1)Git拉取最新代码安装依赖
    • 2)配置数据库
    • 3)迁移数据库
    • 4)使用Uwsgi启动Django
  • 十三、后台样式处理
  • 十四、路飞后台管理样式处理

一、上线前准备

1.把项目中需要的文件保留住 防止被.gitignore文件忽略导致上传运行失败(Logs做成包__init__)2.把测试的dev.py文件复制进prod.py中把里面数据都改成线上的配置即可(Debug=False, Alllwed_Hosts=['*'],数据库设置线上数据库,设置在配置文件中的路径改为线上)3.新建一个文件manage用来作为上线的主要文件(里面的Django配置文件设置成线上的配置),线上迁移变成python manage_pro.py makemigrations4.讲项目上传到git方便后期好做修改上传于拉取5.重点配置后台和前台地址 修改成上线服务器的地址 提交Git6.前端项目发送请求地址改为线上7.前端项目进行打包 npm run build(会出现一个Dist文件夹)压缩成压缩文件上传至云服务器即可

二、阿里云机器购买

一般的项目都是上传至公司的服务器运行 个人开发可以去购买网络云机器 把自己的项目跑在上面即可购买之后机器会得到一个公网Ip地址 任何人可以通过这个IP来访问到你的项目了把项目的安全组端口打开(项目常用的端口80808033066379

三、上线架构图

四、安装Git

方式一yum install git -y方式二:# 包含了git和一些别的开发需要软件yum -y groupinstall "Development tools" 源码安装python、redis需要有别的依赖支持yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel -y

五、云服务器安装MySQL

1.根路径cd ~  cd2.下载Mysql5.7wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm3.安装mysql5.7yum -y install mysql57-community-release-el7-10.noarch.rpmyum install mysql-community-server --nogpgcheck。# 注意输入Y4.启动mysql5.7systemctl start mysqld.service# 开启systemctl status mysqld.service# 查看状态5.查看默认密码并登录grep "password" /var/log/mysqld.log# 最后一句mysql -u root -p输入密码6.修改密码ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'

六、云服务器安装Redis

1.根路径cd ~  cd2.下载redis-5.0.5(源码包)wget http://download.redis.io/releases/redis-5.0.5.tar.gz3.解压安装包tar -xf redis-5.0.5.tar.gz4.进入目标文件cd redis-5.0.55.编译环境make6.复制环境到指定路径完成安装cp -r /root/redis-5.0.5 /usr/local/redis7.配置redis可以后台启动:修改下方内容vim /usr/local/redis/redis.conf修改内容: daemonize yes完成配置保存退出 esc :wq8.建立软链接ln -s /usr/local/redis/src/redis-server /usr/bin/redis-server# 就可以在根路径使用命令ln -s /usr/local/redis/src/redis-cli /usr/bin/redis-cli9.后台运行rediscd /usr/local/redisredis-server ./redis.conf &10.测试redis环境redis-clictrl+c结束11.关闭redis服务pkill -f redis -9

七、云服务器安装源码安装Python

1.源码安装python,依赖一些第三方zlib* libffi-develyum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel  -y2.根路径cd ~  cd3.下载Python3.8.6wget https://registry.npmmirror.com/-/binary/python/3.8.6/Python-3.8.6.tgz4.解压安装包tar -xf Python-3.8.6.tgz5.进入目标文件cd Python-3.8.66.配置安装路径 /usr/local/python3./configure --prefix=/usr/local/python387.编译并安装(如果报错说明缺少依赖)make && make installyun install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel  -y8.建立软链接ln -s /usr/local/python38/bin/python3 /usr/bin/python3.8ln -s /usr/local/python38/bin/pip3 /usr/bin/python3.89.删除安装包于文件rm -rf Python-3.8.8rm -rf Python-3.8.8.tar.xz

八、云服务器安装Uwsgi

1.根路径cd ~  cd2.安装uwsgipip3.8 install uwsgi3.建立软连接ln -s /usr/local/python38/bin/uwsgi /usr/bin/uwsgi

九、安装虚拟环境

1.安装依赖pip3.8 install virtualenvpip3.8 install -U virtualenvwrapper -i https://pypi.douban.com/simple/pip3.8 install virtualenvwrapper如果出现报错 敲以下命令python3.8 -m pip install --upgrade pippython3.8 -m pip install --upgrade setuptoolspip3.8 install pbr2.建立软连接ln -s /usr/local/python38/bin/virtualenv /usr/bin/virtualenv3.配置虚拟环境vim ~/.bash_profile# 复制以下内容VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.8source /usr/local/python38/bin/virtualenvwrapper.sh4.保存退出esc :wq5.更新配置文件内容source ~/.bash_profile6.创建虚拟环境mkvirtualenv -p python3.8 luffy

十、安装nginx

1.根路径cd ~  cd2.下载nginx1.13.7wget http://nginx.org/download/nginx-1.13.7.tar.gz3.解压压缩包 tar -xf nginx-1.13.7.tar.gz4.进入目标文件cd nginx-1.13.75.配置安装路径./configure --prefix=/usr/local/nginx6.编译并安装make && make install7.建立软链接ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx8.删除安装与文件cd ~rm -rf nginx-1.13.7rm -rf nginx-1.13.7.tar.xz9.测试Nginx环境 nginx# 启动nginx -s stop # 停止10.起进程netstat -nlp | grep 8011.查看进程ps aux | grep 80

十一、前端项目部署

1.把前端build的文件上传至服务器2.安装软件yum install -y unzipyum install lrzsz -y3.解压文件unzip dist.zip4.移动并重命名mv ~/dist /home/html5.备份nginx配置 更新配置 定制nginx做请求转发 负载均衡 静态文件代理cd /usr/local/nginx/confmv nginx.cong nginx.conf.bak# 备份vim nginx.confevents {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    server {        listen 80;        server_name  127.0.0.1;        charset utf-8;        location / {            root /home/html;            index index.html;        }    }} 6.重新加载配置文件nginx -s reload7.开启nginx与停止nginxnginx  nginx -s stop

十二、后端项目部署

1)Git拉取最新代码安装依赖

1. 在自己的项目里面把依赖 生成一个文件 上传pushpip freeze > requirements.txtpip add.pip commit -m '提交'pip push origin master2.克隆文件到云机器git clone 库地址3.拉取项目git pull origin master4.切换到luffy虚拟环境workon luffy5.安装依赖pip install -r requirements.txt# 如果出现安装不了的 编辑文件注释掉6.安装mysqlclientyum install mysql-devel -yyum install python-devel -yrpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022pip install mysqlclient

2)配置数据库

1.管理员链接数据库mysql -u root -p2.创建数据库create database luffy default charset=utf8;3.设置权限账号密码:账号密码要与项目中配置的一致grant all privileges on 用户名称.* to '数据库名称'@'%' identified by '数据库密码';grant all privileges on 用户名称.* to '数据库名称'@'localhost' identified by '数据库密码';flush privileges # 刷新权限4.退出mysqlquit;

3)迁移数据库

1. python manage_pro.py makemigrations2. python manage_pro.py migrate

4)使用Uwsgi启动Django

1.使用Uwsgi跑之前运行Djangopython manage_pro.py runserver 0.0.0.0:8000 # 这个时候使用公网就可以访问到了2.进行Uwsgi服务配置vim ./luffyapi.xml<uwsgi>   <socket>127.0.0.1:8888</socket>   <chdir>/home/luffy_api/</chdir>   <module>luffy_api.wsgi</module>   <processes>4</processes>   <daemonize>uwsgi.log</daemonize></uwsgi>3.启动uwsgiuwsgi -x ./luffyapi.xml4.查看uwsgi进程ps aux | grep uwsgi5.配置nginx 把8080的动态请求转发给8888端口vim /usr/local/nginx/conf/nginx.confevents {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    server {        listen 80;        server_name  127.0.0.1;        charset utf-8;        location / {            root /home/html;            index index.html;        }    }    # 新增的server    server {        listen 8080;        server_name  127.0.0.1;        charset utf-8;        location / {           include uwsgi_params;           uwsgi_pass 127.0.0.1:8888;           uwsgi_param UWSGI_SCRIPT luffy_api.wsgi;           uwsgi_param UWSGI_CHDIR /home/luffy_api/;        }    }} 6.重启nginxnginx -s reload

十三、后台样式处理

1. vim /usr/local/nginx/conf/nginx.confevents {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    server {        listen 80;        server_name  127.0.0.1;        charset utf-8;        location / {            root /home/html;            index index.html;            try_files $uri $uri/ /index.html; # 解决vue路由问题        }    }    # 新增的server    server {        listen 8080;        server_name  127.0.0.1;        charset utf-8;        location / {           include uwsgi_params;           uwsgi_pass 127.0.0.1:8888;           uwsgi_param UWSGI_SCRIPT luffy_api.wsgi;           uwsgi_param UWSGI_CHDIR /home/luffy_api/;        }    }} 2 .重启nginxnginx -s reload

十四、路飞后台管理样式处理

1.编辑线上配置文件vim /home/project/luffyapi/luffyapi/settings/pro.py2.修改static配置新增STATIC_ROOT、STATICFILES_DIRSSTATIC_URL = '/static/'STATIC_ROOT = '/home/luffy_api/luffy_api/static'  STATICFILES_DIRS = (os.path.join(BASE_DIR, "../static"),)esc:wq3.项目目录下没有 static 文件夹需要新建mkdir /home/luffy_api/staticmkdir /home/luffy_api/luffyapi/static# 两个luffy都创建4.完成静态文件迁移python /home/luffy_api/manage_pro.py collectstatic5.修改nginx配置vim /usr/local/nginx/conf/nginx.confevents {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    server {        listen 80;        server_name  127.0.0.1;        charset utf-8;        location / {            root /home/html;            index index.html;            try_files $uri $uri/ /index.html; # 解决vue路由问题        }    }    server {        listen 8080;        server_name  127.0.0.1;        charset utf-8;        location / {           include uwsgi_params;           uwsgi_pass 127.0.0.1:8888;           uwsgi_param UWSGI_SCRIPT luffyapi.wsgi;           uwsgi_param UWSGI_CHDIR /luffy_api/luffy_api/;        }        location /static {            alias /home/luffy_api/luffy_api/static;# 添加了这一句        }    }}6.重启nginxnginx -s reload