【web系列十五】Ubuntu系统部署Web项目

导读:本篇文章讲解 【web系列十五】Ubuntu系统部署Web项目,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

写在前面

前端部署

安装nginx

编译vue工程

传输项目到服务器

修改nginx配置

修改启动用户

重启服务

打开网页

前端踩坑记录

无法使用getCurrentInstance.ctx.$refs获取页面组件元素

后端及数据库部署

mysql踩坑记录

版本问题

远程访问

中文乱码

参考文献


写在前面

        项目架构:

                前端Vue3+后端Django+数据库MySQL

        记录一下部署流程,初次尝试还是踩了不少坑的。

前端部署

        前端部署使用的是Nginx,可能很多初学者也没有听过这个工具,其实我也是第一次接触。

        一句话说Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。

        我体验了一下,感觉就是类似一个方便前端部署的、支持多并发的入口网关。

        大家想深入了解可以看这篇文章8分钟带你深入浅出搞懂Nginx – 知乎 (zhihu.com)

【web系列十五】Ubuntu系统部署Web项目

安装nginx

        先贴出一个参考教程。

 ubuntu安装nginx_小白、瑶的博客-CSDN博客_ubuntu 安装nginx

         教程里讲了两种安装方式,我是直接用apt安装的。

1、安装

sudo apt-get install nginx

2、查看nginx是否安装成功

nginx -v

3、启动nginx

service nginx start

4、重启

service nginx restart

5、停止

service nginx stop

        启动后,在网页重输入本机ip地址,即可看到nginx的欢迎页面。至此nginx安装成功。

6、文件位置

        我是ubuntu18下安装的,与参考文献中博主的文件位置有一些出入,这里记录一下:

  • /usr/lib/nginx:主程序
  • /etc/nginx:存放配置文件
  • /usr/share/nginx:存放静态文件
  • /var/log/nginx:存放日志

编译vue工程

1、修改vue.config.js

const {defineConfig} = require('@vue/cli-service')

module.exports = defineConfig({
    transpileDependencies: true,
    lintOnSave: false,//关闭语法检查
    
    // 基本路径(下面是重点)
    publicPath: '/',
    // 输出文件目录
    outputDir: 'dist',
    configureWebpack: {
        externals: {}
    }
})

2、编译项目

npm run build

         这时候可以发现,工程中多了一个dist文件夹,里面就是编译后的工程,可以直接拿来部署。

【web系列十五】Ubuntu系统部署Web项目

传输项目到服务器

        这里用的是filezilla工具,如果你的ubuntu服务器没有开启相应的服务的话是使用不了的。也先贴出教程,博主亲测,两种方法都可行。

ubuntu ftp连接 filezilla连接 FileZilla提示错误:认证失败,严重错误,无法连接到服务器:huizai的博客 – IIS7站长之家【WWW.IIS7.COM】

       安装完之后直接将dist文件夹传输到服务器上就行。

修改nginx配置

        配置文件在/etc/nginx下,叫nginx.conf,打开可以发现他include另外两个文件夹,/etc/nginx/conf.d/*.conf;/etc/nginx/sites-enabled/*;去这两个文件夹下看一下可以发现前一个是空的,后一个有一个default文件快捷方式,指向的问价你在/etc/nginx/sits-available,我们要修改的就是这个文件。

        可以把文件中其他内容都注释掉,然后添加一下内容

server {
    listen 8080;#前端端口
    server_name web_ui;#服务名,类似域名

    location / {
        root /home/Project/web_ui/dist; #刚才传输的dist文件夹
        try_files $uri $uri/ /index.html; #防止刷新网页时出现404报错
        index index.html index.htm;
    }

    location /vcipro-api/ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass https://10.40.100.15:8020/;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

        顺便贴一下ubuntu下vim使用技巧的两篇文章

VIM命令大全_wongIEEE的博客-CSDN博客_vim命令

ubuntu中vim多行注释与取消注释_一只大大大媛的博客-CSDN博客_ubuntu注释

修改启动用户

        这个在/etc/nginx/nginx.conf中,将user www-data;修改成user root;否则启动后,网页会显示403forbidden,且在日志中会看到(13: Permission denied)报错。

        这个错误的参考资料如下 解决Nginx出现403 forbidden (13: Permission denied)报错的四种方法_西奥斯的博客-CSDN博客_nginx403

重启服务

service nginx restart

打开网页

        http://服务器地址:8080/

前端踩坑记录

无法使用getCurrentInstance.ctx.$refs获取页面组件元素

        这是由于使用dist打包后getCurrentInstance属性会失效,解决办法如下:

import { ComponentInternalInstance, getCurrentInstance } from "@vue/runtime-core";

let currentInstance = getCurrentInstance() as ComponentInternalInstance;

currentInstance.ctx._.refs.test.test();

后端及数据库部署

        由于Django后端及Mysql数据库都不是很复杂,因此,我选择直接搭建开发环境的方式。可以参考博主的这几篇文章。

【web系列二】Django服务器搭建_Nicholson07的博客-CSDN博客_django 服务端

【web系列十】Vue3+Django+MySQL搭建前后端框架_Nicholson07的博客-CSDN博客_前后端通信框架

【web系列十一】使用django创建数据库表_Nicholson07的博客-CSDN博客_django创建数据库表

mysql踩坑记录

版本问题

        值得注意的是,Ubuntu下Mysqldb不兼容Python3.5,可以使用Pymysql替代,需要修改一下代码,修改完的版本在win下也可以正常运行,博主亲测。

        报错如下:NameError: name ‘_mysql’ is not defined

1、安装pymysql

pip install pymysql

2、配置数据库

        修改项目的setting.py文件

import pymysql 
pymysql.install_as_MySQLdb()

3、如果还报错

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.0 or newer is required; you have 0.10.1.

         可以加一行代码,直接指定版本来解决。

import pymysql
pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb()

远程访问

        在博主的这篇文章->数据库部署->Ubuntu系统下要注意中有了记录。

【web系列九】快速上手MySQL数据库_Nicholson07的博客-CSDN博客

中文乱码

        ubuntu下数据库默认是无法显示中文的,中文数据会显示为'”??”。

        需要修改一下Mysql的配置文件,在/etc/mysql/mysql.cnf,要注意系统版本。

[client]
default-character-set=utf8
[mysqld_safe]
default-character-set=utf8
[mysqld]
default-character-set=utf8  #ubuntu12.04以前的版本
character-set-server=utf8   #ubuntu12.04以后的版本
[mysql]
default-character-set=utf8

        然后重启mysql,下面两种方式都可以。

/etc/init.d/mysql restart
service mysql restart

         旧的mysql数据表是不会生效的,需要重新创建,然后可以输入以下执行查看是否修改成功了。

show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

参考文献

8分钟带你深入浅出搞懂Nginx – 知乎 (zhihu.com)

ubuntu安装nginx_小白、瑶的博客-CSDN博客_ubuntu 安装nginx

ubuntu ftp连接 filezilla连接 FileZilla提示错误:认证失败,严重错误,无法连接到服务器:huizai的博客 – IIS7站长之家【WWW.IIS7.COM】

 VIM命令大全_wongIEEE的博客-CSDN博客_vim命令

ubuntu中vim多行注释与取消注释_一只大大大媛的博客-CSDN博客_ubuntu注释

解决Nginx出现403 forbidden (13: Permission denied)报错的四种方法_西奥斯的博客-CSDN博客_nginx403

NameError: name ‘_mysql‘ is not defined_期与遇的博客-CSDN博客

Ubuntu中MySQL中文有乱码的情况如何处理-群英 (qycn.com)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/100773.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!