配置多用户的虚拟主机

一直想要个香港服务器,米国服务器太远,各种云间歇性抽风(sae抽得丧心病狂啊!!)。如果放微信接口,再加上还要curl国内的教务处,速度完全跟不上。 前两天看到v2ex上的locvps做活动,香港1G 41元,就咬咬牙从RP主机搬过去了。后来又拖了qwe7002一起合租,均摊下来20块一个月就还挺划算的。

服务器的简单配置自不必细说,用一个lnmp脚本半个小时搭完,有些不常用的服务可以再安装完成后先停止。麻烦点的就是多用户的权限控制了,我自己的数据和权限要跟qwe7002的完全分离,而当一个站点被黑时也不能影响全局。

文件

先新增两个用户分别给予对应的文件权限。nginx会以同组用户www身份访问目录,所以建议将文件目录权限设为750或更低。要禁止某些文件或目录从web访问时,可以将其权限设为660(仅当前用户访问)。

adduser faceair
passwd faceair   //设定用户密码
chmod 750 /home/faceair -R

数据库

公用的mysql数据库提供了严格的多用户权限控制,使用phpmyadmin面板新建一个用户”给以 用户名 开头的数据库 (username%) 授予所有权限”,不给予全局权限就够了。

CREATE USER 'faceair'@'%' IDENTIFIED BY '***';GRANT USAGE ON *.* TO 'faceair'@'%' IDENTIFIED BY '***' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;GRANT ALL PRIVILEGES ON `faceair\_%`.* TO 'faceair'@'%';

nginx

默认nginx以www用户运行,为了能让nginx访问到用户文件,还要将www添加到对应用户的用户组,处理静态文件请求。

gpasswd -a www faceair

通过lnmp安装包里面的vhost.sh可以添加nginx配置,配置添加后对文件权限还要重新修改。默认会添加配置到/usr/local/nginx/conf/vhost目录对应域名。

php-fpm

nginx本身不能处理PHP,它只是个web服务器。当接收到php请求后,需要转发到php-fpm对应的UNIX socket文件。修改对应域名的nginx配置。

location ~ .*\.(php|php5)?$  {
    fastcgi_pass unix:/tmp/faceair-fpm.sock;
    fastcgi_index index.php;
    include fastcgi.conf;
}

给每个用户都建立单独的进程池,每个进程池表现为一个UNIX socket文件。修改/usr/local/php/etc/php-fpm.conf,添加一行。

include = /usr/local/php/etc/pool.d/*.conf

再添加目录/usr/local/php/etc/pool.d/,在目录中添加对应用户faceair.conf。

[faceair]
user = faceair
group = faceair
listen = /tmp/faceair-fpm.sock
listen.owner = faceair
listen.group = faceair
listen.mode = 0660

pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 1
pm.max_spare_servers = 3

基本配置就是这样了,最后重启nginx和php-pfm。

/usr/local/nginx/sbin/nginx -s reload
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

我再考虑怎么写个脚本来管理这些配置文件。

参考: