trip项目前端和python django后端部署

109 阅读5分钟

一、准备操作系统,安装必备软件

1、web服务器Nginx

二、配置Nginx

三、部署Vue.js项目

1、dist文件存放在一个目录下 image.png 2、配置default.conf文件 image.png

四、部署Django项目

1、mysql

  • 安装mysql
sudo apt install mysql-server
  • 启动mysql
sudo /etc/init.d/mysql start
  • 以root身份登录并调整用户身份验证
sudo mysql
SELECT user,authentication_string,plugin,host FROM mysql.user;
  • 可以确认 root 用户确实使用 auth_socket 插件进行了身份验证。我们需要使用下面的“ALTER USER”命令切换到“密码验证”的使用。确保使用安全密码(应超过 8 个字符,结合数字、字符串和特殊符号),因为它将替换你在执行上述命令“sudo mysql_secure_installation” 时设置的密码。运行以下命令。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
  • 重新加载授权表并将更改更新到 MySQL 数据库。通过执行以下命令来执行此操作。
FLUSH PRIVILEGES;
  • 确认 root 用户不再使用 auth_socket 进行身份验证。通过再次运行以下命令来执行此操作。
SELECT user,authentication_string,plugin,host FROM mysql.user;
  • 由于我们更改了 root 的身份验证方法,因此我们无法使用之前使用的相同命令打开 MySQL 控制台。即“sudo mysql”。我们需要包括用户名和密码参数,如下所示。
mysql -u root -p
  • 查看权限
select user,host from mysql.user;

image.png 目前root只有localhost权限

  • 更新权限
update mysql.user set host = '%' where user = 'root';

image.png

然后打开navicat premium尝试连接数据mysql数据库

image.png

由于服务器有防火墙机制,所以连接失败。3306端口为对外开放。

  • 防火墙操作
# 开启
service firewalld start
# 重启
service firewalld restart
#关闭
service firewalld stop
  • 防火墙配置,把3306端口配置进去,防止拦截
# 查询端口是否开放
firewall-cmd --query-port=3306/tcp
# 开放3306端口
firewall-cmd --permanent --add-port=3306/tcp
# 移除3306端口
firewall-cmd --permanent --remove-port=3306/tcp
# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
  • 进入云服务器
vi /etc/mysql/mysql.conf.d/mysqld.cnf
  • 修改数据库配置文件
bind-address            = 0.0.0.0
mysqlx-bind-address     = 0.0.0.0
  • 然后navicat premium连接数据成功。 image.png

  • 安装redis

sudo apt install redis-server
  • Redis 服务将会自动启动。想要检查服务的状态
sudo systemctl status redis-server
  • 默认情况下,Redis 不允许远程连接。配置 Redis 来接受远程访问,使用你的文本编辑器打开 Redis 配置文件。
cd /etc/redis
  • 修改redis.conf文件
vim redis.conf
 注释掉
 bind 127.0.0.1 ::1
 修改
 protected-mode no
 打开requirepass并设置密码
 requirepass **********
  • 保存这个文件,并且重启 Redis 服务,使应用生效:
sudo systemctl restart redis-server
  • 使用下面的命令来验证 Redis 服务器正在监听端口6379
ss -an | grep 6379
  • 下一步,你将需要配置你的防火墙,允许网络流量通过 TCP 端口6379

  • 将Python项目放入云服务器目录

  • 通过pycharm导出本地配置文件

pip3 freeze > requirements.txt
  • 用check检查是否正确
python3 manage.py check
  • 在数据中创建数据表

image.png

  • 执行数据库同步
python3 manage.py migrate

image.png

  • 把djiago项目部署在wsgi上面,静态文件(js/css/img)通过nginx解析磁盘,动态请求通过nginx解析wsgi。
pip install uwsgi
  • 创建trip.ini配置
[uwsgi]
socket = 127.0.0.1:9090
master = 1
processes = 1
pidfile = /var/run/tripPython.pid
daemonize = /var/log/uwsgi/tripPython.log
module = tripPython.wsgi:application
chdir = /mnt/www/tripPython
listen = 100
buffer-size = 32768
max-requests = 200
  • 新建目录
mkdir -p /var/log/uwsgi/
  • 启动配置
uwsgi --ini tripPython.ini

image.png

  • ngnix配置
cd /etc/nginx/conf.d
server {
    listen       8000;
    server_name  localhost;
    location / {
        uwsgi_pass   127.0.0.1:9090;
        uwsgi_param  UWSGI_SCRIPT tripPython.wsgi;
        include uwsgi_params;
    }
  • 然后刷新nginx
nginx -s reload
  • 项目settings.py中
ALLOWED_HOSTS = ['47.92.143.244','127.0.0.1']
  • 修改完项目需要重启uwsgi 通过ps -ef | grep uwsgi查看端口号,然后通过kill -HUP 6829重启uwsig。

image.png

cd /mnt/www/tripPython
python3 manage.py

image.png

python3 manage.py collectstatic

image.png

  • 这里有一个冲突我们需要设置下

image.png

  • 然后再执行python3 manage.py collectstatic image.png

  • 然后改回原来的配置

image.png

  • 现在静态文件还不能识别,静态文件应该去磁盘查找,我们需要配置下。

image.png

image.png

image.png

  • 我们继续增加配置

image.png

  • 非8000端口也可以访问静态资源了 image.png

image.png

image.png

  • 然后master就可以访问 image.png

五、项目中终端用到的命令

  • 在终端中使用jobs命令可以查看当前正在运行的后台进程。该命令会显示一个列表,包含所有正在后台运行的进程的进程ID(PID)、启动命令和启动时间等信息。"fg 7" 命令用于将第7个后台进程切换到前台继续运行。
jobs 
fg 7
  • 该命令是使用kill命令向PID为222572的进程发送SIGUSR2信号。SIGUSR2信号是一个用户定义信号,可以用于各种目的,例如提示进程执行特定操作或触发软件升级。
kill -USR2 222572
  • 这个终端命令用于列出所有用户下的所有进程,并通过 grep 命令过滤出包含 redis 关键字的进程信息。
ps aux|grep redis
ps -ef | grep uwsgi