文章目录
-
- 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 项目后台管理样式处理
# 安装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的配置文件# 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 127.0.0.1:9999 /home/project/backend_name/ backend_name.wsgi 4 uwsgi.log
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; } } }