Django项目搭建
一. 下载宝塔面板
我这里使用的是命令函部署 , 下载宝塔主要为了是方便操作 , 宝塔的终端支持复制粘贴 , 而且可以帮助我们快速的检索文件目录以及避免一些软件的环境配置
下载方法:
打开浏览器访问 : 宝塔面板下载,免费全能的服务器运维软件 (bt.cn)
进入xshell将链接粘贴上去 , 回车运行即可
下载后会在终端显示用户名和密码 , 该密码只有第一次登录时有效 , 登录之后进入面板记得修改密码
宝塔的默认端口是8888 , 记得在安全组中放行该端口 , 不然无法访问
二. 安装Python环境
一般服务器的Linux环境中是自带Python3.6版本的 , 这里还是更具自己的需求进行下载对应版本
1、进入管理员的身份,先安装依赖的编译环境
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc
2、使用 wget 命令到官网中下载 python 的安装包
没有 wget 命令。下载 wget yum -y install wget
进入 opt 目录 , 将安装包下载到该目录中
wget https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tgz
3、对压缩包进行解压,并且创建目录
tar -zxvf Python-3.8.10.tgz
4、进入解压好的 python 安装包
cd /opt/Python-3.8.10
5、进行编译安装
./configure make make install
出现没有编译环境 gcc yum install gcc
二. 安装MySQL环境
1、使用 wget 下载安装包,下载到 opt 目录中
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
2、安装 MySQL 公钥
rpm -i mysql57-community-release-el7-10.noarch.rpm rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
3、安装 MySQL 服务
yum -y install mysql-community-server
4、启动 MySQL
启动 MySQL 服务 systemctl start mysqld.service 关闭 MySQL 服务 systemctl stop mysqld.service 查看 MySQL 服务状态 systemctl status mysqld.service
5、获取进入 MySQL 的临时密码
grep 'password' /var/log/mysqld.log![image-20240226212436131](D:/Users/lenovo/Desktop/day21_3.Linux%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.assets/image-20240226212436131.png)
进入 MySQL 服务
mysql -uroot -p【回车】 输入密码
6、配置 MySQL 的密码
mysql 原本的密码复杂度比较高,大小写字母和数字混合不少于8位的密码 修改密码的负责度 set global validate_password_policy=0; set global validate_password_length=1; 配置密码 alter user "root"@"localhost" identified by "密码"; alter user "root"@"localhost" identified by "root";
退出 MySQL 服务
7、修改 MySQL 的配置文件,修改字符编码
vim /etc/my.cnf
[client] default-character-set=utf8 [mysqld] port = 3306 character-set-server=utf8 collation-server=utf8_general_ci
8、关闭MySQL服务,重新启动 MySQL 服务
如果出现上述安装不成功的情况自行百度或者使用宝塔进行安装
安装之后还是依照前面的命令配置一下环境
这里要注意一下的是宝塔安装后 , 密码修改可以直接通过自带的数据库进行修改
我的建议是不要在这个界面上直接添加数据库 , mysql下载完毕后还是通过命令函创建数据库
进入mysql
mysql -uroot -proot # 这里的默认账号名为root密码自行修改
创建数据库
create database 数据库名;
四. 配置git仓库
这里推荐使用gitee国内版本使用的是中文也方便使用 , github需要科学上网访问比较麻烦
1.在项目文件夹中创建.getignore文件
- 在项目中中有些文件是不需要迁移到服务器上的 , 如项目迁移文件备份文件等 , 可以通过github地址获取到相关语言的.getignore文件
文件地址: https://github.com/github/gitignore - 导出项目依赖文件
pipreqs ./ --encoding=utf-8 pip3 install -r requirements.txt
2.初始化仓库
设置用户名
使用以下命令来设置你的 Git 用户名:
git config --global user.name "几许"
设置用户邮箱
使用以下命令来设置你的 Git 邮箱地址:
git config --global user.email "1529063814@qq.com"
检查设置
你可以使用以下命令来检查你的 Git 配置:
git config --list
或者,你可以专门针对用户名和邮箱进行检查:
git config --global user.name git config --global user.email
切换工作目录
cd django_-shop-system
初始化 Git 仓库
git init
origin 替代网址便于以后调用
git remote add origin https://gitee.com/jixuonline/django_-shop-system.git
这条命令将一个名为 origin
的远程仓库添加到您的本地 Git 仓库。通常,origin
是默认的远程仓库名,用于指向您首次克隆或推送到的远程仓库。这里的 URL https://gitee.com/jixuonline/django_-shop-system.git
是您 Gitee 仓库的 URL。
3.上传代码到git
将文件打包到远程仓库:
git add . git commit -m 'init' git push origin master
4.服务器拉取代码
1.下载git
yum install git -y
2.进入要下载的位置 , 创建目录
cd /opt/www/
3.克隆代码
git clone https://gitee.com/jixuonline/django_-shop-system.git >>>输入账号和密码
3.下载更新代码
- 进入项目根目录
cd /opt/www/django_-shop-system
- 更新代码
git pull origin master
五. 创建虚拟环境
1.安装virtualenv
pip3 install virtualenv
2.创建虚拟环境
- 创建文件夹用于保存项目虚拟环境
mkdir /envs
- 创建环境
virtualenv /envs/django_-shop-system --python=python3.8
3.激活虚拟环境
source /envs/django_-shop-system/bin/activate
虚拟环境激活之后就可以在环境中安装要使用的模块
模块的话前面已经导入到requirements.txt文件中了 , 直接下载就行
pip3 install -r requirements.txt
六. Linux配置uwsgi环境
1.进入虚拟环境
source /envs/django_-shop-system/bin/activate
2.安装uwsgi
pip install uwsgi
3.基于uwsgi运行项目 – 基于配置文件
在项目目录下创建配置文件
#socket= 0.0.0.0:8005 http= 0.0.0.0:8005 # http=120.55.47.111:8005 chdir=/opt/www/django_-shop-system/ wsgi-file = /opt/www/django_-shop-system/JiXuShopSystem/wsgi.py #callable = application processes = 2 threads = 2 virtualenv = /envs/django_-shop-system/ master=True pidfile=uwsgi.pid uid = 2001 gid = 1001 buffer-size = 65536 static-map = /static=/opt/www/django_-shop-system/static/
进入项目目录激活虚拟环境
cd /opt/www/django_-shop-system
source /envs/django_-shop-system/bin/activate
运行uwsgi
uwsgi --ini django_-shop-system_uwsgi.ini uwsgi --stop uwsgi.121339
后台运行
uwsgi --ini django_-shop-system_uwsgi.ini &
针对运行比较麻烦我们可以创建shell脚本 , 脚本放项目目录即可
shell脚本
reboot.sh – 重启uwsgi
#!/usr/bin/env bash echo -e "\033[34m--------------------wsgi process--------------------\033[0m" ps -ef|grep nb_uwsgi.ini | grep -v grep sleep 0.5 echo -e '\n--------------------going to close--------------------' ps -ef |grep nb_uwsgi.ini | grep -v grep | awk '{print $2}' | xargs kill -9 sleep 0.5 echo -e '\n----------check if the kill action is correct----------' /envs/nb/bin/uwsgi --ini nb_uwsgi.ini & >/dev/null echo -e '\n\033[42;1m----------------------started...----------------------\033[0m' sleep 1 ps -ef |grep nb_uwsgi.ini | grep -v grep
stop.sh – 关闭uwsgi
#!/usr/bin/env bash echo -e "\033[34m--------------------wsgi process--------------------\033[0m" ps -ef |grep nb_uwsgi.ini | grep -v grep sleep 0.5 echo -e '\n--------------------going to close--------------------' ps -ef |grep nb_uwsgi.ini | grep -v grep | awk '{print $2}' | xargs kill -9 sleep 0.5
赋予可执行权限
chmod 755 reboot.sh chmod 755 stop.sh
运行
./reboot.sh
七. 配置nginx环境
Nginx
Nginx:开源的高性能的HTTP和反向代理服务器
反向代理:服务器做出逆向操作 , 代理服务器接收用户发送的请求,解析转发给内部服务器,返回Response的响应。
WAF功能:阻止 web 攻击
Nginx特点:内存小 , 并发能力强 , 灵活好扩展
下载依赖包以及安装包
sudo yum install epel-release yum install -y nginx
如果这里配置有问题的同学也可以直接在宝塔中下载
进入/etc/nginx目录 , 找到nginx.conf , 将下面的代码替换原来的就行
nginx配置:
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 4096; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. # include /etc/nginx/conf.d/*.conf; server { listen 80; listen [::]:80; server_name 120.55.47.111; # root /usr/share/nginx/html; # Load configuration files for the default server block. # include /etc/nginx/default.d/*.conf; charset utf-8; location /static { alias /opt/www/django_-shop-system/static; } location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8005; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }
启动nginx
systemctl start nginx systemctl stop nginx # 重启 开机启动 systemctl enable nginx