文章目录

    • 1安装git
    • 2 购买云服务器
    • 3 云服务器安装数据库mysql
    • 4 云服务器安装redis(源码安装)
    • 5云服务器安装python3.8(源码安装)
    • 6 安装uwsgi
    • 7 安装虚拟环境
    • 8 安装nginx(源码安装)
    • 9 前端项目部署(vue为例)
    • 10 项目后端部署
      • 10.2 配置数据库
      • 10.3 迁移数据库
      • 10.4 使用uwsgi启动django
    • 11 项目后台管理样式处理

1安装git

# 安装git  
yum install git  -y
mkdir /home/project
cd /home/project
# 拉取项目
git clone gitee仓库地址
或
git clone github仓库地址

2 购买云服务器

# 云服务器,例如:腾讯云,华为云等云服务器

3 云服务器安装数据库mysql

yum -y groupinstall "Development tools"   # 安装开发工具包,集成了很多开发的工具(git)
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel


# 安装步骤
(1)前往用户根目录
  cd ~   #切换到用户家路径

(2)下载mysql 5.7
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm


(3)安装mysql 5.7
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum install mysql-community-server --nogpgcheck

(4)启动mysql57并查看启动状态
systemctl start mysqld.service
systemctl status mysqld.service

(5)查看默认密码并登录
grep "password" /var/log/mysqld.log
 xxyy+1sdfjn+(默认随机密码)
mysql -uroot -p

(6)修改密码
# 代码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
# 示例
ALTER USER 'root'@'localhost' IDENTIFIED BY 'qazwsx@159';

4 云服务器安装redis(源码安装)

(1)前往用户根目录
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)编译环境(gcc编译》可执行文件》src》可执行文件)
# c语言写的redis,是编译型语言,需要在不同平台编译成不同平台的可执行文件,才能执行
make

(6)复制环境到指定路径完成安装
cp -r /root/redis-5.0.5 /usr/local/redis

(7)配置redis可以后台启动:修改下方内容
vim /usr/local/redis/redis.conf

daemonize yes

(8)完成配置修改
esc
:wq

(9)建立软连接
ln -s /usr/local/redis/src/redis-server /usr/bin/redis-server
ln -s /usr/local/redis/src/redis-cli /usr/bin/redis-cli

(10)后台运行redis
cd /usr/local/redis
redis-server ./redis.conf &
# 退出
ctrl + c

(11)测试redis环境
redis-cli
ctrl + c

(12)关闭redis服务
# 客户端里面
shutdown
# 客户端外面
pkill -f redis -9

5云服务器安装python3.8(源码安装)

# 安装相关依赖包(安装失败后再安装也可)
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel  -y

#1 前往用户根目录
cd ~

#2 下载或上传 Python3.8.6服务器终端
wget https://registry.npmmirror.com/-/binary/python/3.8.6/Python-3.8.6.tgz

#3 解压安装包
tar -xf Python-3.8.6.tgz

#4 进入目标文件
cd Python-3.8.6

#5 配置安装路径:/usr/local/python3
# 把python3.8.6 编译安装到/usr/local/python38路径下
./configure --prefix=/usr/local/python38

#6 编译并安装,如果报错,说明缺依赖
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel psmisc libffi-devel zlib* libffi-devel  -y
make &&  make install

#7 建立软连接:/usr/local/python38路径不在环境变量,终端命令 python3,pip3
ln -s /usr/local/python38/bin/python3 /usr/bin/python3.8
ln -s /usr/local/python38/bin/pip3 /usr/bin/pip3.8

python       2.x       pip 
python3.8    3.8      pip3.8

#8  删除安装包与文件(节约空间)
rm -rf Python-3.8.8
rm -rf Python-3.8.8.tar.xz

6 安装uwsgi

# 使用uwsgi运行django
# uwsgi是符合wsgi协议的web服务器,使用c编写,性能较高,上线要使用uwsgi
# 安装步骤
1)在真实环境下安装
pip3.8 install uwsgi

2)建立软连接
ln -s /usr/local/python38/bin/uwsgi /usr/bin/uwsgi

7 安装虚拟环境

(1)安装依赖
pip3.8 install virtualenv
# 升级pip
python3.8 -m pip install --upgrade pip
python3.8 -m pip install --upgrade setuptools
pip3.8 install pbr
# Pip Check
pip check用来验证已安装的包是否有兼容的依赖性问题

pip3.8 install -U virtualenvwrapper -i https://pypi.douban.com/simple/ 
pip3.8 install virtualenvwrapper

