文章目录
一、上线前准备 二、阿里云机器购买 三、上线架构图 四、安装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 makemigrations
4. 讲项目上传到git方便后期好做修改上传于拉取
5. 重点配置后台和前台地址 修改成上线服务器的地址 提交Git
6. 前端项目发送请求地址改为线上
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 ~ cd
2. 下载Mysql5. 7
wget http: // dev. mysql. com/ get/ mysql57- community- release- el7- 10 . noarch. rpm
3. 安装mysql5. 7
yum - y install mysql57- community- release- el7- 10 . noarch. rpm
yum install mysql- community- server - - nogpgcheck。
4. 启动mysql5. 7
systemctl 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 ~ cd
2. 下载redis- 5.0 .5 (源码包)
wget http: // download. redis. io/ releases/ redis- 5.0 .5 . tar. gz
3. 解压安装包
tar - xf redis- 5.0 .5 . tar. gz
4. 进入目标文件
cd redis- 5.0 .5
5. 编译环境
make
6. 复制环境到指定路径完成安装
cp - r / root/ redis- 5.0 .5 / usr/ local/ redis
7. 配置redis可以后台启动:修改下方内容
vim / usr/ local/ redis/ redis. conf
修改内容: daemonize yes
完成配置保存退出 esc : wq
8. 建立软链接
ln - s / usr/ local/ redis/ src/ redis- server / usr/ bin / redis- server
ln - s / usr/ local/ redis/ src/ redis- cli / usr/ bin / redis- cli
9. 后台运行redis
cd / usr/ local/ redis
redis- server . / redis. conf &
10. 测试redis环境
redis- cli
ctrl+ c结束
11. 关闭redis服务
pkill - f redis - 9
七、云服务器安装源码安装Python
1. 源码安装python,依赖一些第三方zlib* libffi- devel
yum install openssl- devel bzip2- devel expat- devel gdbm- devel readline- devel sqlite- devel psmisc libffi- devel zlib* libffi- devel - y
2. 根路径
cd ~ cd
3. 下载Python3. 8.6
wget https: // registry. npmmirror. com/ - / binary/ python/ 3.8 .6 / Python- 3.8 .6 . tgz
4. 解压安装包
tar - xf Python- 3.8 .6 . tgz
5. 进入目标文件
cd Python- 3.8 .6
6. 配置安装路径 / usr/ local/ python3
. / configure - - prefix= / usr/ local/ python38
7. 编译并安装(如果报错说明缺少依赖)
make & & make install
yun install openssl- devel bzip2- devel expat- devel gdbm- devel readline- devel sqlite- devel psmisc libffi- devel zlib* libffi- devel - y
8. 建立软链接
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 ~ cd
2. 安装uwsgi
pip3. 8 install uwsgi
3. 建立软连接
ln - s / usr/ local/ python38/ bin / uwsgi / usr/ bin / uwsgi
九、安装虚拟环境
1. 安装依赖
pip3. 8 install virtualenv
pip3. 8 install - U virtualenvwrapper - i https: // pypi. douban. com/ simple/
pip3. 8 install virtualenvwrapper
如果出现报错 敲以下命令
python3. 8 - m pip install - - upgrade pip
python3. 8 - m pip install - - upgrade setuptools
pip3. 8 install pbr
2. 建立软连接
ln - s / usr/ local/ python38/ bin / virtualenv / usr/ bin / virtualenv
3. 配置虚拟环境
vim ~ / . bash_profile
VIRTUALENVWRAPPER_PYTHON= / usr/ bin / python3. 8
source / usr/ local/ python38/ bin / virtualenvwrapper. sh
4. 保存退出
esc : wq
5. 更新配置文件内容
source ~ / . bash_profile
6. 创建虚拟环境
mkvirtualenv - p python3. 8 luffy
十、安装nginx
1. 根路径
cd ~ cd
2. 下载nginx1. 13.7
wget http: // nginx. org/ download/ nginx- 1.13 .7 . tar. gz
3. 解压压缩包
tar - xf nginx- 1.13 .7 . tar. gz
4. 进入目标文件
cd nginx- 1.13 .7
5. 配置安装路径
. / configure - - prefix= / usr/ local/ nginx
6. 编译并安装
make & & make install
7. 建立软链接
ln - s / usr/ local/ nginx/ sbin/ nginx / usr/ bin / nginx
8. 删除安装与文件
cd ~
rm - rf nginx- 1.13 .7
rm - rf nginx- 1.13 .7 . tar. xz
9. 测试Nginx环境
nginx
nginx - s stop
10. 起进程
netstat - nlp | grep 80
11. 查看进程
ps aux | grep 80
十一、前端项目部署
1. 把前端build的文件上传至服务器
2. 安装软件
yum install - y unzip
yum install lrzsz - y
3. 解压文件
unzip dist. zip
4. 移动并重命名
mv ~ / dist / home/ html
5. 备份nginx配置 更新配置 定制nginx做请求转发 负载均衡 静态文件代理
cd / usr/ local/ nginx/ conf
mv nginx. cong nginx. conf. bak
vim nginx. conf
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;
index index. html;
}
}
}
6. 重新加载配置文件
nginx - s reload
7. 开启nginx与停止nginx
nginx nginx - s stop
十二、后端项目部署
1)Git拉取最新代码安装依赖
1. 在自己的项目里面把依赖 生成一个文件 上传push
pip freeze > requirements. txt
pip add.
pip commit - m '提交'
pip push origin master
2. 克隆文件到云机器
git clone 库地址
3. 拉取项目
git pull origin master
4. 切换到luffy虚拟环境
workon luffy
5. 安装依赖
pip install - r requirements. txt
6. 安装mysqlclient
yum install mysql- devel - y
yum install python- devel - y
rpm - - import https: // repo. mysql. com/ RPM- GPG- KEY- mysql- 2022
pip install mysqlclient
2)配置数据库
1. 管理员链接数据库
mysql - u root - p
2. 创建数据库
create database luffy default charset= utf8;
3. 设置权限账号密码:账号密码要与项目中配置的一致
grant all privileges on luffy. * to '数据库名称' @'%' identified by '数据库密码' ;
grant all privileges on luffy. * to '数据库名称' @'localhost' identified by '数据库密码' ;
flush privileges
4. 退出mysql
quit;
3)迁移数据库
1. python manage_pro. py makemigrations
2. python manage_pro. py migrate
4)使用Uwsgi启动Django
1. 使用Uwsgi跑之前运行Django
python 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. 启动uwsgi
uwsgi - x . / luffyapi. xml
4. 查看uwsgi进程
ps aux | grep uwsgi
5. 配置nginx 把8080 的动态请求转发给8888 端口
vim / usr/ local/ nginx/ conf/ nginx. conf
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;
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. 重启nginx
nginx - s reload
十三、后台样式处理
1. vim / usr/ local/ nginx/ conf/ nginx. conf
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;
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 . 重启nginx
nginx - s reload
十四、路飞后台管理样式处理
1. 编辑线上配置文件
vim / home/ project/ luffyapi/ luffyapi/ settings/ pro. py
2. 修改static配置新增STATIC_ROOT、STATICFILES_DIRS
STATIC_URL = '/static/'
STATIC_ROOT = '/home/luffy_api/luffy_api/static'
STATICFILES_DIRS = ( os. path. join( BASE_DIR, "../static" ) , )
esc
: wq
3. 项目目录下没有 static 文件夹需要新建
mkdir / home/ luffy_api/ static
mkdir / home/ luffy_api/ luffyapi/ static
4. 完成静态文件迁移
python / home/ luffy_api/ manage_pro. py collectstatic
5. 修改nginx配置
vim / usr/ local/ nginx/ conf/ nginx. conf
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;
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. 重启nginx
nginx - s reload