likes
comments
collection
share

搭建个人网站中踩过的坑(index)

作者站长头像
站长
· 阅读数 26

对于每个互联网初学者而言,学习过程也是一个创造的过程。

无论是遵从互联网开源精神,还是为了打造个人IP,将自己的成果展示出来与大伙交流感觉就很酷

为了将我学习开发一年多以来的成果展示出来,作为个人价值的体现,我从头开始研究如何搭建我的博客

预计展示的内容有:

  • 学习笔记
  • 服务提供
  • 自我介绍

主要要做的工作:

  1. 初始博客搭建
    1. 通过hexo创建模板
    2. 选择具体themes,编写相应config
    3. 即可通过github.io访问到初始博客
  2. 为了在博客中提供服务,租借云服务器
    1. 购买阿里云ECS

    2. 设法部署前后端项目

      【这个在我的流程中是最烦的,因为我的后端有java + python,需要各自协调版本问题,在Linux中手动安装python以及各种依赖会有很多莫名其妙的问题,并且java + python的配置交织在一台服务器上,一旦由于python配置太乱想要重置云盘还会影响Java,需要想个办法隔离配置(比如Anaconda)】

  3. 购买域名

成果展示:

www.songlin.work

潜在问题记录:

  • vue第一个页面加载太慢,具体而言一个js文件content download 二十多秒,初步怀疑ECS带块太低
  • GPT接口暂未调通
  • 后端ECS通过Anaconda管理Python版本消耗略大
  • myAIs服务用户体验较差,尽快把新版本从本地迁移到云服务器

接下来逐步更新过程中踩到的坑

关于阿里云ECS

  1. ECS提供不同操作系统层面实现的Linux,早期我从Alibaba Cloud Linux,自认为阿里自定义过性能一定更适合做云服务器吧;实际上由于网上的相关配置教程都是基于主流CentOS,Ubuntu等等,用阿里魔改版可能有诡异的bug

    我遇到的问题如下:

    • 由于项目需要在python中install openai,于是必须要python高版本;当用阿里魔改版操作系统安装Python3.11时,无法自动安装stuptools和pip,后续手动安装setuptools时说明操作系统缺失zlib模块,zlib需要重新安装;而CentOS应该自带了zlib模块。
    • 我下载好pip 23后,依然无法安装pandas1.1.5之后的版本,这个有点匪夷所思

    阿里云文档中没有关于魔改版安装Python即依赖的教程,提了相应工单后那边的大佬也建议我换其他版本操作系统。

  2. 关于Python及其依赖的版本冲突问题

    Linux的yum自带Python2.7,阿里魔改版还自带Python3.6,但这些并不是问题,简单改下软连接即可 我遇到的问题:

    • 当安装openai接口时,缺失_ssl依赖,但不清楚安装哪个版本的openssl,按照csdn某篇博客安装某个版本后,执行具体代码时又出现异常:‘无法从ssl中导入SSL_VERSION_NUMBER’,之后尝试降低openai版本,始终未能搞定;最后通过Anaconda解决的版本冲突的问题

    Conda环境管理器如何解决依赖冲突问题?

    其他Python依赖管理工具如poetryvirtualenv等暂未了解

关于java & SpringBoot

  1. SpringBoot项目的正常getMapper接口,外界无法访问到

    在SpringBoot项目中,常规而言只需要定义好Controller类中的RequestMapping接口就可以接受到外界的访问,如下 搭建个人网站中踩过的坑(index) 但是诡异的是偶尔会莫名其妙报404找不到路径定义;

    这种bug是最让人手足无措的,因为这违背了SpringMVC的基本特性,想向低层探索并不简单

    最后问题归因于SpringBoot3.0.3该版本自身缺陷,切换3.0.11后bug修复【中文互联网没人说这个版本的缺陷,Maven中也没有说明,但是实际bug确实被我碰出来了】

  2. Java代码如何调用Python脚本

    Java调用Python程序方法总结(最全最详细)_java可以调用python接口吗-CSDN博客

    我参考其中Java通过Process类启动进程的方法

    具体而言:

    • Win下 Java核心代码:
    String[] args1 = new String[3];  
    args1[0] = "python";  
    //args1[0] = "C:\\Users\\PycharmProjects\\pythonProject\\.venv\\Scripts\\python.exe";
    args1[1] = modules.path;  
    args1[2] = content;  
    Runtime runtime = Runtime.getRuntime();  
    Process proc = runtime.exec(args1);  
    InputStream is = proc.getInputStream();  
    byte[] bytes = is.readAllBytes();  
    String ansOrigin = new String(bytes, Charset.forName("gbk"));
    
    • Win下python核心代码:
    content = sys.argv[1]
    client = OpenAI(
    api_key="KEY",
    base_url="https://api.moonshot.cn/v1",
    )
    completion = client.chat.completions.create(
    model="moonshot-v1-8k",
    messages=[
        {"role": "system",
        "content": "你是 Kimi,由 Moonshot AI "
                  "提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI "
                   "为专有名词,不可翻译成其他语言。"},
      {"role": "user", "content": content}
    ],
    temperature=0.3,
    )
    print(completion.choices[0].message.content)
    

    此处在Java代码中传入的三个参数,就是在命令行输入的三个内容

    搭建个人网站中踩过的坑(index) 同理在Java代码中将第一个参数使用python具体地址,结果也可以执行(因为在命令行世界输入python.exe的具体地址也能启动python) 搭建个人网站中踩过的坑(index)

    经测验,Linux中第一个参数无论传入python具体路径,还是软连接后的python也都可以执行

    同时sys.argv获取参数默认从1开始

关于Vite

转载自:https://juejin.cn/post/7372364678410027047
评论
请登录