上线架构图

服务器购买与远程连接

服务器可以在阿里云控制台首页 (aliyun.com)登录 - 腾讯云 (tencent.com)购买。

这里我选择购买阿里云的云服务器ECS,购买时按自己需求,镜像这里选择CentOS 7.9

购买完成后,会拿到一个公网ip

选择远程连接工具,有很多种,Xshell、FinalShell等。

这里选择FinalShell,下载:FinalShell (hostbuf.com)

打开,连接。

连接的密码如果不知道或忘记了

安装git

安装git可以方便我们从直接从远程仓库拉取项目,当然,也可以不安装。

安装git

  1. yum install git -y

创建文件夹放项目

  1. mkdir /home/project
  2. cd /home/project

克隆

  1. git clone https://gitee.com/....

安装mysql

包含了很多开发的工具

  1. yum -y groupinstall "Development tools"

各种依赖

  1. yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel

1.前往用户根目录

  1. cd ~

2.下载mysql57

  1. wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

3.安装mysql57

  1. yum -y install mysql57-community-release-el7-10.noarch.rpm
  2. yum install mysql-community-server --nogpgcheck

4.启动mysql57并查看启动状态

  1. systemctl start mysqld.service
  2. systemctl status mysqld.service

5.查看默认密码并登录

  1. grep "password" /var/log/mysqld.log

  1. mysql -uroot -p

6.修改密码(密码强度有要求,需要大小写字母、数字、符号)

  1. ALTER USER 'root'@'localhost' IDENTIFIED BY 'Qq332525..';

安装redis(源码安装)

1.前往用户根目录

  1. cd ~

2.下载redis-5.0.5(源码包)

  1. wget http://download.redis.io/releases/redis-5.0.5.tar.gz

3.解压安装包

  1. tar -xf redis-5.0.5.tar.gz

4.进入目标文件

  1. cd redis-5.0.5

5.编译环境

  1. make

6.复制环境到指定路径完成安装

  1. cp -r /root/redis-5.0.5 /usr/local/redis

7.配置redis可以后台启动:修改下方内容

  1. vim /usr/local/redis/redis.conf

添加:

  1. daemonize yes

8.建立软连接(环境变量)

  1. ln -s /usr/local/redis/src/redis-server /usr/bin/redis-server
  1. ln -s /usr/local/redis/src/redis-cli /usr/bin/redis-cli

9.后台运行redis

  1. cd /usr/local/redis
  2. redis-server ./redis.conf &

10.测试redis环境

  1. redis-cli
  1. # 退出
  2. exit

11.如果想要关闭redis服务

  1. # 方式一
  2. 客户端连进去,敲 shutdown
  3. # 方式二
  4. pkill -f redis -9

安装python3.8(源码安装)

阿里云的centos默认装了python3.6和2.7,如果没有硬性要求,可以直接跳过安装python3.8。

各种依赖

  1. yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel -y

1.前往用户根目录

  1. cd ~

2.下载Python3.8.6

  1. wget https://registry.npmmirror.com/-/binary/python/3.8.6/Python-3.8.6.tgz

3.解压安装包

  1. tar -xf Python-3.8.6.tgz

4.进入目标文件

  1. cd Python-3.8.6

5.把python3.8.6 编译安装到/usr/local/python38路径下

  1. ./configure --prefix=/usr/local/python38

6.编译并安装,如果报错,说明缺开头的哪些依赖

  1. make && make install

7.建立软连接(环境变量)

  1. ln -s /usr/local/python38/bin/python3 /usr/bin/python3.8
  1. ln -s /usr/local/python38/bin/pip3 /usr/bin/pip3.8

目前云服务器各版本python环境

  1. python pip 2.7版本的命令
  2. python3 pip3 3.6版本的命令
  3. python3.8 pip3.8 3.8版本的命令

安装uwsgi

uwsgi是符合wsgi协议的web服务器,使用c写的性能高,上线要使用uwsgi。

安装uwsgi,注意用你后面要用的python版本安装

  1. pip3.8 install uwsgi

建立软连接

  1. ln -s /usr/local/python38/bin/uwsgi /usr/bin/uwsgi

安装虚拟环境

1.安装虚拟环境

  1. pip3.8 install virtualenv

更新pip

  1. python3.8 -m pip install --upgrade pip
  2. python3.8 -m pip install --upgrade setuptools
  3. pip3.8 install pbr
  1. pip3.8 install virtualenvwrapper

