最悉心的指导教程——阿里云创建ECS实例教程+Vue+Django前后端的服务器部署(通过宝塔面板)

各位看官老爷们,点击关注不迷路哟。你的点赞、收藏,一键三连,是我持续更新的动力哟!!!

阿里云创建ECS实例教程

注意:

阿里云有300元额度的免费适用期哟

白嫖~~~~

注册了阿里云账户后,进入上图页面,点击控制台

注意:宝塔上的Python项目只支持Centos操作系统,其他任何系统都不行

博主有两天的时间都是使用的Ubuntu,太心酸了,

以上操作结束后实例创建成功,先重新设置密码!!

以上实例创建成功后:就可以来进行以下操作啦~~~

Vue+Django前后端的服务器部署(通过宝塔面板)

1. 电脑本地配置前后端相关代码(前端静态资源托管到后端Django中)

1.1 前端部分:

主要操作文件:vite.config.js和axios.js

1.vite.config.js

复制代码
server: {
    proxy: {
      '/api': {
        // target: 'http://127.0.0.1:8000',
        target: 'http://47.109.155.116:8000',
        changeOrigin: true,
        // rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  },

该文件中只需要注意server中的proxy选项中的target属性:设置成服务器的公网IP:端口号即可

2.axios.js

复制代码
const instance = axios.create({
  // baseURL: 'http://127.0.0.1:8000/api/',
  baseURL: 'http://47.109.155.116:8000/api/',
  timeout: 5000,
})

该文件中只需要注意baseURL,同样只需要替换成公网IP:8000

将以上相关代码修改过后:

如果使用的是npm管理控制的

那么久直接使用:

复制代码
npm run build

生成dist文件夹

1.2 后端部分:

主要操作文件:settings.py和urls.py文件

1.settings.py文件:

复制代码
将所有的localhost地址全部改为服务器ip地址
​
然后:
在TEMPLATES中添加:
"DIRS":[os.path.join(BASE_DIR, 'frontend/dist')],
​
DATABASE里面的相应信息改成服务器中的宝塔面板中创建的数据库
​
添加一个:
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "frontend/dist/static"),
]
STATIC_ROOT = os.path.join(BASE_DIR, "static")
​
注意:将上文中的前端的dist文件夹复制到Django文件夹中的新建文件夹“frontend”下面

2.urls.py文件:

复制代码
urlpatterns = [
            .......
            # 添加前端路由 - 匹配所有路径到Vue入口文件
    re_path(r'^.*$', TemplateView.as_view(template_name='index.html')),
    ]
# 开发环境静态文件服务
if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

以上的完成以后,就运行以下命令:

复制代码
pip freeze > requirements.txt (导出该Django项目的依赖包,用于在云端服务器上的终端中运行安装)
python manage.py collectstatic

命令的用处就是:将前端的静态资源搜集起来放置于Django项目文件夹中,这样我们就可以只上传------Django项目到宝塔面板上了

2. 远程连接:安装宝塔面板

2.1 服务器操作:

点击"远程连接"登录进去终端

注意:如果你不知道自己的密码就点击------重置密码即可

以上就是登录进去后的界面:

接下来我们就进行------安装"宝塔面板"的操作:

复制代码
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

如上图所示:

会弹出宝塔面板账户登录信息。

我们通过所给的外网面板地址来登录宝塔面板

2.1宝塔面板操作:准备事项

  1. 登录进入宝塔面板后:

    首先先下载相关插件:


    这里需要注意一点的是:必须要下载Mysql后才能下载phpMyadmin插件。

  2. 注意版本的搭配:我这里下载的是Mysql8.0版本以及Python3.9.9

  3. 添加数据库:

    值得注意的是:这里有一个非常非常重要的点------下图红圈中的root密码

    可以通过红圈中的选项来更改密码:

    因为最开始的root密码是随机生成的(后面的终端操作中登录mysql时需要密码就是这个你修改后的root密码

    我就是在这里卡了一天------最后才找到这个的!!!!!!!!!!

  4. 添加站点

    添加一个PHP项目:其中的域名------如果你没有申请域名的话你就直接输入你的ECS实例(公网IP地址 即可),同时在这里选择穿件相应版本的数据库

  5. 点击文件功能

    在图片中的位置(公网IP目录下添加你的Django工程文件)

3. 将托管后的Django代码工程上传到宝塔页面的"文件"栏目中

3.1上传文件

4. 配置Python环境

4.1 "Python项目"中的引导安装

如果你是第一次点击网站中的Python项目------那么你就可以直接通过弹出的安装Python按钮,选择你对应需要的版本安装即可。

4.1.1 添加Python项目

项目名称:随便取名

Python环境:刚刚安装的那个

启动方式:命令行启动(我采用的就是命令行启动------因为我这个项目仅仅还在测试阶段,后续会更新上线部署方式的部署方法,点击关注我,不迷路哟

项目路径:选择刚刚上传的项目的"父级目录(根目录)"

启动命令(开发模式):

复制代码
python manage.py runserver 0.0.0.0:8000

项目初始化命令:

通常都是

复制代码
python3 manage.py makemigration
python3 manage.py migrate

4.2 "Python环境"------手动安装

复制代码
mkdir local
cd local
wget https://www.python.org/ftp/python/3.9.9/Python-3.9.9.tgz
tar -xzf Python-3.9.9.tgz
​
yum groupinstall "Development Tools" -y
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel \
yum install sqlite-devel readline-devel tk-devel gdbm-devel db4-devel \
yum install libpcap-devel xz-devel libffi-devel -y
​
make distclean
​
cd Python-3.9.9
./configure --prefix=/usr/local/python3.9
./configure --enable-optimizations
make -j4
make altinstall
ln -s /usr/local/python3.9/bin/python3.9 /usr/bin/python3.9
​
python3.9 --version
​
cd /www/wwwroot/47.109.155.116/Security_System_project
python3.9 -m venv vsvenv
source vsvenv/bin/activate
​
pip3 install -r requirements.txt(如果遇到Mysql的问题:多半是版本不匹配)
出现问题:
# 查找 mysql.h 和 libmysqlclient.so
find / -name 'mysql.h' -type f 2>/dev/null
find / -name 'libmysqlclient.so*' -type f 2>/dev/null
找到具体文件位置后就可以设置具体的环境变量了
# 设置环境变量
export MYSQLCLIENT_CFLAGS="-I/usr/include/mysql"
export MYSQLCLIENT_LDFLAGS="-L/www/server/mysql/lib -lmysqlclient"
查看具体的环境变量值
echo $MYSQLCLIENT_CFLAGS
echo $MYSQLCLIENT_LDFLAGS
​
​
​
那就:
安装Mysql8.0的社区版本:
# 添加 MySQL 官方 Yum 源
wget https://dev.mysql.com/get/mysql80-community-release-el7-5.noarch.rpm
rpm -Uvh mysql80-community-release-el7-5.noarch.rpm
​
# 安装开发包
yum install mysql-community-devel
​
再次确认 /usr/include/mysql/ 里存在如下宏的头文件:
grep MYSQL_OPT_SSL_KEY /usr/include/mysql/mysql.h
​
export MYSQLCLIENT_CFLAGS="-I/usr/include/mysql"
export MYSQLCLIENT_LDFLAGS="-L/usr/lib64/mysql -lmysqlclient"
pip install mysqlclient==2.2.7
​
​
pip install django
然后安装依赖requierments.js:
pip install requierments.js
python3 manage.py makemigrations
​
pip install django-cors-headers
pip install djangorestframework
pip install djangorestframework-simplejwt
​
python3 manage.py makemigrations
​
​
mkdir /home/hkc
chown hkc:hkc /home/hkc
chmod 700 /home/hkc
# Step 1: 创建 mysql 用户
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
​
# Step 2: 修改权限
chown -R mysql:mysql /www/server/mysql
​
# Step 3: 切换用户启动(推荐)
su - mysql
/www/server/mysql/bin/mysqld --defaults-file=/www/server/mysql/my.cnf &
​
# 或者 root 用户下强制启动(不推荐)
/www/server/mysql/bin/mysqld --defaults-file=/www/server/mysql/my.cnf --user=mysql &
​
python3 manage.py migrate
python3 manage.py runserver 0.0.0.0:8000

5. 数据库相关

点击以上的"终端",进入Python项目终端执行以下操作:

复制代码
mysqladmin -u root -p ping(确认mysql是否启动)
​
-- 登录数据库:
mysql -u root -p
​
-- 查看有哪些用户及主机:
SELECT user, host FROM mysql.user;
​
-- 查看某用户的权限:
SHOW GRANTS FOR 'Django_user'@'localhost';
​
-- 如果权限不足可授予权限:
GRANT ALL PRIVILEGES ON your_database_name.* TO 'Django_user'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
​

通过命令:

复制代码
mysql --help | grep "Default options" -A 1
mysql --print-defaults(Mysql实际加载的是哪个配置文件)
查看文件内容:
cat /etc/my.cnf
然后完善[mysqld]部分的相应内容:

可以知道配置文件my.cnf的位置:

便于我们查看配置文件总是否配置正确:

如果没有以下内容:

复制代码
# 允许远程连接(注释掉则允许所有IP)
bind-address = 0.0.0.0

就要添加进入该配置文件中

注意:我们不仅需要再服务器的"安全组"中放行相应的端口更需要在宝塔界面的终端的防火墙中放行端口

上图中:端口8000就放行不了,需要时8000/8000才行

放行端口命令:

复制代码
首先:检查防火墙开放端口
firewall-cmd --list-ports
​
开放新端口:
sudo firewall-cmd --add-port=8001/tcp --permanent
sudo firewall-cmd --reload

如果放行成功的话,会显示success的。

补充一点:

1. 找出占用端口的进程

复制代码
sudo lsof -i :8000

复制代码
sudo netstat -tulnp | grep :8000

2. 终止占用端口的进程

找到 PID 后,使用:

复制代码
sudo kill -9 [PID]
复制代码
sudo kill -9 12345

3. 尝试使用不同端口

复制代码
python manage.py runserver 0.0.0.0:5173 --insecure

6. 以上所有步骤完成后

运行:

复制代码
python manage.py collectstatic
​
python3 manage.py makemigration
​
python3 manage.py migrate
​
python manage.py runserver 0.0.0.0:8001 --insecure

文章有写的不当的地方,欢迎在评论区中指正修改。如果感觉文章实用对你有帮助,欢迎点赞收藏和关注,你的点赞关注就是我动力,大家一起学习进步。

有不懂的可以在评论区里提出来哟,博主看见后会及时回答的。

相关推荐
你的人类朋友32 分钟前
Let‘s Encrypt 免费获取 SSL、TLS 证书的原理
后端
老葱头蒸鸡34 分钟前
(14)ASP.NET Core2.2 中的日志记录
后端·asp.net
YCOSA202538 分钟前
ISO 雨晨 26200.6588 Windows 11 企业版 LTSC 25H2 自用 edge 140.0.3485.81
前端·windows·edge
小白呀白44 分钟前
【uni-app】树形结构数据选择框
前端·javascript·uni-app
吃饺子不吃馅1 小时前
深感一事无成,还是踏踏实实做点东西吧
前端·svg·图形学
jie*1 小时前
小杰机器学习高级(five)——分类算法的评估标准
人工智能·python·深度学习·神经网络·机器学习·分类·回归
李昊哲小课1 小时前
Spring Boot 基础教程
java·大数据·spring boot·后端
码事漫谈1 小时前
C++内存越界的幽灵:为什么代码运行正常,free时却崩溃了?
后端
Swift社区2 小时前
Spring Boot 3.x + Security + OpenFeign:如何避免内部服务调用被重复拦截?
java·spring boot·后端
90后的晨仔2 小时前
Mac 上配置多个 Gitee 账号的完整教程
前端·后端