Lxn-Chan!

(~ ̄▽ ̄)→))* ̄▽ ̄*)o

Yourls 是一个基于 PHP 、开源的短链管理系统,数据库则是采用 MySQL ,本文将介绍Yourls的搭建、安装、后续的插件安装及一些问题解决。

准备

  1. Apache2 作为后端,Nginx 作为前端,本文是在两个软件和MySQL均正确安装且可使用的前提下操作;若仅使用Apache2也可参考本文操作;Apache2安装和简单配置Nginx安装和简单配置MySQL数据库安装和配置

  2. 下载 Yourls官方 ZIP包。

  3. 域名和对应的域名SSL证书。

  4. 本文操作均在root账户下操作,若没有该权限请自行添加sudo

创建数据库

这里仅针对非全新安装

进入数据库:

1
mysql -uroot -p

输入root密码后创建数据库:

1
CREATE DATABASE IF NOT EXISTS yourlsdb DEFAULT CHARACTER SET = utf8mb4 DEFAULT COLLATE = utf8mb4_general_ci;

创建用户,将命令行内{password}改为你的自定义密码,安全起见不要使用Root密码

1
CREATE USER 'yourls'@'localhost' IDENTIFIED BY '{password}';

授予用户访问数据库的权限并强制刷新权限:

1
2
GRANT ALL PRIVILEGES ON yourlsdb.* TO 'yourls'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

最后退出数据库即可。

修改配置

user/config-sample.php复制一份副本config.php,并将权限设置为0666

打开该文件,修改以下项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/** MySQL 数据库的用户名 */
define( 'YOURLS_DB_USER', 'yourlsdb' );

/** MySQL 数据库密码 */
define( 'YOURLS_DB_PASS', '123456' );

/** MySQL 数据库地址,默认不必修改.
** 如果是非标端口号则输入类似:'127.0.0.1:521' */
define( 'YOURLS_DB_HOST', 'localhost' );

/** 站点地址,如果采用的是PonyCode则需要输入编码后的域名 */
define( 'YOURLS_SITE', 'https://i.example.com' );

/** 输入站点的管理员用户名密码,密码可以是明文也可以是Hash之后的值 */
$yourls_user_passwords = [
'456' => '456',
'123' => '213',
];

以上项目没有提到的项目可以不改(保持默认),保存退出。

Apache2 配置

新建站点配置文件

这里贴出一份示例文件(/etc/apache2/sites-available/yourls.conf),请酌情更改使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<VirtualHost *:2222>
ServerAdmin lxnchan@myserver.com
ServerName i.example.com
ServerAlias i.example.com
DocumentRoot /root/1xnchan/web/yourls
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

#SSL
SSLEngine On
SSLCertificateFile /path/to/your.crt
SSLCertificateKeyFile /path/to/your.key
SSLCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5
SSLProtocol All -SSLv2 -SSLv3 -TLSv1
SSLHonorCipherOrder On
</VirtualHost>

因为这里是用Nginx反代到公网,Apache2的监听端口不是80/443,还需要在/etc/apache2/ports.conf中添加监听当前配置文件中定义的端口。

启用 Rewrite

因为Yourls的短链需要应用到重写模块,默认是关闭的,这里需要打开:

1
a2enmod rewrite

然后重启 Apache2 。

htaccess

在初次安装时,Yourls会自动创建.htaccess文件,但若因权限问题或yourls没有正确识别服务端,则需要自行创建.htaccess文件,这里建议还是提前创建好。

在站点根目录下新建.htaccess文件,输入如下代码(无需更改直接填入即可):

1
2
3
4
5
6
7
8
9
# BEGIN YOURLS
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /yourls-loader.php [L]
</IfModule>
# END YOURLS

保存后退出,并将该文件权限更改为0755

启用覆写

打开Apache2根配置文件/etc/apache2/apache2.conf,在该配置文件的最下面添加:

1
2
3
4
5
6
# 将 Directory 后面的值更改为你 Yourls 的根目录。
<Directory /root/1xnchan/web/yourls>
Options FollowSymLinks
AllowOverride all
Require all granted
</Directory>

Nginx 配置

直接反代该端口即可,本站往期文章有很详细的说明(反代的配置文件大同小异)。

访问

默认管理后台:https://yourdomain.com/admin

插件

需要提前说一下,目前没有官方提供的中文汉化,所有的中文汉化都是第三方制作。

Random Backgrounds

启用后会随机生成管理页面的背景图。

Random ShortURLs

启用后能够随机生成链接。

示例:启用前https://demo.com/1,启用后https://demo.com/6tgy8

Admin reCaptcha

Google reCaptcha 在 Nginx 反代的环境中并不可使用,目前具体原因还未知。

为管理后台启用 reCaptcha 防止被爆破,该插件没有自带,需要自行下载,Github仓库地址

下载后将整个文件夹复制到user/plugins/下面即可。

需要注意的是,该插件设置后可能在中国大陆并不能使用,需要打开user/plugins/Admin-reCaptcha/plugin.php文件并将该文件引入 reCaptcha 的部分中www.google.com更改为www.recaptcha.net即可。

另外 Admin reCaptcha 中的 reCaptcha 版本要求是 v2 ,注意不要设置错了。

Sleeky

Google reCaptcha 在 Nginx 反代的环境中并不可使用,目前具体原因还未知。

Sleeky 提供了一个用户友好的前台UI和好看的后台UI,Github仓库

首先将sleeky-frontend中的内容全部复制到站点根目录下,然后将sleeky-backend整个文件夹复制到user/plugins/下面即可。

需要注意的是,该插件的 reCaptcha 部分在设置后可能在中国大陆并不能使用(表现为返回HTTP 500),需要打开index.phpfrontend/footer.php文件并将该文件引入 reCaptcha 的部分中www.google.com更改为www.recaptcha.net即可。

另外 Sleeky 中的 reCaptcha 版本要求是 v3 ,注意不要设置错了。

其他问题

访问短链接回应404

检查.htaccess是否正确配置,权限是否正确,换行格式(CRLF)是否是Unix格式(LF);重写模块是否开启;是否正确配置AllowOverride

管理后台提示数据库错误

  1. 检查是否真的数据库配置有误(可以试试用PMA是否能够正确连接到数据库);

  2. 检查是否正确安装PHP-MySQL插件。

提示PHP版本低于7.4.0

  1. 添加PPA存储库:
1
add-apt-repository ppa:ondrej/php
  1. 安装 PHP 7.4:
1
apt install php7.4 php7.4-mysql php7.4-json
  1. 启用 PHP 7.4 并禁用之前的版本:

我这里之前是PHP7.2,禁用时需要根据自己的实际情况禁用;
当前PHP版本可以使用php探针查看。

1
2
a2dismod php7.2
a2enmod php7.4
  1. 重启Apache2即可
1
systemctl restart apache2

文档信息

更改记录

时间改动
2022-06-18 16:58:00文章创建
2022-06-19 08:50:00内容完善并添加新内容
2022-06-19 23:02:00新增插件内容
2022-06-20 07:52:00新增Nginx中reCaptcha不可用问题的说明

参考资料

排名不分先后;
在此一并表示感谢。

本站参考文章

 简单说两句



联系站长 | 安装证书 | 友情链接

备案号:辽ICP备19013963号

萌ICP备 20219421 号

中国互联网违法和不良信息举报中心

架构版本号:8.0.10 | 本站已全面支持IPv6

本站由又拍云提供CDN加速服务和存储服务

正在载入运行数据(1/2)请稍后...
正在载入运行数据(2/2)请稍后...

Copyright 2022 LingXuanNing, All rights reserved.