分类 系统管理 下的文章

2019年在CentOS上架设用systemd管理的anki 2.1同步服务器

个人笔记,如有转载,请注明出处。

——by realasking

最近收到ankiweb的通知,告知因为长时间没有登录,我的账户已经被注销了。我确有用记忆卡片的需要,但是最近太慢,实在顾不上总去使用它,anki的做法让人很无奈。鉴于此,还是决定自己搭建一个anki同步服务器。

github上的tsudoko建立了一个项目[1],可以搭建anki 2.1的同步服务;在archlinuxAUR网站上,s7hoang则对它进行了规范化的打包[2],可以使用systemd来启动和管理这一同步服务器。不过,CentOSArchlinux有一些不同,s7hoang的方案用在CentOS服务器上需要做一定的调整。

s7hoang的方案进行小调整后,我在CentOS 7服务器上安装anki-sync-server的过程如下。

1. 准备软件包

a.下载s7hoangAUR

[realasking@myserver]$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/anki-sync-server-git.tar.gz
[realasking@myserver]$ tar -xzvf anki-sync-server-git.tar.gz
[realasking@myserver]$ cd anki-sync-server-git

b.准备服务器包

  • 修改s7hoang提供的anki-sync-server.service,内容改为:
[Unit]
Description=A sync server for anki
After=network.target

[Service]
Type=simple
User=anki-sync-server
Group=anki-sync-server
WorkingDirectory=/opt/anki-sync-server
ExecStart=/usr/bin/python36 -m ankisyncd
StartLimitIntervalSec=1
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
  • 根据s7hoang的方法创立脚本genpack.sh,内容如下:
#!/bin/bash 
git clone https://github.com/tsudoko/anki-sync-server
cd anki-sync-server
mkdir -p "plugins/anki2.0"
mkdir -p "plugins/anki2.1/ankisyncd"
mkdir -p "plugins/systemd"
cp ../anki-sync-server.py "plugins/anki2.0"
cp ../__init__.py "plugins/anki2.1/ankisyncd"
cp ../anki-sync-server.service "plugins/systemd"
sed -i "2s/0\.0\.0\.0/$(ip route get 1.2.3.4 | awk '{print $7}')/" \
  plugins/anki2.0/anki-sync-server.py
sed -i "3s/0\.0\.0\.0/$(ip route get 1.2.3.4 | awk '{print $7}')/" \
  plugins/anki2.0/anki-sync-server.py
sed -i "3s/0\.0\.0\.0/$(ip route get 1.2.3.4 | awk '{print $7}')/" \
  plugins/anki2.1/ankisyncd/__init__.py
sed -i "s/python/python36/g" ankisyncctl.py

git submodule update --init

然后执行这个脚本。

  • 建立nginx服务器脚本anki.conf,内容如下:
server {
        listen 80;
        server_name anki.myserver.tk;
        return 301 https://$server_name$request_uri;
}

server {
    # Allow access via HTTPS
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    # Set server names for access
    server_name anki.服务器名.tk;

    # Set TLS certificates to use for HTTPS access
    ssl_certificate /etc/letsencrypt/live/服务器名.tk/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/服务器名.tk/privkey.pem;

    location / {
        # Prevent nginx from rejecting larger media files
        client_max_body_size 0;

        proxy_pass http://127.0.0.1:27701;
    }
}

2. 部署服务器

  • root登录服务器,将anki-sync-server文件夹拷贝到/opt

  • anki-sync-server.service文件拷贝到/etc/systemd/system

  • anki.conf文件拷贝到:/etc/nginx/conf.d

  • 建立anki用户

[root@myserver]# useradd -d /opt/anki-sync-server -r -s /sbin/nologin anki-sync-server
[root@myserver]# chown -R anki-sync-server /opt/anki-sync-server
[root@myserver]# chgrp -R anki-sync-server /opt/anki-sync-server
[root@myserver]# sudo -u anki-sync-server ./ankisyncctl.py adduser
  • 开启服务
[root@myserver]# systemctl enable anki-sync-server
[root@myserver]# systemctl start anki-sync-server
[root@myserver]# systemctl restart nginx

3.关于依赖关系

依赖关系的解决本文未提及,因为[1]中已经讲得很清楚了,大家可以直接查阅原作者的叙述。

参考链接

[1] tsudokoanki 2.1同步服务器项目

