上线架构图
服务器购买与远程连接
服务器可以在阿里云控制台首页 (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/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 |
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端口
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