文章目录 一、上线前准备 二、阿里云机器购买 三、上线架构图 四、安装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来访问到你的项目了把项目的安全组端口打开(项目常用的端口80 、8080 、3306 、6379 )
三、上线架构图
四、安装Git 方式一yum install git - y方式二: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. 7 wget http: // dev. mysql. com/ get/ mysql57- community- release- el7- 10 . noarch. rpm3. 安装mysql5. 7 yum - y install mysql57- community- release- el7- 10 . noarch. rpmyum install mysql- community- server - - nogpgcheck。4. 启动mysql5. 7 systemctl start mysqld. servicesystemctl status mysqld. service5. 查看默认密码并登录grep "password" / var/ log/ mysqld. logmysql - 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 .5 5. 编译环境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- serverln - 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.6 wget 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 .6 6. 配置安装路径 / 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. 8 ln - s / usr/ local/ python38/ bin / pip3 / usr/ bin / python3. 8 9. 删除安装包于文件rm - rf Python- 3.8 .8 rm - 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_profileVIRTUALENVWRAPPER_PYTHON= / usr/ bin / python3. 8 source / usr/ local/ python38/ bin / virtualenvwrapper. sh4. 保存退出esc : wq5. 更新配置文件内容source ~ / . bash_profile6. 创建虚拟环境mkvirtualenv - p python3. 8 luffy
十、安装nginx 1. 根路径cd ~ cd2. 下载nginx1. 13.7 wget http: // nginx. org/ download/ nginx- 1.13 .7 . tar. gz3. 解压压缩包 tar - xf nginx- 1.13 .7 . tar. gz4. 进入目标文件cd nginx- 1.13 .7 5. 配置安装路径. / configure - - prefix= / usr/ local/ nginx6. 编译并安装make & & make install7. 建立软链接ln - s / usr/ local/ nginx/ sbin/ nginx / usr/ bin / nginx8. 删除安装与文件cd ~ rm - rf nginx- 1.13 .7 rm - rf nginx- 1.13 .7 . tar. xz9. 测试Nginx环境 nginxnginx - s stop 10. 起进程netstat - nlp | grep 80 11. 查看进程ps aux | grep 80
十一、前端项目部署 1. 把前端build的文件上传至服务器2. 安装软件yum install - y unzipyum install lrzsz - y3. 解压文件unzip dist. zip 4. 移动并重命名mv ~ / dist / home/ html5. 备份nginx配置 更新配置 定制nginx做请求转发 负载均衡 静态文件代理cd / usr/ local/ nginx/ confmv nginx. cong nginx. conf. bakvim 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 reload 7. 开启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. txt6. 安装mysqlclientyum install mysql- devel - yyum install python- devel - yrpm - - import https: // repo. mysql. com/ RPM- GPG- KEY- mysql- 2022 pip 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 { 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; } } 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/ static4. 完成静态文件迁移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; } } 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