[2] s7hoangsystemd启动tsudoko服务器的打包

archlinux下配置fluxbox

Tag: linux下的fluxbox桌面配置笔记,老文,不知道现在是否有变动。原始发布于:archlinux下配置fluxbox

初次安装archlinux,并在其上配置了fluxbox环境,这里做一点总结,希望对大家有用,同时发在这里和百度linux、archlinux吧,未经许可,请勿转载。
——by realasking

fluxbox是一个小巧、便捷的窗口管理器,很适合archlinux这种轻量级的linux发行版,配合kde桌面环境提供的高质量程序,可以在最少资源占用的情况下获得最好的运行效果,可谓珠连璧合,这里,结合前几天安装配置archlinux的过程,做一个小结。

对于fluxbox的配置,可以分为三个部分:fluxbox和辅助工具的安装,fluxbox的配置,fluxbox周边辅助程序和运行环境的配置,其中第一部分包括fluxbox、fluxbox的主题、必备工具的安装,第二部分包括壁纸、菜单、主题、热键、启动程序等的设置,第三部分包括桌面效果、图标、音量控制、开关机控制、文件关联等,下面即分这三部分来进行叙述。

fluxbox和辅助工具的安装

这里假定已经将pacmanyaourt工具配置好,实现本文操作,至少需要安装以下资源:

主要桌面工具:kdefluxboxopenboxideskmenumakerfehxbindkeys
重要扩展:xcompmgr-danaconkyguakealsa-utilsrootactions-servicemenu-kde4hddtemp
其它:一些字体

安装过程:

#yaourt -S kde fluxbox openbox idesk idesk-extras menumaker feh xcompmgr-dana guake alsa-utils rootactions-servicemenu-kde4 hddtemp

注意:

所有配置文件和安装文件都不用修改,conky待安装完成后自己到sourceforge下载源码编译,需要打开一些编译选项,archlinux提供的编译版本编译的质量太差了,大量选项不可用。
安装xcompmgr-dana而非原版xcompmgr的原因是原版存在很多bug,比如渲染osdlyrics的时候,不能将桌面歌词始终显示在最前面,渲染fcitx输入窗口时也会启动阴影,而且是错误的等。

rootactions-servicemenu-kde4是一个可以在dolphin中以root身份执行一些程序(包括root的dolphin)的dolphin菜单扩展。

刚才写掉了几个:

#yaourt -S xbindkeys archlinux-xdg-menu xscreensaver 

xbindkeys用来设置笔记本功能键,也可以不用,xscreensaver用来配置锁屏幕

fluxbox的配置

现在,编辑/etc/inittab,修改默认运行级为5,并修改登录管理器为kdm,重启计算机后,以普通用户登录,并选择fluxbox,然后注销,以普通用户登录进入failsafe模式进行配置工作。

先生成fluxbox菜单,这里有好几种程序都能完成工作,其中menumakerarchlinux-xdg-menu是我比较喜欢的,以前在Fedora下也用它们,前者可以生成分类很好的菜单,只是都是英文的,后者可以生成中文菜单,不过只是应用程序的菜单,可以将两者的菜单进行结合,或编辑第二个的菜单来扩展一些内容。另外还有一个fluxbox自带的工具fluxbox-generate_menu可以生成有图标的菜单,不过在我从来没成功用过,报一些函数过时之类的错误。

menumaker生成菜单

$mmaker -v Fluxbox

即可在~/.fluxbox下生成menus文件,是fluxbox的菜单,还包括设置、退出等操作.

archlinux-xdg-menu生成菜单

$xdg_menu --fullmenu --format fluxbox --language zh_CN.UTF-8>~/.fluxbox/menu

如果加了--root-menu选项并指明位置,也可以生成完整的fluxbox菜单。

设置壁纸

进入一次fluxbox之后,在终端执行

$fbsetbg 文件名

编辑~/.fluxbox/startup文件,加入fbsetbg -f 文件名
该项应该存在在conky启动语句之后,xcompmgr启动语句之前,且要注意第一次配置时,同文件夹里的lastwallpaer里应该为空或为只包括正确的壁纸文件的那一句,不然就应将多余的内容删除。然后进入fluxbox,从菜单中选择一种style,并修改/usr/share/fluxbox/styles下对应主题中的字体设置,务必设置为系统中可用的一种中文字体,所有字体选项都要修改。