2.建立虚拟环境软连接(环境变量)

  1. ln -s /usr/local/python38/bin/virtualenv /usr/bin/virtualenv

3.配置虚拟环境:

  1. vim ~/.bash_profile

填入下方内容,注意python版本用的是哪个

  1. VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.8
  2. source /usr/local/python38/bin/virtualenvwrapper.sh

4.更新配置文件内容

  1. source ~/.bash_profile

5.创建虚拟环境

  1. mkvirtualenv -p python3.8 xx

退出

  1. deactivate

安装nginx(源码安装)

1.前往用户根目录

  1. cd ~

2.下载nginx1.13.7

  1. wget http://nginx.org/download/nginx-1.13.7.tar.gz

3.解压安装包

  1. tar -xf nginx-1.13.7.tar.gz

4.进入目标文件

  1. cd nginx-1.13.7

5.配置安装路径:/usr/local/nginx

  1. ./configure --prefix=/usr/local/nginx

6.编译并安装

  1. make && make install

7.建立软连接

  1. ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

8.删除安装包与文件

  1. cd ~
  2. rm -rf nginx-1.13.7
  3. rm -rf nginx-1.13.7.tar.xz

9.测试Nginx环境,服务器运行nginx,本地访问服务器ip

  1. # 启动
  2. nginx
  3. # 停止
  4. nginx -s stop

这个命令查看nginx是否在运行着

  1. netstat -nlp | grep 80

然后访问

  1. 服务器公网ip:80

如果无法访问,说明云服务器安全组中没有添加80端口

vue项目部署

1.修改前端向后端发ajax请求的地址,以前都是向127.0.0.1发送请求,现在可以改成服务器地址了

2.编译vue项目成html,css,js

  1. npm run build

3.项目根路径下会生成dist文件夹(编译过后的文件),本地压缩成zip(不要压成rar)

4.在服务器安装软件

  1. yum install lrzsz

5.云服务器敲 rz,选择dist.zip上传

6.安装解压软件,解压文件

  1. yum install unzip
  2. unzip dist.zip

7.移动解压后的dist.zip,并重命名

  1. mv ~/dist /home/html

8.去到Nginx配置目录

  1. cd /usr/local/nginx/conf

9.备份Nginx配置文件

  1. mv nginx.conf nginx.conf.bak

10.打开配置文件,添加内容

  1. vim nginx.conf

内容

  1. events {
  2. worker_connections 1024;
  3. }
  4. http {
  5. include mime.types;
  6. default_type application/octet-stream;
  7. sendfile on;
  8. server {
  9. listen 80;
  10. server_name 127.0.0.1; # 可以改为自己的域名
  11. charset utf-8;
  12. location / {
  13. root /home/html; # html访问路径
  14. index index.html; # html文件名称
  15. try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题
  16. }
  17. }
  18. }

11.重新加载配置文件(重启nginx)

  1. nginx -s reload

12.访问服务器ip地址(不写端口默认访问80端口)

  1. xx.xx.xx.xx

django项目部署

项目依赖安装

1.修改django的某些关于ip地址的配置(数据库等ip地址不用改,因为就是本地的ip地址,当在服务器上运行时,连接的就是服务器的数据库)

2.django项目生成所需依赖

  1. pip freeze > requirements.txt

3.把django项目上传到服务器上,通过rz命令,或者git命令

  1. # 这里我把项目放到这个目录下
  2. /home/project/

4.创建线上项目虚拟环境

  1. mkvirtualenv project

5.虚拟环境下也要装uwsgi

  1. pip install uwsgi

6.cd到项目根路径下

  1. /home/project/

7.安装依赖

  1. pip install -r ./requirements.txt

