本文最后更新于 2024-06-10,

若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。

本站只有Telegram群组为唯一交流群组, 点击加入

文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请

您可以在 LAMP 服务器上设置的漫画和同人志管理器

项目地址:https://github.com/naiymu/konnichiwa

首页

1717963022818.webp

书签

1717963041375.webp

您需要一个本地 Web 服务器(使用Apache测试),启用 PHP(启用mysqli)并在Linux机器上运行MySQL服务器。 如果您是新手,您可以在互联网上找到许多有关设置这些服务器的指南。

要使下载选项卡正常工作,您需要启用 php-fpm 和 fastcgi。如果您想使用它,您可以查看如何设置它(无论您是否使用 konnichiwa,都应该使用它)。如果您决定使用 php-fpm,请务必仔细阅读下面部分

安装步骤

SQL 转储创建表

请在 mysql 命令行中运行以下命令创建表

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `authors`
--

DROP TABLE IF EXISTS `authors`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `authors` (
  `author` varchar(70) NOT NULL,
  `authorId` int(10) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`authorId`),
  UNIQUE KEY `UNIQUE` (`author`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `bookmarks`
--

DROP TABLE IF EXISTS `bookmarks`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `bookmarks` (
  `dirId` int(10) NOT NULL,
  `bookmark` varchar(50) NOT NULL,
  PRIMARY KEY (`dirId`),
  KEY `dirId` (`dirId`),
  CONSTRAINT `bookmarks_ibfk_1` FOREIGN KEY (`dirId`) REFERENCES `directories` (`dirId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `dir_author_link`
--

DROP TABLE IF EXISTS `dir_author_link`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `dir_author_link` (
  `dirId` int(10) NOT NULL,
  `authorId` int(10) NOT NULL,
  KEY `dirId` (`dirId`),
  KEY `authorId` (`authorId`),
  CONSTRAINT `dir_author_link_ibfk_1` FOREIGN KEY (`dirId`) REFERENCES `directories` (`dirId`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `dir_author_link_ibfk_2` FOREIGN KEY (`authorId`) REFERENCES `authors` (`authorId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `dir_tag_link`
--

DROP TABLE IF EXISTS `dir_tag_link`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `dir_tag_link` (
  `dirId` int(10) NOT NULL,
  `tagId` int(10) NOT NULL,
  KEY `dirId` (`dirId`),
  KEY `tagId` (`tagId`),
  CONSTRAINT `dir_tag_link_ibfk_1` FOREIGN KEY (`dirId`) REFERENCES `directories` (`dirId`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `dir_tag_link_ibfk_2` FOREIGN KEY (`tagId`) REFERENCES `tags` (`tagId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `directories`
--

DROP TABLE IF EXISTS `directories`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `directories` (
  `dirName` varchar(300) NOT NULL,
  `dirCover` varchar(300) NOT NULL,
  `dirId` int(10) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`dirId`),
  UNIQUE KEY `UNIQUE` (`dirName`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `favourites`
--

DROP TABLE IF EXISTS `favourites`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `favourites` (
  `dirId` int(10) NOT NULL,
  PRIMARY KEY (`dirId`),
  CONSTRAINT `favourites_ibfk_1` FOREIGN KEY (`dirId`) REFERENCES `directories` (`dirId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `tags`
--

DROP TABLE IF EXISTS `tags`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tags` (
  `tag` varchar(50) NOT NULL,
  `tagId` int(10) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`tagId`),
  UNIQUE KEY `UNIQUE` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

下载模块

从此处下载 并将 php文件保存为 scripts/simple_html_dom.php
这是下载选项卡所需要的。

我不希望每次打开网页时都连接到 CDN。因此,请从此处下载 jquery min(不是 slim)版本 ,并将文件保存为。scripts/jquery.js

但是,如果您不想下载 jquery 并且愿意连接到 CDN,则可以编辑该 scripts/header.php文件。变量包含您可以编辑以引用 CDN 的 $head行。<script src="/scripts/jquery.js"></script>

字体

如上所述,如果没有 CDN。从 此处下载 fontawesome 并将整个目录作为 assets/fontawesome

与上面相同,如果您真的想要,您可以直接编辑 $head中的变量 ,特别是引用 CDN 的那一 scripts/header.php行 。<link rel="stylesheet" href="/assets/fontawesome/css/all.css">

相关文件(必须)

登录.php

根据您的 sql 设置创建一个文件 scripts/login.php。文件内容如下

<?php
$db_hostname = "hostname";
$db_username = "user";
$db_password = "password";
$db_database = "dbname";

图片

显然需要同人志图片所在的目录。每个同人志都应该有其单独的子目录。子目录可以有其自己的嵌套子目录。

该目录及其所有子目录必须将此目录命名为 Doujinshi

例如,如果实际的目录是/home/user/Private/doujinshi,那么你可以添加一个符号链接图像,链接到/home/user/Private而不是/home/user/Private/doujinshi,这可以通过命令(可能需要sudo)来完成。

cd konnichiwa
ln -s /home/user/Private images

目录.php

scripts/directory.php按照你的目录设置创建一个文件。
文件内容如下:

<?php
$real_directory = "/home/user/Private/";
$directory = "/images/";
// The path to the holy directory
$image_directory = $real_directory . "Doujinshi/";
// The path to prepend to image files for html display
$relative_directory = "/images/Doujinshi/";
$dir_exists = false;

if(is_dir($real_directory)) {
	$dir_exists = true;
}

你只需将变量更改为目录的父 $real_directory目录的路径 即可。在上面的示例中,目录的完整路径将是 /home/user/Private/Doujinshi

  • 请勿在路径中删除或添加任何斜线

将文件添加到数据库

使用 refresh_db 脚本

创建 scripts/modification/data.json具有以下结构的文件:

{
  "directories": [
    {
      "dirName": "Directory 1",
      "dirCover": "1.png",
      "authors": [
        "author"
      ],
      "tags": [
        "tag1",
        "tag2",
        "tag3",
        "tag4",
        "tag5"
      ]
    },
    {
      "dirName": "Directory 2",
      "dirCover": "ch-1 1.jpeg",
      "authors": [
        "author1",
        "author2",
        "author3"
      ],
      "tags": [
        "tag1",
        "tag2",
        "tag3",
        "tag4"
      ]
    }
  ]
}

运行该 scripts/modification/refresh_db.php文件并检查输出是否有任何错误,你需要手动更正这些错误。

另外可以将文件命名为 以外的其他名称 data.json,然后以它运行脚本 php refresh_db.php [FILENAME]

手动添加目录

您也可以完全手动添加目录,方法是前往 [hostname]/add.php并填写每个目录的表单。如果你的目录数量较少,此选项更有意义。

权限

确保你的服务器软件(apache/nginx/etc)和 php-fpm(如果使用)具有读取/写入目录的权限。对于( apache 上),以下步骤有效:

  • 首先检查虚拟主机是否具有权限 Require all Granted 。<Directory /var/www/[VIRTUALHOST]>这可以通过转到 /etc/apache2/sites-available并编辑虚拟主机的配置文件来完成 [VIRTUALHOST].conf。(可能是 000-default.conf)。如果您使用 RoverWire 的虚拟主机 bash 脚本创建虚拟主机,则这是默认行为。如果没有,请添加此行。
  • 现在通过运行以下命令将 USER(LINUX 中的用户)添加到组中:www-data
sudo adduser [USER] www-data
  • cd进入 /etc/apache2/并编辑文件 envvars。在文件中,找到以下行:
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

并将其编辑为:

export APACHE_RUN_USER=your-username
export APACHE_RUN_GROUP=your-username-group

您可以通过运行以下命令检查您的用户属于哪些组:

groups [USER]

要使 php-fpm 使用与服务器软件相同的用户,你需要编辑 www.conf位于的文件 /etc/php/[VERSION]/fpm/pool.d/www.conf。查找以下行

user = www-data
group = www-data

并将其编辑为

user = your-username
group = your-username-group

最后,使用以下命令重新启动 apache 和 php-fpm 服务

sudo service apache2 restart
sudo service php[VERSION]-fpm restart

这样,服务器将具有读取/写入用户目录的权限。如果要在服务器上使用 php 运行一些删除/写入命令,请小心。

临时文件

如果你在 tmp/服务器根目录中看到一个目录,请不要惊慌,它应该在那里。它应该只包含两个文件:

  • 一张包含你最近预览过的同人志封面的图片
  • 包含上次/当前下载信息的纯文本文件

如果你删除文件甚至整个目录都应该没问题。

网站功能

⚠️由于 NHentai 上的 Cloudflare,下载选项卡现在几乎毫无用处。 如果您仍想使用 konnichiwa 并且希望自动添加元数据,您可以尝试使用nhentai-konnichiwa 。

如果您导航到网站上的**“下载”**选项卡,系统将要求您提供一个 ID 和一个可选名称。

  • ID:要下载的同人志的 nhentai id(部分后面的数字 nhentai.net/g/
  • name:要添加到已保存文件名称的可选前缀。默认值为空白,图像的名称类似于 {page}.{ext},但例如,如果提供的名称为 ch-1,则文件将保存为 ch-1 {page}.{ext}