再设置热键

先用xev识别键名

在fluxbox的终端(如konsole)中执行xev,然后按键,查看键名,比如我按Fn+F3就显示:

KeyRelease event, serial 34, synthetic NO, window 0x3a00001, root 0x15d, subw 0x0, time 8900953, (303,-203), 
root:(304,358), state 0x0, keycode 223 (keysym 0x1008ff19, XF86Mail), same_screen YES, XKeysymToKeycode 
returns keycode: 163 XLookupString gives 0 bytes: XFilterEvent returns: False

其中XF86Mail就是键名,如果按空格,则键名是space

再设置Fn+功能键

这个大部分由内核直接接管,但是有部分能够识别键名,却没有功能的,比如我这里的电邮键和媒体键,以媒体键为例,编辑~/.xbindkeysrc,输入:

"/usr/bin/osdlyrics"
XF86Launch1

再在~/.fluxbox/startup文件的fluxbox执行语句(exec fluxboxexec ck-launch-sessionfluxbox,推荐后一种写法)之前输入:

xbindkeys&

加&是因为要让这些程序后台运行,不然在这些程序结束之前,fluxbox就不会自动启动,用xbindkeys设置这些键的原因是也可以用在其它窗口管理环境中而不必修改,不用xbindkeys设置所有快捷键的原因是发现有的快捷键设置在archlinux中会失效,而又确实没有定义过。
然后再在~/.fluxbox/keys中定义热键,按照已有的格式写就是了,只要注意不要再在这里面定义xbindkeys已经定义过的热键,以及用Mod1表示alt和用Mod4表示meta就行了,比如:

Mod4 M :exec konsole -e mutt

表示Meta+M就调用konsole来执行mutt邮件管理程序。

fluxbox桌面图标设置

最好使用idesk,先在~/下建立.ideskrc文件和.idesktop文件夹,.ideskrc文件的内容和格式可以参考/usr/share/idesk/dot.ideskrc文件,快捷方式文件以.lnk结尾,放在.idesktop文件夹里,格式可以参考/usr/share/idesk/default.lnk,在/usr/share/idesk/icons下有一些常用程序的图标可供使用。

将需要的lnk文件都建立后,建议执行:

$chmod 400 ~/.idesktop/*

然后修改~/.ideskrc文件,修改Background.File: ,其后添加为桌面壁纸的路径和文件名,以及Locked: true

如果后面将使用xcompmgr-dana设置阴影效果,可以将文件中的Shadow:设置为false

fluxbox的开机启动程序的设置在~/.fluxbox/startup中进行,大多数守护进程程序都需要后台执行,因此其后需要加&符,另外各启动程序间往往有先后顺序,因此可以在一行中这样用:

sleep 秒数;程序&

这样就先等待这么多秒,然后再执行程序。
另外,也可以执行export 环境变量=变量值;程序&来设定以某环境变量执行程序。

桌面相关设置

实现开关机和休眠

以root用户执行:

#visudo 

添加以下内容:

你的用户名 ALL(root) = ALL
%wheel ALL(ALL) = ALL
你的用户名 ALL(root) = /sbin/poweroff, /sbin/reboot, /usr/sbin/pm-suspend, /usr/sbin/pm-hibernate

然后保存,再以普通用户修改菜单文件menu,加上:

[submenu] (关机)
[exec] (重启计算机) {sudo /sbin/reboot}
[exec] (关机) {sudo /sbin/poweroff}
[exec] (挂起) {sudo /usr/sbin/pm-suspend}
[exec] (休眠) {sudo /usr/sbin/pm-hibernate}
[end]

这里也可以在启动过程中加载kde的守护进程,然后用kshutdown来管理开关机,不过我不知道kde4.7中应该加载的进程名和参数,没去查。

关于休眠,如果发生休眠后不能唤醒,应该根据archlinux的wiki去实现用户态的休眠,因为用户态的休眠不涉及Acpi,如果自己机器的acpi功能不能被内核完美支持,或者主板或显卡Bios中本身对acpi支持就存在缺陷,选择用户态的实现,也不会因此影响休眠。另外,如果要实现休眠和挂起,最好将acpid进程加入到rc.conf的开机启动进程中。

修改文件关联

以root用户编辑/usr/bin/xdg-open,将以下内容:

if [ x"$DE" = x"" ]; then
DE=generic
fi

中的generic改为kde,然后保存

桌面监控

conky,记得在桌面壁纸设置前加载,并且要如下设置:

own_window_type desktop
own_window_transparent yes 

argb不要打开。

桌面效果

xcompmgr-dana,在~/.fluxbox/startup中加入:

sleep 5;xcompmgr -Ss -n -Cc &

这一项要在桌面壁纸设置之后、fcitx启动之前完成加载,意思是启动服务器和客户端的透明和模糊特效,但不对dock属性等的窗口加阴影,但是这样设置之后仍然不能让终端等窗口实现真透明的,要实现真透明,还需要加-f参数,实现fading(但我这里没开,因为xcompmgr无法实现blur特效,开终端真透明会影响操作)。

音量控制

kmix,需要在startup中的xmodmap语句的下一句就加上pkill -9 kmix&,然后再加上amixer cset语句和kmix语句启动它,例如:

pkill -9 kmix&
amixer cset numid=1,iface=MIXER 60&
amixer cset numid=14,iface=MIXER 59& 
sleep 6;kmix&

amixer用来设置对应通道的音量,用来临时解决archlinux没有一个完善的声卡启动脚本导致部分机器有的通道音量默认为0的问题(比如外响不响,但是声卡的model的识别却是正确的),numidiface和最大可设音量也可用amixer查询,具体用法可查询alsa的手册或我在linux-ren上的博客内容(该内容好像我没有发在百度的空间中)。

锁屏幕

xscreensaver,在startup文件中加入:

/usr/bin/xscreensaver -no-splash &

在菜单或热键中加入对命令xscreensaver-command --lock的调用就行了,
对于xscreensaver程序具体行为的设置,
执行/usr/bin/xscreensaver-demo来完成。

这样设置之后,fluxbox应该基本就可以用了,需要网络指示的,可以再启动一个nm-applet,这篇文章也就应该结束了,今后一两年内,除必要软件外,也不想再折腾软件应用方面的东西了,还是应该做些更有意义的事儿,谨以此文作为纪念。

RHEL/CentOS上用x11vnc搭建vnc远程桌面服务

Tag: 个人笔记,CentOS/RHEL的远程桌面服务搭建,原始发布于:RHEL/CentOS上用x11vnc搭建vnc远程桌面服务

个人操作笔记,如有转载,请注明出处。
——by realasking

服务器端配置

1.安装

#tar -xzvf x11vnc.tar.gz
#cd x11vnc
#./configure --prefix=/usr
#make
#make install

2.配置

vi /etc/xinetd.d/x11vnc

输入以下内容:

service x11vnc
{
port = 5900
type = UNLISTED
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/x11vnc
server_args = -inetd -o /var/log/x11vnc.log -display :0 -forever -auth /var/gdm/:0.Xauth -localhost -many -bg
disable = no
}

保存,然后执行:

#service xinetd restart

编辑/boot/grub/grub.conf,在kernel行后加上5

客户端配置

3.客户端软件

若用putty
Connection-SSH-Tunnels,source port 5900,Destination 127.0.0.1:5900,Local,Auto,

然后点击Add,并保存

若用cygwin-X

假设cygwin安装到(包括必要的x组件):

E:\cygwin

新建一个快捷方式:CygWin-X,内容是:

E:\cygwin\bin\run.exe /usr/bin/bash.exe -l -c /usr/bin/startxwin.exe -wgl

启动ssh转发

启动putty; 或者启动CygWin-X,并执行ssh username@host -L 5900:localhost:5900

启动TightVNC Viewer

Server栏填写:localhost
Connection profile选择:High-speed network
然后点击connect

参考链接

Cygwin安装后的若干问题解决办法

Tag:以前安装cygwin后遇到的一些问题的解决办法,原始发布地址是:Cygwin安装后的若干问题解决办法

以前的个人笔记,仅作备忘之用,如有转载,请注明出处

──by realasking

窗口太小,无法全屏

解决:启动cygwin后,在标题栏单击右键,选属性,布局,调整窗口大小

修改bash默认颜色方案时提示:dircolors: no SHELL environment variable, and no shell type option given

解决:在.bashrc中设置:export SHELL="bash"

vim颜色方案不对,背景全灰

解决:修改.vimrc,用"注释掉set t_Co=256,因为cygwin默认不支持256色

vim输入中文串行

解决:修改.vimrc,加入以下内容:

   if &term != "cygwin"
   set ruler
   else
   set noruler
   endif

嗯,这条好像是来自紫霞论坛

Cywin输入、显示中文不正常

解决:修改.inputrc,解除以下几行注释:

    #set meta-flag on
    #set convert-meta off
    #set input-meta on
    #set output-meta on

vim退格键未定义

解决:修改.vimrc,加入:

    set nocp
    set backspace=start,indent,eol

在Cygwin中不能复制和粘贴

解决:一个好的解决方案是使用puttycyg

VirtualBox运行windows XP性能调优

Tag:我很早以前的使用笔记,可能有些内容已经过时。

个人的一些解决方法的记录,主要是解决linux下用virtualbox运行windows xp的性能问题,首发百度linux吧和自己的博客,如有转载,请注明出处。

——by realasking

Virtualbox虚拟机好用、简单,但是完成安装后的默认设置的性能并不理想,需要自己进行一定调整,这里给出一些思路,谨供参考。

基本设置

共享粘贴板:双向

拖放:禁用

光驱状态:保存运行时变动

小工具栏:在全屏或无缝模式显示

内存大小:分配2250MB给虚拟机(我有8GB内存)

启动顺序:光驱硬盘

芯片组:PIIX3(我的笔记本是NV的芯片组,如果是Intel芯片组的,有人建议选ICH9)

指点设备:USB平板

如果给虚拟机只分配一个CPU核心,或机器里没有ISA卡或更早的扩展卡,请不要选I/O APIC,没有意义

处理器:1个(我的机器是T9550双核的,分配一个给虚拟机仍然吃得消)

运行峰值:100%

安装那个vboxaddition的iso,要在windows安全模式下,并且要选D3D组件

启用硬件加速

不开启启用PAE/NX,因为我的host系统是64位的,而我分配给XP的内存也未超出4GB

硬件虚拟:启用VT-x/AMD-V启用嵌套分页均打开

启用显卡加速

显存大小设为128MB启用3D加速启用2D加速

调整显示器分辨率

让虚拟机使用和host一样的真实分辨率,需要在终端下先执行:
{% highlight bash%}
VBoxManage setextradata global GUI/MaxGuestResolution any
{% endhighlight %}
然后启动虚拟机,并切换为全屏模式,在windows中将分辨率改为自己屏幕的真实分辨率即可

加速网络

linux-kvm的官网或fedoraproject下载virtio的windows驱动:

virtio-win-0.1-74.iso

加载到虚拟机的虚拟光驱中,然后在Virtualbox的网络->高级中将网卡设置为准虚拟网络,然后启动虚拟机,在windows xp查找驱动的时候,手动指向CD中的xp/x86/netkvm.inf,安装时会问选择哪个驱动(会有两个版本的信息),任选一个均可

启用ahci加速磁盘操作

新建一个ahci控制器,并新建一个磁盘放在该控制器下

进入虚拟机的windows后,下载intel的matrix storage的XP版驱动:

Intel Matrix Storage for windows XP

我下载的是iata70_cd,执行安装

关闭虚拟机,删除ahci控制器下添加的那个虚拟磁盘

删除windows虚拟机所安装的那个虚拟磁盘但保留该虚拟磁盘文件,然后关闭virtualbox

重新启动virtualbox,然后在ahci控制器下加载windows虚拟机那个虚拟磁盘文件,

勾选ide控制器ahci控制器使用主机输入输出(I/O)缓存项即可。

使用主机输入输出(I/O)缓存项勾选与否各有利弊,使用ahci时因并发请求增多影响会更重,如勾选,主机负担重时,虚拟机I/O操作可能没响应,但主机负担不重时,虚拟机文件读写会更快,如不勾,虚拟机内存使用会上升,如内存分配少,会卡机

待解决问题

拖动虚拟机内的窗口时,常会有残影,应该与虚拟显卡使用内存作显存有关,但尚未找到解决方案。

最新文章

最近回复

  • realasking: 哪里的话,还要非常感...
  • cnfczn: 发送留言报错:in_...
  • cnfczn: 大狮兄666,以前经...
  • realasking: 最近还行啊,就是上网...
  • cnfczn: 大狮兄,好久不见啊....
  • realasking: 您好。有什么问题就在...
  • Eric Chen: 作者你好!最近折腾中...

分类

归档

其它