8.如果出现报错,比如安装mysqlclient模块容易报错,那么我可以打开requirements.txt,将mysqlclient模块那一行注释掉(#)

9.最后单独安装mysqlclient

  1. rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
  2. yum install mysql-devel
  3. yum install python-devel
  4. pip install mysqlclient

数据库配置

1.进入数据库

2.创建项目需要的数据库

  1. create database project default charset=utf8;

3.设置权限账号密码:账号密码要与项目中配置的一致

  1. grant all privileges on project.* to 'username'@'%' identified by 'password';
  2. grant all privileges on project.* to 'username'@'localhost' identified by 'password';
  3. flush privileges;

4.退出数据库

  1. quit;

5.回到虚拟环境,到项目目录中

数据库迁移命令

  1. python manage_pro.py makemigrations
  2. python manage_pro.py migrate

6.录入数据

使用uwsgi启动django

1.项目目录下,新建uwsgi的配置文件

  1. vim ./project.xml

添加

  1. <uwsgi>
  2. <socket>127.0.0.1:8000</socket> <!-- 内部端口,自定义 -->
  3. <chdir>/home/project/</chdir> <!-- 项目路径 -->
  4. <module>project.wsgi</module> <!-- project为wsgi.py所在目录名-->
  5. <processes>4</processes> <!-- 进程数 -->
  6. <daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
  7. </uwsgi>

2.启动uwsgi

  1. uwsgi -x ./luffyapi.xml

3.查看uwsgi进程

  1. ps aux |grep uwsgi

4.配置nginx,把8080端口的动态请求转发给uwsgi里配置的8000端口

  1. vim /usr/local/nginx/conf/nginx.conf

内容:

  1. events {
  2. worker_connections 1024;
  3. }
  4. http {
  5. include mime.types;
  6. default_type application/octet-stream;
  7. sendfile on;
  8. server {
  9. listen 80;
  10. server_name 127.0.0.1; # 可以改为自己的域名
  11. charset utf-8;
  12. location / {
  13. root /home/html; # html访问路径
  14. index index.html; # html文件名称
  15. try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题
  16. }
  17. }
  18. # 新增的server
  19. server {
  20. listen 8080;
  21. server_name 127.0.0.1; # 可以改为自己的域名
  22. charset utf-8;
  23. location / {
  24. include uwsgi_params;
  25. uwsgi_pass 127.0.0.1:8000; # 端口要和uwsgi里配置的一样
  26. uwsgi_param UWSGI_SCRIPT project.wsgi; #wsgi.py所在的目录名+.wsgi
  27. uwsgi_param UWSGI_CHDIR /home/project/; # 项目路径
  28. }
  29. }
  30. }

5.重启nginx

  1. nginx -s reload

6.这时候前端向服务器id:8080就等于向后端项目发送了请求。

后端样式处理

这时候访问后端的admin接口是没有样式的,还需要下列设置

1.编辑线上项目的配置文件

  1. vim /home/project/../settings/pro.py

2.修改static配置,新增STATIC_ROOT、STATICFILES_DIRS

  1. STATIC_URL = '/static/'
  2. STATIC_ROOT = '/home/project/static'
  3. STATICFILES_DIRS = (os.path.join(BASE_DIR, "../static"),)

3.项目目录下没有 static 文件夹需要新建

  1. mkdir /home/project/static

4.完成静态文件迁移

  1. python /home/project/manage_pro.py collectstatic

5.修改nginx配置

  1. vim /usr/local/nginx/conf/nginx.conf

内容

  1. events {
  2. worker_connections 1024;
  3. }
  4. http {
  5. include mime.types;
  6. default_type application/octet-stream;
  7. sendfile on;
  8. server {
  9. listen 80;
  10. server_name 127.0.0.1; # 可以改为自己的域名
  11. charset utf-8;
  12. location / {
  13. root /home/html; # html访问路径
  14. index index.html; # html文件名称
  15. try_files $uri $uri/ /index.html;
  16. }
  17. }
  18. server {
  19. listen 8080;
  20. server_name 127.0.0.1; # 可以改为自己的域名
  21. charset utf-8;
  22. location / {
  23. include uwsgi_params;
  24. uwsgi_pass 127.0.0.1:8000; # 端口要和uwsgi里配置的一样
  25. uwsgi_param UWSGI_SCRIPT project.wsgi;
  26. uwsgi_param UWSGI_CHDIR /home/project/;
  27. }
  28. }
  29. location /static {
  30. alias /home/project/static;
  31. }
  32. }

6.重启nginx

  1. nginx -s reload

django项目、vue项目部署云服务器的更多相关文章

  1. 部署Flask项目到腾讯云服务器CentOS7

    部署Flask项目到腾讯云服务器CentOS7 安装git yum install git 安装依赖包 支持SSL传输协议 解压功能 C语言解析XML文档的 安装gdbm数据库 实现自动补全功能 sq ...

  2. springboot项目部署云服务器

    Springboot项目部署云服务器 springboot项目部署云服务器还是挺简单的 首先你要有java运行环境,就是jdk的安装,如果还没有装没有参考安装:阿里云ECS建网站(建站)超详细全套完整 ...

  3. 后盾网lavarel视频项目---Vue项目使用vue-awesome-swiper轮播插件

    后盾网lavarel视频项目---Vue项目使用vue-awesome-swiper轮播插件 一.总结 一句话总结: vue中的插件的使用和js插件的使用一样的简单,只是vue插件的引入过程有些不同 ...

  4. vue项目怎么搭建到云服务器上

    链接1:https://blog.csdn.net/qq_37741554/article/details/87560823 linux下载安装node.js 链接2:https://blog.csd ...

  5. Tomcat+Nginx+Linux+Mysql部署豆瓣TOP250的项目到腾讯云服务器

    写在前面 因为前面有写过一篇关于豆瓣的top250的电影的可视化展示项目,你可以移步http://blog.csdn.net/liuge36/article/details/78607955了解这个项 ...

  6. 【重学Node.js 第5篇】部署项目到腾讯云服务器

    课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://github.com/hellozhangran ...

  7. 使用maven构建项目时,SSM和springboot项目的打包与云服务器部署

    下面讲讲如何打包SSM和springboot项目,并部署到云服务器上. 由于使用的IDE不同,有的使用eclipse,有的使用idea,所以如果在IDE中按照 maven clean 再 maven ...

  8. 部署SpringBoot项目jar包到云服务器

    前言 做安卓开发也有三四年了,但是对网络这块什么http.tcp/ip之类的一直不理解.并且想自己做一些小项目练练手的时候,数据库直接存在apk里总不是滋味,所以这次站在安卓开发的角度尝试着做一做简单 ...

  9. 将Maven项目部署云服务器流程

    1.数据库分离,存入项目: 2.将分离出的数据库导入云端服务器 将sql文件上传到服务器中 进去云端数据库输入命令:source  云服务器中sql文件地址 3.设置两种配置,修改匹配: 4.mave ...

随机推荐

  1. ubuntu 18及以上版本配置IP的方法,你get了吗

    本文讲讲 Ubuntu 18 及以上版本配置 IP 的方法,为什么它值得一讲,因为以 Ubuntu 16 为首的版本的配置方法已经不适用了,如果你还不知道,那本文正好 get 一个新技能. Ubunt ...

  2. 视网膜血管分割代码(Pytorch实现)

    创建日期: 2021-12-24 17:00:00 update log(2021.12.24):B站视频删除了,回放看了一下,讲的不太行......2333,时间过得真快,转眼就是2022年了啊 2 ...

  3. 深度好文:Linux文件系统剖析

    一个执着于技术的公众号 Linux 文件系统体系结构是一个对复杂系统进行抽象化的有趣例子.通过使用一组通用的 API 函数,Linux 可以在许多种存储设备上支持许多种文件系统.例如,read 函数调 ...

  4. 真香!Windows 可直接运行 Linux 了

    点击关注上方"开源Linux", 后台回复"读书",有我为您特别筛选书籍资料~ 之前了解过一些适用于Linux的Windows子系统,最近又听人提起,于是在自己 ...

  5. 详解六大国产CPU处理器

    一个执着于技术的公众号 CPU作为计算机设备的运算和控制核心,负责指令读取.译码与执行,因研发门槛高.生态构建难,被认为是集成电路产业中的"珠穆朗玛峰". 纵观全球,Intel.A ...

  6. 手动验证 TLS 证书

    证书结构 我们现在使用的 TLS 证书的标准是 X.509,版本号为 V3.版本号可从证书的 Version 字段看到. 根据 RFC 3280 定义的证书结构,证书由三个部分组成: 证书主体(TBS ...

  7. 120_PowerBI堆积瀑布图_R脚本Visual

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.效果 二.data 三.添加字段 注意红色框标注地方 四.code # 下面用于创建数据帧并删除重复行的代码始终执行, ...

  8. [BJOI2014]想法

    参考 P4581传送门 题意:给DAG,问每个点可以由多少个叶子到达. 思路: 随机化!!(题面有提示) 这道题利用在一个范围内随机的数期望均分范围的性质. 直接每个叶子在\([0,Max\_Rand ...

  9. 《Unix 网络编程》11:名字和地址转换

    名字和地址转换 系列文章导航:<Unix 网络编程>笔记 域名系统 简介 域名系统主要用于主机名字和 IP 地址之间的映射.主机名可以是: 简单名字,如:centos01 全限定域名(FQ ...

  10. 【leetcode 206】 反转链表(简单)

    链表 概念: 区别于数组,链表中的元素不是存储在内存中连续的一片区域,链表中的数据存储在每一个称之为「结点」复合区域里,在每一个结点除了存储数据以外,还保存了到下一个结点的指针(Pointer). 由 ...