记录在CentOS7上搭建HotCRP的详细过程。
安装所需库
基本库安装
sudo yum install -y mariadb git httpd postfix poppler-utils
- `-y`参数表示对所有问题回答'y'。
- CentOS上使用mariadb提供数据库服务,和MySQL完全兼容。
- httpd即apache,这里我们使用apache作为web服务器。
- postfix提供邮件服务,搭建好的HotCRP会给用户发送邮件(如注册账号时)。
- poppler-utils对应pdftohtml,对提交的paper做格式检查。
PHP7.x安装
CentOS的软件源中的PHP版本是5.4的,这里我们需要7.0及以上的版本。具体操作过程:
- 安装并使用 EPEL 和 Remi 软件仓库。
sudo yum install epel-release yum-utils
sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
- 使用PHP7.3的 Remi 仓库(其他版本操作类似)并安装PHP常用库。
sudo yum-config-manager --enable remi-php73
sudo yum install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd
创建新用户
服务器上的网站源代码文件,需要被PHP-FPM、Apache等读取使用,为了保证安全,权限控制是非常重要的。这里我们创建一个新用户,作为源代码文件的拥有者,具体权限控制操作稍后介绍。
- 创建用户(假设我们创建的新用户叫bigcoma):adduser bigcoma
- 设置密码:passwd bigcoma
- 查看用户所在的组:groups bigcoma 或者 id bigcoma。
- 新用户所在组的组名也是bigcoma
- 给用户添加 sudo 权限:usermod -aG wheel bigcoma
- 切换用户:su - bigcoma
打开web服务和数据库服务
- 打开Apache提供的web服务
sudo systemctl start httpd
重启、关闭、查看状态分别将上述指令中的 start 换成restart、stop和status。
- 打开mariadb的数据库服务
sudo systemctl start mariadb
数据库服务的其他操作和Apache类似。
- 在 Ubuntu 系统上,打开Apache服务也可以使用 sudo service apache2 start。关于 systemctl 和 service 的区别:
- systemctl 使用 /lib/systemd 中的文件。
- service 使用 /etc/init.d 中的文件。
设置HotCRP数据库服务
- 给数据库的 root 用户设置密码:
sudo mysql_secure_installation
起始是空密码,直接回车。随后可以设置新密码。
- 下载HotCRP源代码到刚才创建的用户home目录下。切换到新用户bigcoma后:
git clone https://github.com/kohler/hotcrp
为了加快下载速度,可以将仓库导入国内的码云,在git clone码云仓库地址,速度会更快。
- 进入代码文件夹后,创建会议数据库。
sudo lib/createdb.sh --user=root --password=root_password_here
创建会议数据库的账号和密码。这些信息保存在代码文件夹下的conf/options.php中。
-
上述指令运行后会创建conf/options.php。需要填写的信息:
- "contactName" 和 "contactEmail" 会出现在HotCRP发出的邮件中(邮件模板也可以在搭建好的网站上再修改)。
- "emailFrom":邮件From: 栏展示的邮箱。
- "emailSender":邮件“信封”地址。
- 实际我只填写了contactName和contactEmail,之后会详细介绍邮件服务。
- 简要介绍电子邮件的 “From:” 和 “信封” 地址。
- From: 是平时我们收到邮件时,在页面上方看到的发件人。
- “信封”地址是SMTP服务器看到的发件人。
- 这两个地址可以不同:From:是给收件人看的,收件人可以给这个地址回信;信封是给服务器看的,如出错时,错误信息会发送到信封上的地址。
- 用生活中的例子类比:从网上购物,盒子上有一个发件地址;但是盒子内,可能会有说明在退货时需要退回到另一个仓库地址。
- 这一特征可能被攻击者利用:攻击者将信封地址设成自己能控制的,使邮件能通过SMTP服务器的过滤;但在电子邮件的From:中,写“银行”等地址诈骗。