Vue+Django部署Ubuntu服务器 首先用MobaXterm(或其他软件)连接上ubuntu服务器
ubuntu服务器上需安装:
mysql
python3(django+uwsgi)
nginx
整体架构
查看端口与进程 查看mysql的3306、django项目的8000等要用的端口有没有被占用
1 2 3 4 netstat -ap | grep 8000 kill -9 pid号
查看mysql、nginx等进程
1 2 3 4 5 ps -ef | grep mysqlkill -9 pid号
mysql安装配置 mysql8.0
安装与密码基本配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 sudo apt-get install mysql-server sudo apt-get install mysql-client systemctl status mysql.service sudo mysql_secure_installation mysql -u root -pset global validate_password.policy =LOW;set global validate_password.length =6; alter user 'root' @'localhost' identified with mysql_native_password by 'password' ; exit
若忘记密码,据说不能用skip-grant-tables来跳过密码登录(ubuntu20.04安装mysql_Ubuntu 20.04安装MySQL 8.0.20记_zibuyu9的博客-CSDN博客 )
1 2 sudo cat /etc/my sql/debian.cnf
创建两个新用户,一个供项目访问一个供远程访问(host不同),并授予项目数据库的所有权限、并使mysql能够远程连接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # 进入mysql数据库 use mysql; # 查看user 表select * from user ; # 查看用户和hostselect user ,host from user ; # 创建新用户(一个host为localhost,一个host为远程主机ip地址)create user '用户名' @'要访问的主机ip地址(%为任意)' identified by 'password' ; # 授予该用户数据库权限grant all privileges on 数据库名(*为任意).表名(*为任意) to '用户名' @'要访问的主机ip地址(%为任意)' ; # 或grant all privileges on 数据库名(*为任意).表名(*为任意) to '用户名' @'要访问的主机ip地址(%为任意)' with grant option ; # 刷新权限,使之生效 flush privileges ; # 退出mysqlexit # 修改mysqld.cnf配置文件中的bind-address sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf bind-address = 127.0 .0 .1 ,服务器ip地址 # 重启mysql sudo systemctl restart mysql.service # 查看3306 端口的地址 ss -anplt | grep 3306 # 验证是否能够远程连接 mysql -u 用户名 -p -h 数据库的ipv4地址
开启数据库操作日志
1 2 3 4 show variables like 'gen%' ;set global general_log =ON;
python3虚拟环境 创建虚拟环境来运行项目,方便python环境管理
1 2 3 4 5 6 7 8 9 10 11 12 pip install virtualenv virtualenv 环境名称 virtualenv 环境名称 --python=python3.8source 虚拟环境目录/bin/activate deactivaterm -rf 环境名称
也可以使用virtualenvwrapper统一配置和管理虚拟环境
上传本地项目 vue中的后端api请求的请求ip地址改为服务器ip地址,端口应为后面nginx监听的端口
首先将vue打包放到django项目中,然后上传django项目;或者vue项目也上传
可以使用git上传项目或直接将项目打包文件传输至服务器
vue环境安装
1 2 3 4 5 6 7 8 9 10 11 sudo apt-get install nodejs node -vnpm -v sudo npm install -g vue-cli sudo npm install -g @vue/cli vue -V
上传成功后在虚拟环境中安装django依赖包
1 2 3 4 # 本地django项目生成依赖包 pip freeze > requirements.txt # 在服务器安装依赖包 pip install -r requirements.txt
服务器上安装报错的话可以根据生成的requirements.txt手动安装
其中,下载mysqlclient的方法为
1 2 sudo apt-get install libmysqlclient-dev pip install mysqlclient
进入mysql创建django的数据库,并修改django设置文件中的数据库配置
1 2 mysql -u root -pcreate database example;
最后运行一下django项目,看能不能成功
1 2 3 python manage.py makemigrationspython manage.py migratepython manage.py runserver
若出现问题,可参考部署windows一文
uwsgi安装配置 安装
配置uwsgi,新建uwsgi.ini文件并配置(路径不能用~符号,只能用根目录/开始写绝对路径),其中uwsgi.log需手动创建
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [uwsgi] master = true processes = 8 enable-threads = true threads = 4 chdir = django项目路径wsgi-file = django项目wsgi.py文件路径socket = 服务器ip:8001 chmod-socket = 660 vacuum = true status = django项目路径/uwsgi.statuspidfile = django项目路径/uwsgi.pidlogto = django项目路径/uwsgi.logvirtualenv = 虚拟环境路径
运行uwsgi,启动django项目
uwsgi常用命令
uwsgi后台运行 用systemd将uwsgi设置为系统服务,开启uwsgi服务使其在后台一直运行
在虚拟环境中查看虚拟环境的uwsgi命令路径
在/etc/systemd/system下创建uwsgi.service文件(路径应为绝对路径)
1 2 3 4 5 6 7 8 [Unit] Description =singing evaluation music web uwsgiAfter =network.target[Service] ExecStart =虚拟环境的uwsgi命令路径 --ini uwsgi.ini路径ExecStop =虚拟环境的uwsgi命令路径 --stop uwsgi.pid路径[Install] WantedBy =multi-user.target
开启uwsgi服务
1 systemctl start uwsgi.service
uwsgi服务的常用命令
1 2 3 4 5 6 7 8 9 10 system ctl enable uwsgi.servicesystem ctl start uwsgi.servicesystem ctl stop uwsgi.servicesystem ctl restart uwsgi.servicesystem ctl status uwsgi.service
nginx安装配置 安装
1 sudo apt-get install nginx
配置项目的nginx服务器块
在/etc/nginx/sites-available目录下新建配置文件example并配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 server { listen 8000 ; server_name 服务器ip; location /app { uwsgi_pass 服务器ip:8001 ; include /etc/nginx/uwsgi_params; } location /static { root django项目的static目录路径; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
在sites-enabled目录建立该配置的链接,使nginx启动时读取该配置
1 sudo ln -s /etc/ nginx/sites-available/ example.com /etc/ nginx/sites-enabled/
重新启动nginx
登录刚配置的网址看是否有nginx的欢迎界面
nginx常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 systemctl enable nginxservice nginx start systemctl start nginxservice nginx stop systemctl stop nginxservice nginx restart systemctl restart nginxservice nginx status systemctl status nginxservice nginx reload systemctl reload nginx sudo nginx -s reload sudo nginx -t
nginx日志文件位置
1 2 3 4 /var/ log/nginx/ access.log/var/ log/nginx/ error.log
访问项目 运行nginx和uwsgi,访问服务器ip地址,端口为nginx的监听端口
参考 服务器部署 Vue 和 Django 项目的全记录 - ZewanHuang - 博客园 (cnblogs.com)
ubuntu安装Mysql数据库及安全配置_sudo mysql_secure_installation_昵称还在想呢的博客-CSDN博客
Ubuntu 中安装和配置 Nginx - Tozhang - 博客园 (cnblogs.com)