Fossil-Asmbb论坛网站开发编译与发布攻略

关于AsmBB

AsmBB是一个轻量级别的论坛网站程序成品,通过下载后在电脑里启用程序即可拥有自己的论坛网站。
网站前端采用tpl文件内嵌内容输出和html代码片段,后端是基于Assembly汇编编写,数据库采用内置的SQLite,其基于Fossil制作而成的。
通过修改Html、Css、Js即可达成大部分修改前端界面的目的,但由于是片段输出的虚拟页面,如果涉及到路由或者页面结构的复杂修改,或者分页这类程序关联度较强的代码,则需要通过汇编语言修改。

关于Fossil

Fossil是一个小型、高可靠性的发布用软件,用于托管你的项目服务,类似于git版本管理,其使用了C语言作为程序开发语言。
本文中述说的是AsmBB,因此后续不再讲述Fossil,有需要的可以到官网查看。

下载AsmBB

可参考官网下载链接进行下载。

推荐操作系统是Linux,如果是Window那建议使用WSL进行安装使用。
首先是先行下载Fossil,可直接通过Fossil官方下载页进行下载,或者在命令行输入:

wget -d https://fossil-scm.org/home/uv/fossil-linux-x64-2.22.tar.gz

之后执行解压缩:

tar -xvzf fossil-linux-x64-2.22.tar.gz

接着是使用Fossil来拉取asmbb项目(注意./Fossil/fossil是刚解压的出来的文件夹Fossil所在路径下的fossil文件):

# 创建文件夹repositories
mkdir repositories
# 使用Fossil克隆asmbb的fossil打包文件
./Fossil/fossil clone https://asm32.info/fossil/repo/asmbb  ./repositories/asmbb.fossil

创建和解压项目文件:

# 创建文件夹asmbb
mkdir asmbb
# 解压项目文件
./Fossil/fossil open /repositories/asmbb.fossil

以上就完成了asmbb项目源代码的获取工作。

配置开发环境

接下来是开发和编译所需工作:
下载Fresh编译器
用于编译汇编代码,注意下载安装后,打开Fresh开发工具,在菜单栏options/IDE
options里的aliases一栏,修改/添加name为TargetOS的值为Linux或Win32(根据最终部署网站的操作系统而定),配置name为lib的值为freshlib所在的FreshLibDev路径。

扫描二维码关注公众号,回复: 15333330 查看本文章

之后使用Fresh打开项目源代码目录下/source/engine.fpr,类似于开发工具的配置文件,这将会打开整个项目,之后可以进行汇编代码的修改和编译(Ctrl+F9)生成engine文件。

编译C

注意这一步在后续发布项目中会自动被执行,如无修改和替换的需要可忽略。
asmbb项目里有一部分是使用C语言编写的,还有一部分是Sqlite的支持库(会自动通过脚本下载源代码),也是C语言编写,可执行musl_sqlite目录下的build脚本文件进行生成libsqlite3.so和ld-musl-i386.so文件,用于最终的网站所依赖的文件。

前端界面

注意这一步在后续发布项目中会自动被执行,如无修改和替换的需要可忽略。
asmbb项目中有一部分是前端界面,位于www/templates目录下,采用类似php的tpl模板文件语法,样式文件则是less格式。
可执行www/templates下的build_styles.sh进行样式表编译工作。

注意项目会使用的clessc命令(在www/templates/**
/compile_styles.sh文件里)进行less文件的预编译工作,但我不了解这个命令是如何才能获取来使用的,不清楚的人可以先执行位于install目录下的create_release.sh脚本文件,如果报错找不到clessc,要不自己尝试找到clessc,要不通过我下面这种笨方法:

  1. 下载安装了nodejs后,使用其自带的命令npm install less -g全局按照less文件编译器。
  2. 将所有www/templates/**/*.less文件中的直接写入的文件路径改成less import的语法引用。
  3. 将所有www/templates/**/compile_styles.sh中的语句clessc "$file" -O "${file%.*}.css"
    改成lessc "$file" "${file%.*}.css"
  4. 重新执行create_release.sh即可成功将less文件编译成css并执行后续的打包发布工作。

发布项目

执行位于install目录下的create_release.sh脚本文件,该脚本即可将项目发布成为asmbb.tar.gz压缩包文件。
之后可以执行install目录下的unpack.sh脚本文件进行解压使用,解压后发布的项目位于install/asmbb文件夹下。

部署项目

这里总共分为两步,第一步是配置Nginx/Apache来指定网站服务,第二步是配置fastcgi来启动前面生成的engine文件。
也可通过docker部署

首先是第一步,这里采用Nginx为例,先下载并安装Nginx服务,之后打开Nginx的站点配置文件:

vim /etc/nginx/sites-enabled/default

假设前面发布好的项目位于/var/www/asmbb/install/asmbb下,到最后一行输入i进入编辑模式,并添加以下内容:

server {
    
    
      listen 8082;
      listen [::]:8082;
      server_name localhost;
      root /var/www/asmbb/install/asmbb/;
      location / {
    
    
        fastcgi_pass unix:/var/www/asmbb/install/asmbb/engine.sock;
        include fastcgi_params;
      }
}

使用:wq回车保存并退出,这将在本地端口8082将asmbb项目启动为网站服务。
之后执行以下命令重启Nginx服务,使配置修改生效:

systemctl restart nginx.service

接着是第二步,配置fastcgi,使用命令创建并打开服务文件:

vim /etc/systemd/system/asmbb.service

假设前面发布好的项目位于/var/www/asmbb/install/asmbb下,在文件中输入i进入编辑模式,并添加以下内容:

[Unit]
Description=AsmBB forum engine FastCGI script.
After=nginx.service

[Service]
Type=simple
User=root
WorkingDirectory=/var/www/asmbb/install/asmbb
ExecStart=/var/www/asmbb/install/asmbb/engine
Restart=on-failure

[Install]
WantedBy=nginx.service

其中User=root指代的是要用哪个Linux用户作为启动服务的用户,这里使用了root是为了简便,生产环境中最好另外创建一个权限受限的Linux用户来启动服务。

完成后执行:wq回车保存退出。

之后执行以下命令启动和查看服务:

# 启动服务
systemctl start /etc/systemd/system/asmbb.service
# 查看服务运行情况
systemctl status /etc/systemd/system/asmbb.service

若任务成功启动,则此时应该能在浏览器中输入localhost:8082访问到配置好的asmbb网站,若是第一次启动会自动生成border.sqlite数据库文件,并在页面中要求进行管理员邮箱和密码的配置,按要求填写后即可正常访问网站,到此大功告成。

可能遇到的问题

  1. 若在浏览器中访问网站出现502等异常,应当是fastcgi服务没有配置好导致无法成功启动。
  2. 若是Fresh工具编译汇编时报错,需要弄清楚是不是配置的lib路径和TargetOS错误导致的。
  3. 若是使用install/create_release.sh或者musl_sqlite/build脚本文件编译报错,需要看具体情况而定,可以通过官方论坛发问。

猜你喜欢

转载自blog.csdn.net/u013102711/article/details/131066594