服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - 云服务器 - django项目、vue项目部署云服务器的详细过程

django项目、vue项目部署云服务器的详细过程

2022-07-21 16:24Yume_Minami 云服务器

这篇文章主要介绍了django项目、vue项目部署云服务器的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

上线架构图

django项目、vue项目部署云服务器的详细过程

服务器购买与远程连接

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

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

django项目、vue项目部署云服务器的详细过程

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

django项目、vue项目部署云服务器的详细过程

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

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

打开,连接。

django项目、vue项目部署云服务器的详细过程

django项目、vue项目部署云服务器的详细过程

django项目、vue项目部署云服务器的详细过程

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

django项目、vue项目部署云服务器的详细过程

安装git

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

安装git

?
1
yum install git  -y

创建文件夹放项目

?
1
mkdir /home/projectcd /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
2
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum install mysql-community-server --nogpgcheck

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

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

5.查看默认密码并登录

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

django项目、vue项目部署云服务器的详细过程

?
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/redisredis-server ./redis.conf &

10.测试redis环境

?
1
redis-cli
?
1
# 退出exit

11.如果想要关闭redis服务

?
1
2
3
4
# 方式一
客户端连进去,敲  shutdown
# 方式二
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
2
3
python      pip      2.7版本的命令
python3     pip3     3.6版本的命令
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
2
3
python3.8 -m pip install --upgrade pip
python3.8 -m pip install --upgrade setuptools
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
2
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.8
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
2
3
cd ~
rm -rf nginx-1.13.7
rm -rf nginx-1.13.7.tar.xz

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

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

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

?
1
netstat -nlp | grep 80

然后访问

?
1
服务器公网ip:80

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

django项目、vue项目部署云服务器的详细过程

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
2
yum install unzip
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
events {
    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; # html访问路径
            index index.html; # html文件名称
            try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题
        }
    }
}

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
2
3
4
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install mysql-devel
yum install python-devel
pip install mysqlclient

数据库配置

1.进入数据库

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

?
1
create database project default charset=utf8;

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

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

4.退出数据库

?
1
quit;

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

数据库迁移命令

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

6.录入数据

使用uwsgi启动django

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

?
1
vim ./project.xml

添加

?
1
2
3
4
5
6
7
<uwsgi>   
   <socket>127.0.0.1:8000</socket> <!-- 内部端口,自定义 -->
   <chdir>/home/project/</chdir> <!-- 项目路径 -->           
   <module>project.wsgi</module<!-- project为wsgi.py所在目录名-->
   <processes>4</processes> <!-- 进程数 -->    
   <daemonize>uwsgi.log</daemonize> <!-- 日志文件 -->
</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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
events {
    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; # html访问路径
            index index.html; # html文件名称
            try_files $uri $uri/ /index.html; # 解决单页面应用刷新404问题
        }
    }
    # 新增的server
    server {
        listen 8080;
        server_name  127.0.0.1; # 可以改为自己的域名
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:8000;  # 端口要和uwsgi里配置的一样
           uwsgi_param UWSGI_SCRIPT project.wsgi;  #wsgi.py所在的目录名+.wsgi
           uwsgi_param UWSGI_CHDIR /home/project/; # 项目路径
        }
    }
}

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
2
3
STATIC_URL = '/static/'
STATIC_ROOT = '/home/project/static'
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
events {
    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; # html访问路径
            index index.html; # 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:8000;  # 端口要和uwsgi里配置的一样
           uwsgi_param UWSGI_SCRIPT project.wsgi;
           uwsgi_param UWSGI_CHDIR /home/project/;
        }
    }
    location /static {
        alias /home/project/static;
    }
}

6.重启nginx

?
1
nginx -s reload

到此这篇关于django项目、vue项目部署云服务器的文章就介绍到这了,更多相关django vue项目部署云服务器内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/yume-zbh/p/16500197.html

延伸 · 阅读

精彩推荐