(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

(5)保存修改并退出
:wq

(6)更新配置文件内容
source ~/.bash_profile

(7)虚拟环境默认根目录:~/.virtualenvs

(8) 创建虚拟环境(部署的项目)
mkvirtualenv -p python3.8 proj_name

8 安装nginx(源码安装)

(1) 前往用户根目录
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) 配置安装路径:/usr/local/nginx
./configure --prefix=/usr/local/nginx

(6) 编译并安装
make && make install

(7) 建立软连接:终端命令 nginx
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

(10) 测试Nginx环境,服务器运行nginx,本地访问服务器ip
# 启动 
nginx 
# 停止
nginx -s stop
(11) 服务器绑定的域名
netstat -nlp | grep 80

9 前端项目部署(vue为例)

#1  修改前端向后端发ajax请求的地址:项目的地址

#2  编译vue项目成html,css,js
npm run build  

#3  项目根路径下生成dist文件夹(编译过后的文件)

#4  本地压缩成zip(尽量不要压成rar,7Z)

#5 在服务器安装软件:yum install lrzsz 

#6 直接将dist.zip 拖到云服务器上
或者使用命令
rz

#7 yum install unzip
unzip dist.zip

#8 移动并重命名
mv ~/dist /home/html

#9 到Nginx配置目录,备份配置,完全更新配置:填入下方内容
#/usr/local/nginx/conf/nginx.conf 是nginx的配置文件
设置nginx启动监听哪个端口
请求转发,负载均衡
做静态文件代理
cd /usr/local/nginx/conf
# 备份
mv nginx.conf 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;
        }
    }
} 

# 10 执行 
# 方式一
ps aux |grep nginx
nginx -s reload  #重新加载配置文件
# 方式二
nginx -s stop
nginx

10 项目后端部署

# 确认wsgi.py的配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend_name.settings.pro')

pip freeze > requirements.txt
# 创建线上backend_proj项目虚拟环境(前面创建了可跳过)
mkvirtualenv backend_proj
workon backend_proj

# 安装所需环境,在requirements.txt所在目录下安装执行requirements.txt文件
pip install uwsgi   # 虚拟环境下也要装uwsgi
pip install -r ./requirements.txt
# 把会报错的mysqlclient注释掉
yum install mysql-devel
yum install python-devel
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
pip install mysqlclient

10.2 配置数据库

# 管理员连接数据库
mysql -uroot -p

# 创建数据库
create database backend_proj default charset=utf8;

# 设置权限账号密码:账号密码要与项目中配置的一致
grant all privileges on backend_proj.* to 'backend_proj'@'%' identified by 'qazwsx@159?';
grant all privileges on backend_proj.* to 'backend_proj'@'localhost' identified by 'qazwsx@159?';
flush privileges;

# 退出mysql
quit;

10.3 迁移数据库

# 必须在部署项目虚拟环境下
1)数据库迁移
python manage_prod.py makemigrations
python manage_prod.py migrate

2)把本地数据,导入到生产库
# 用navicate把数据库转储成sql
# 在生产库导入进去

10.4 使用uwsgi启动django

#1 进行uwsgi服务配置,内容如下
vim ./backend_name.xml   # uwsgi的配置文件

    
   127.0.0.1:9999
   /home/project/backend_name/   
   backend_name.wsgi
   4
   uwsgi.log


# 2 启动uwsgi
uwsgi -x ./backend_name.xml
# 3 查看uwsgi进程
ps aux |grep uwsgi
 
# 4 配置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
    server {
        listen 8080;
        server_name  127.0.0.1;
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:9999;
           uwsgi_param UWSGI_SCRIPT backend_name.wsgi;
           uwsgi_param UWSGI_CHDIR /home/project/backend_name/;
        }
    }
} 

# 重启nginx
nginx -s reload

11 项目后台管理样式处理

# uwsgi 只转发动态请求,不处理静态资源
(1)编辑线上配置文件
vim /home/project/backend_name/backend_name/settings/pro.py


(2) 修改static配置,新增STATIC_ROOT、STATICFILES_DIRS
STATIC_URL = '/static/'
STATIC_ROOT = '/home/project/backend_name/static'  
STATICFILES_DIRS = (os.path.join(BASE_DIR, "../static"),)

(3) 退出编辑
esc
:wq

(4) 项目目录下没有static文件夹需要新建
mkdir /home/project/backend_name/static

(5) 完成静态文件迁移
python /home/project/backend_name/manage_pro.py collectstatic


(6) 修改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;
        }
    }
    server {
        listen 8080;
        server_name  127.0.0.1;
        charset utf-8;
        location / {
           include uwsgi_params;
           uwsgi_pass 127.0.0.1:9999;
           uwsgi_param UWSGI_SCRIPT backend_name.wsgi;
           uwsgi_param UWSGI_CHDIR /home/project/backend_name/;
        }
        location /static {
            alias /home/project/backend_name/static;
        }
    }

}