用户自建网站,系统为其自动开通,并且自动新建FTP账户

最近在做用户在我们后台申请网站,我们要自动为其开通,并且为其建立FTP账户的功能
现在把整个过程做一下笔记
1.首先将用户申请的信息写入数据库
2.从目录中拷贝一份完整的程序到指定目录
3.将用户的配置信息写入到nginx配置中
4.重启nginx服务
5.自动为用户开通FTP服务,指定FTP根目录为网站下的模板目录

遇到的问题
在整个过程中,涉及最多的就是linux的权限问题,为了统一权限我先建了一个用户组和用户备用(website:website)
groupadd -g 5000 website
useradd -u 5000 -d /bin/null -g website website
1.在拷贝网站源代码的时候,我调用的是linux的cp命令,由于存在权限问题,cp命令不能拷贝文件夹
解决办法:将php-fpm的运行用户组和用户设置为website:website,将拷贝的目标文件夹权限设置为website:website,网站源代码文件权限可以不限制
2.在写nginx配置文件的时候,我将配置文件放在/web/server/nginx/conf/vhost中,我用php的file_put_contents写入配置文件的,所以要保证vhost文件夹对php来说要可写,将vhost和php-fpm运行的用户组和用户设置一样即可。可用如下的命令设置
chown -R website:website /web/server/nginx/conf/vhost
3.如果要用php重启nginx,就要保证php对nginx有权限操作,最简单的方法就是将他们的用户和用户组设置为一样。用website用户去启动nginx。
su website
/web/server/nginx/sbin/nginx
在启动过程中失败,主要原因是我配置的写日志文件,nginx没有权限去操作。所以要将日志存放的文件用户也设置为website。nginx的配置文件nginx.conf用户也改成website。这样nginx还是不能启动起来,原因是在linux系统中只有root用户才能启用1024以下端口。如果想要普通用户启用80端口,可以作如下设置
首先修改nginx用户为root chown root /web/server/nginx/sbin/nginx
然后加上s权限 chomd u+x /web/server/nginx/sbin/nginx
以上可以参考我的另一篇日志 “linux下普通用户如何使用80端口启动程序” (地址:http://blog.wwllcchf.com/?p=78)
4.建立ftp用户,将这个用户映射到系统用户和组website上
我服务器上配置的ftp参考我日志“centos中proftpd mysql的安装与配置”(地址:http://blog.wwllcchf.com/?p=57)在添加ftp用户到数据库的时候,uid和gid都设置为5000,即可。

以上这样就完成了用户自助建站,自助开通ftp,上传文件到模板目录


本文固定链接: http://blog.wwllcchf.com/?p=80 | 吴文龙的个人博客

作者:wuwenlong 于2013年03月14日发表 &
用户自建网站,系统为其自动开通,并且自动新建FTP账户 | 吴文龙的个人博客

报歉!评论已关闭.