用户权限管理
PHP-FPM简单介绍
PHP-FPM(PHP FastCGI Process Manager)是管理PHP进程池的工具,用于接收和处理来自Web服务器的请求。PHP-FPM的主进程会控制如何将HTTP请求转发给子进程处理,每个子进程可以处理多个HTTP请求。通常每个PHP应用有一个自己的PHP-FPM进程池。
PHP-FPM用户(网站用户)
PHP-FPM用户就是我们之前创建的新用户(bigcoma),专门用于运行网站。包括以下特点:
- PHP-FPM使用这个用户执行
- 应该让每个网站对应唯一的用户,不要重用用户,尤其是不要使用root。
- 用户名最好能反映对应的网站,如这里我们使用bigcoma。
Apache(Nginx)用户(网站服务器用户)
Apache和Nginx通过特殊用户运行。对Apache,在Ubuntu系统上,这个特殊用户名是www-data(组名也是www-data);在CentOS系统上,这个特殊用户是apache(组名也是apache)。
这是一个全局的网站服务器用户,所有网站都会用到。
联系网站用户和网站服务器用户
- 将Apache的特殊用户(apache)加入当前网站的PHP-FPM用户组(bigcoma)中。
sudo usermod -aG bigcoma apache
这样可以通过bigcoma这个组的权限,来控制网站服务器用户apache对代码文件的访问权限。
- 网站的源代码文件应该属于网站用户及其所在的组。
sudo chown -R bigcoma:bigcoma /home/bigcoma/hotcrp/
(change ownership)USER:GROUP。即第一个bigcoma是用户,第二个bigcoma是所在组。
- 源代码文件权限分配:
- 网站用户需要读写所有文件和读目录。并不需要执行权限,因为PHP文件是由PHP preprocessor parse,并不是直接执行。
- 网站服务器用户需要读所有文件和遍历目录。遍历目录当且仅当对这个目录有执行权限。
- 为了保证网站服务器用户能完全遍历目录,对网站用户的家目录也设置执行权限。
- 其他用户无法读写。
- 目录权限750;文件权限640。
sudo chmod -R u=rwX,g=rX,o= /home/bigcoma/hotcrp
服务器访问HotCRP
让Apache中的某个网页指向代码源文件位置:修改Apache的配置文件,使之指向HotCRP的安装路径。在CentOS系统中,Apache的main configuration file位置:/etc/httpd/conf/httpd.conf ,在文件中插入语句:
<Directory "/home/bigcoma/hotcrp">
Options Indexes FollowSymLinks
AllowOverride all
Require all granted
</Directory>
Alias /bigcom2021a /home/bigcoma/hotcrp
- Directory后的路径是源代码文件的位置。
- Alias后的第一个参数是网页路径,第二个参数是源代码文件位置。
- 重启Apache服务。
- 经过上述步骤,现在可以通过“xxx/bigcom2021a”访问我们搭建的HotCRP系统啦!xxx指网站的域名(或者服务器的IP)。
- 对于版本更早的Apache,在配置文件中加入的语句稍有不同,具体可以参考https://github.com/brownsys/hotcrp-bar
修改paper submission相关参数
这里可以直接按照https://github.com/kohler/hotcrp操作,更新PHP中的设置和数据库设置。在CentOS系统上,数据库配置文件的路径是/etc/my.cnf。修改数据库设置后,需要重启数据库服务。
提供邮件服务
虽然可以在服务器上搭建自己的邮件服务,但操作较为麻烦,也存在安全隐患。这里我们直接使用gmail作为邮件中转,注册一个gmail邮箱,所有HotCRP系统的邮件都从这个gmail邮箱发出(能这么做的关键前提,可以使用gmail)。
注册gmail后,按照参考资料3的步骤,为postfix生成特定应用密码,修改/etc/postfix/main.cf文件内容。唯一的区别是CentOS上的TLS证书应该设置为
smtp_tls_CAfile = /etc/ssl/certs/ca-bundle.crt
报错解决
当出现各种错误时,可以尝试查看Apache和mail的log file,可能的文件位置是/var/log/httpd/error_log和/var/log/maillog。
参考资料
- https://www.getpagespeed.com/server-setup/nginx-and-php-fpm-what-my-permissions-should-be
- http://www.adventuresincs.com/2018-01-05-setting-up-hotcrp/
- http://techstacktutorial.com/sasl-authentication-failed-server-smtp-gmail-com/