|
感谢Linux,感谢Ubuntu,我是菜菜,学习Ubuntu30天,终于建成了一套ftp,很有收获,作为新手,发出第一贴,献给ubuntu论坛。希望对新手有点帮助,高手莫笑。内容中很多都是大家的,莫怪。 下面的博客是我的,转贴能注明最好,不注也罢。
一、安装Ubuntu5 Desktop版
=============================================== 来源博客:http://blog.youkuaiyun.com/xuchenguang/ 编写整理:徐晨光 MSN:xuchenguang@msn.com 参考资料:http://wiki.ubuntu.org.cn论坛中的贴子, 以及从互联网“摆渡”出来的资料。 =============================================== 安装过程不难,依照http://wiki.ubuntu.org.cn快速设置即可,注意下面两点:
1、网通用户请选择上海交大的源,比较快。 我在烟台,用的网通的网,选cn99的源也只有3K,快时也不过13K。 2、ms分区下的中文目录名显示为??? 这时,你要编辑/etc/fstab。比如我的Dell笔记本中的fstab文件改后是: # /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/hda3 / ext3 defaults,errors=remount-ro 0 1 /dev/hda1 /media/hda1 ntfs auto,user,nls=utf8,umask=0 0 0 /dev/hda5 /media/hda5 vfat auto,user,utf8,umask=0 0 0 /dev/hda4 none swap sw 0 0 /dev/hdb /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0 ====================================== 3.Breezy(5.10)设置本地local环境 sudo dpkg-reconfigure locales #把所有zh-开头的都选上。
二、ubuntu Linux下手工安装mysql5
=============================================== 来源博客:http://blog.youkuaiyun.com/xuchenguang/ 编写整理:徐晨光 MSN:xuchenguang@msn.com 参考资料:http://wiki.ubuntu.org.cn论坛中的贴子, 以及从互联网“摆渡”出来的资料。 =============================================== 1、下载mysql5的linux版本。 地址:http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.20.tar.gz/from/http://mirror.vmmatrix.net/mysql/
2、安装GCCt等必备的软件: 在终端下执行(网通用户请用交大的源): sudo apt-get install gcc cpp g++ libncurses5-dev sudo apt-get install make autoconf automake libtool
3、解压: 对于*.tar.gz的文件使用命令tar zxvf *.tar.gz来解压; 对于*.tar.bz2的文件使用命令tar jxvf *.tar.bz2来解压. 将mysql,php,apache以及gd安装到/opt/目录下,便于管理. 具体过程可参考: 把桌面上刚下的MySQL复制到/tmp下:cp Desktop/mysql-5.0.20.tar.gz /tmp 进入/tmp目录:cd /tmp 解压并展开:tar zxvf mysql-5.0.20.tar.gz
4、编译安装MySQL: 进入到解压后的mysql目录: cd mysql-5.0.20 假设我常用用户是xcg1688,则在终端输入下面的命令: ./configure --prefix=/opt/mysql --with-mysqld-user=xcg1688 --with-extra-charsets=all --with-unix-socket-path=/tmp/mysql.sock
--prefix=/opt/mysql 把mysql-5.0.20指定安装到/opt/mysql目录中; --with-extra-charsets=all 对多语言的支持; --with-unix-socket-path=/tmp/mysql.sock 这个是指定mysql服务器启动后,联机套接字文件所处的位置和文件名,也就是说,如果mysql服务器成功启动后,就能在/tmp 目录中看到mysql.sock文件。如果看不到,肯定是mysql启动不了。 --with-mysqld-user=xcg1688 这个是让mysql服务器也能让系统中普通用户xcg1688也能启动mysql服务器。用普通用户来启动mysql的好处是:mysql的进程会自己死掉自动退出。当然root用户也可以,不过有时mysql有些进程死了,但不会自动退出,root自己也杀不掉。所以用普通用户就有这样的好处,大多不会出现mysql进程已死,但不会退出的情况; 当您看到“Thank you for choosing MySQL!”时,说明成功。
5.安装: sudo make sudo make install 在我的C2.66计算机上make时花了1小时15分钟。第二次花了40分钟左右。
6.配置: sudo cp /opt/mysql/share/mysql/my-medium.cnf /etc/my.cnf 这是将配置文件拷贝到/etc目录下成为my.cnf,大家可以根据自己的需要选择配置文件(配置文件在 /opt/mysql/share/mysql/目录下,有my-huge.cnf my-medium.cnf my-large.cnf my-small.cnf这些). 运行 sudo /opt/mysql/bin/mysql_install_db 这个命令是创建MySQL的授权表.
sudo chmod 755 /opt/mysql/var //设置/opt/mysql/var的目录权限为755 sudo chown -R xcg1688:xcg1688 /opt/mysql/var //如果希望使用xcg1688这个用户来启动mysql的话 sudo /opt/mysql/share/mysql/mysql.server start //启动mysql服务 sudo chown -R xcg1688:xcg1688 /opt/mysql/ //把/opt/mysql目录归属到xcg1688这个用户下 sudo /opt/mysql/bin/mysqladmin -u root password 123456 //设置root用户的密码为123456 /opt/mysql/bin/mysql -u root -p //试试看mysql能不能登录。/q退出。
7.设置MySQL的环境变量: cd //回到你的用户目录。 cp .bashrc .bashrc_bak //备份.bashrc gedit ~/.bashrc 在最后加入:export PATH=/opt/mysql/bin:$PATH:. 然后在终端输入:source ~/.bashrc #使刚修改的起作用 env //查看环境变量 mysql 上面的修改只针对某一用户,你还可以用另外一种办法:在/etc/profile添加PATH路径后,注销一次再echo应该就可以了。
8.设置MYSQL自动启动: sudo cp /opt/mysql/share/mysql/mysql.server /etc/rc2.d/S20mysql 另外办法:sudo gedit /etc/init.d/mysql //建立服务的shell脚本,在服务中你可看到它。 加入 #!/bin/sh /opt/mysql/share/mysql/mysql.server start 然后 $sudo chmod 755 /etc/init.d/mysql $sudo chmod +x /etc/init.d/mysql 最后,到服务中选中它。
9.安全: 重新启动计算机,在终端$下输入mysql能直接进入mysql>下,说明有空用户存在。解决办法:先/q退出,再: mysql -u root -p mysql>delete from mysql.user where user=''; #删除空用户,强烈建议。 mysql>flush privileges; #刷新权限表,以便可以使更改立即生效 mysql>/q回车退出 结果:再输入mysql,就不能进入了。必须用mysql -u xxxx -p的形式了。
三、Linux_Apache2 + PHP5安装: ====================================================== 来源博客:http://blog.youkuaiyun.com/xuchenguang/ 编写整理:徐晨光 MSN:xuchenguang@msn.com 参考资料:http://wiki.ubuntu.org.cn论坛中的贴子, 以及从互联网“摆渡”出来的资料。 ====================================================== 1.请先装好MySQL5,具体请看我的博客。 换成交大的源,然后sudo apt-get update 具体可参考:http://wiki.ubuntu.org.cn网站的快速配置。
2.安装: sudo apt-get install apache2 //安装apache2 sudo apt-get install php5 //安装php5 sudo apt-get install libapache2-mod-auth-mysql sudo apt-get install php5-mysql sudo apt-get install php5-gd
3.配置php.ini: 1)因对GD的支持所以要改一下,顺便把mysql.so也挂上: sudo gedit /etc/php5/apache2/php.ini 在文件最后找到代码: #extension=mysql.so #extension=gd.so 检查一下,前面如果有注释#,去掉它保存就好了。如果你要改什么上传文件大小、使用内存的大小,可以一并改了。 2)找到代码:mysql.default_socket = 改成: mysql.default_socket = '/tmp/mysql.sock'
4.安装phpmyadmin sudo apt-get install phpmyadmin
测试:http://localhost/phpmyadmin/ //出来界面就行了,暂时不要登录。 说明:启动:sudo /etc/init.d/apache2 start 重启命令:sudo /etc/init.d/apache2 restart 删除命令(来自网上,没有验证):sudo apt-get remove --purge apache-common
5.修改/etc/phpmyadmin/config.inc.php: 终端输入:sudo gedit /etc/phpmyadmin/config.inc.php 找到:#$cfg['Servers'][$i]['socket'] = ''; 把前面的#去掉,改为:$cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';
6.改密码: 终端输入:mysql -u root -p UPDATE mysql.user SET Password = OLD_PASSWORD('123456') WHERE Host = 'localhost' AND User = 'root'; 原因:我们修改过MYSQL的root的密码,因为MYSQL的password的散列加密方法和以前有了变化,所以出了这个问题 这个改变在MYSQL4.1版以上才有原先的方式变成了OLD_PASSWORD,我们重新更新一下密码就好了。
7.重新启动计算机(一定要做)。 打开浏览器测试:http://localhost/phpmyadmin/ 用户名输入root,再输入刚改的密码,OK。
8.问题参考: 配置不当可能进不去,请检查第5步中的#号去了没有。另外,请检查my.cnf和php.ini文件,具体可查找(sudo find / -name 文件),查找时注意权限,一般要加sudo。my.cnf文件一般在/etc/my.cnf,php.ini一般在/etc/php.ini,确保两个文件里的 socket = /tmp/mysql.sock 都相同。
四、Ubuntu Linux下Pure-FTPD安装: ====================================================== 来源博客:http://blog.youkuaiyun.com/xuchenguang/ 编写整理:徐晨光 MSN:xuchenguang@msn.com 参考资料:http://wiki.ubuntu.org.cn论坛中的贴子, 以及从互联网“摆渡”出来的资料。 ====================================================== 1.准备工作:请先装好Ubuntu、MySQL5、Apache2、PHP5,具体请看我的博客。 下载:ftp://ftp.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.21.tar.gz 假设下载到桌面上。建议你在用户文件夹下建一个down,下载的软件放到那里去。不过这次为了说明方便,就先放到桌面上吧。
2、打开终端 $cd Desktop $tar zxvf pure-ftpd-1.0.21.tar.gz $cd pure-ftpd-1.0.21 $sudo cp /opt/mysql/lib/mysql/*.* /usr/lib $./configure / --with-mysql=/opt/mysql / --with-rfc2640
$sudo make //编译 $sudo make install //安装
3.拷贝两个基本的配置文件: 对于 pure-ftpd来说,如果用MySQL认证,那么最重要的2个文件分别是 pure-ftpd.conf 和 pureftpd-mysql.conf,用源码安装,这2个文件是在安装的目标上找不到的。他在我们的源码里,只是个样本。 我们把他们2个复制到 /etc 目录下,你也可复制到别处,但是在配置时又有所变动哦 $sudo cp pureftpd-mysql.conf /etc $sudo cp configuration-file/pure-ftpd.conf /etc
4.修改 /etc/pure-ftpd.conf $sudo gedit /etc/pure-ftpd.conf 这里列出一部分重要的,注意前面有#号的,如果想起用请去掉。 ChrootEveryone yes # 锁定用户在主目录中,你不会希望,a1用户能进到a2目录里吧 CreateHomeDir yes # 自动建立用户主目录,根据数据里的记录,自动建立用户目录 AnonymousCanCreateDirs yes # 允许匿名用户创建新目录? MaxClientsNumber 200 # 最大可连接的用户数,自己决定吧 MaxLoad 100 #系统连接数超此值,禁止匿名下载 MaxClientsPerIP 8 # 来自一个IP的最大连接数,知道有的站点,为什么只能一个线程了吧 MaxIdleTime # 客户端连接后的最大闲置时间 AntiWarez yes #不接受所有者为 "ftp" 的文件的下载。例如:那些匿名用户上传后未被本地管理员验证的文件。 MySQLConfigFile /etc/pureftpd-mysql.conf # 关键部分,去#号,你整合mysql就靠它了 ProhibitDotFilesWrite yes # 禁止修改隐藏文件 ProhibitDotFilesRead yes # 禁止读取隐藏文件,这2项建议用yes,不然你不小心把某个.开头的(隐藏文件)弄没了,或改了,可能你的用户会有问题哦。 FileSystemCharset UTF-8 #服务器端UTF-8 ClientCharset GB2312 #客户端见到的是GB2312 根据自己的要求来设定,但注意一定要把注掉的MySQLConfigFile打开,还有注掉的CreateHomeDir打开。
5、修改/etc/pureftpd-mysql.conf $sudo gedit /etc/pureftpd-mysql.conf 这里列出一部分重要的,注意前面有#号的,如果想起用请去掉。 # Optional : MySQL server name or IP. Don't define this for unix sockets. MYSQLServer localhost #SQL运行在本机,当然是 localhost了 # Optional : MySQL port. Don't define this if a local unix socket is used. MYSQLPort 3306 #原来是注销掉的我们打开它,其实不打开也行,系统默认就OK # Mandatory : user to bind the server as. MYSQLUser root #这里的 MYSQLUser和MYSQLPassword是 pureftpd查询帐号数据库用的,我就用root得了,你也可指定,但是必须在 mysql.user表里有指定 MYSQLPassword 123456 MYSQLDatabase ftpusers #这个是我们要在MySQL里建立的一个认证数据库 配置完成。
6、建立ftp用户目录 $sudo groupadd ftpgroup -g 10000 #建立一个ftpgroup组,gid为10000,这里的10000要记住哦,等下要用到。 $sudo useradd ftpuser -g ftpgroup -u 10000 #建立一个ftpuser用户,属于ftpgroup组,uid为10000。 $sudo mkdir /var/ftpdir $sudo chown -R ftpuser.ftpgroup /var/ftpdir #把 /var/ftpdir目录及同以下的目录,设置所属用户和群组。
7.pureftp管理: Pureftp的管理软件很多,我们在这里选择这个: 下载地址http://machiel.generaal.net/files/pureftpd/ftp_v2.1.tar.gz 假设下到桌面, $cd $cd Desktop $sudo tar zxvf ftp_v2.1.tar.gz #解压展开,桌面上多了一个文件夹,名为ftp $sudo mv ftp /var/www/ftp #把ftp文件夹移动到Apache服务器主目录,本文中是/var/www。 下面配置安装,如果有什么问题,请http://localhost/phpmyadmin/,把数据库ftpusers删除,再重新下面的操作。 打开浏览器,输入http://localhost/ftp/install.php step1)按step2 #这一步如果出现config.php权限不够的提示,用chmod开权限。 step2)按“New installation,”链接; step3)"Hostname"中填写127.0.0.1,“Username”填写root,Password填写123456,按connect,全部OK了按"continue”。又出来一个对话框,除了上面的三项要一模一样外,“Database”要填写"ftpusers",按 refresh,全部OK了按“step4”。有问题修正后按"refresh"验证。 step4)语言选中文,FTP Address改成你的IP:21,“Default user ID”和"Default group ID"都是10000,要想流量控制和上传下载比率,把最后两项选中。按"Save"按钮,保存到config.php中。按step5。 step5)管理员密码,改一下,按"step6".出来一个选择,要你选择一个有足够权限的用户,用来使本次的管理员密码更改生效,我选root。 step6)没什么好说的,按step7。完成了。 $sudo gedit /var/www/ftp/index.php 找到下面这行,把前面的//去了。 // echo ("<input type=/"text/" name=/"dir_box/" size=/"40/" maxlength=/"128/" value=/"$dir/">/n"); 找到下面这行,把前面加上// echo ("<input type=/"hidden/" name=/"dir_box/" value=/"$dir/">/n"); 找到两处.md5($_POST['password_box'])."' 全都改成.$_POST['password_box']."'
打开浏览器,输入http://localhost/ftp/ 新建个帐号,名a密码a,主目录/var/ftpdir/a(它怎么会叫家目录,都是home惹得祸!)。有兴趣你可以看一下,a目录是不存在的,用ftp登录一下,a就自动建好了。
8.运行测试: 我们得要把 pureftp运行起来再说,我们可以利用 pureftp源码解压目录/configuration-file/pure-config.pl这个脚本来控制,注意,这是用perl语言写的。如果没有安装perl就安装一个吧。输入: $cd $cd Desktop $cd pure-ftpd-1.0.21 #先进入你解压的文件夹 $sudo chmod u+x configuration-file/pure-config.pl $sudo cp configuration-file/pure-config.pl /etc #放这里好找 $sudo /etc/pure-config.pl /etc/pure-ftpd.conf #运行pureftpd服务器 看到如果下信息,就说明成功了 Running: /usr/local/sbin/pure-ftpd -A -c200 -B -C8 -D -fftp -H -I15 -lmysql:/etc/pureftpd-mysql.conf -L2000:8 -M -m100 -s -U133:022 -u100 -x -X -j -k99 -Z -8UTF-8 -9UTF-8 接着: $ftp localhost Connected to localhost.localdomain. 220---------- Welcome to Pure-FTPd ---------- 220-You are user number 1 of 200 allowed. 220-Local time is now 15:03. Server port: 21. 220-IPv6 connections are also welcome on this server. 220 You will be disconnected after 15 minutes of inactivity. Name (localhost:xcg1688): a #用户名 331 User a OK. Password required Password: #密码 230-User a has group access to: ftpgroup 230 OK. Current restricted directory is / Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221-Goodbye. You uploaded 0 and downloaded 0 kbytes. 221 Logout.
9.设置pure-ftpd为系统服务: $sudo gedit /etc/init.d/pure-ftpd 内容: #!/bin/sh /etc/pure-config.pl /etc/pure-ftpd.conf 然后: $sudo chmod 755 /etc/init.d/pure-ftpd $sudo chmod +x /etc/init.d/pure-ftpd 最后,到服务中选中它。重启系统(要设置匿名,先不重启,进入第10步)。
10.匿名上传下载: $sudo mkdir /var/ftpdir/anonymous #建立一个目录,名字随意,下面要用,记住统一即可。 $sudo useradd ftp -g ftpgroup #添加一个用户“ftp”必须是这个名,它与其它ftp用户都从属于上面的ftpgroup。 $sudo usermod -d /var/ftpdir/anonymous ftp #更改“ftp”这个用户的主目录。 $sudo chmod +777 /var/ftpdir/anonymous #使具有匿名上层目录的用户可以删除匿名目录anonymous内的文件。 $sudo chown ftp:ftpgroup /var/ftpdir/anonymous
修改 /etc/pure-ftpd.conf终端:$sudo gedit /etc/pure-ftpd.conf 找到: AnonymousCantUpload no,不接受匿名用户上传新文件( no = 允许上传)
还是要重启才好用。 其它: ftp客户端可选gftp,在终端输入:sudo apt-get install gftp
五、Pure-FTPD用户权限分配策略: ====================================================== 来源博客:http://blog.youkuaiyun.com/xuchenguang/ 编写整理:徐晨光 MSN:xuchenguang@msn.com 参考资料:http://wiki.ubuntu.org.cn论坛中的贴子, 以及从互联网“摆渡”出来的资料。 ====================================================== 按照前面的设置好后,权限情况是:注册用户各自对自已的文件夹有全权,互相不能看。匿名用户对anonymous文件夹有上传权限、建文件夹权限,没有删除权限。在实际工作中,这种分配方案不能满足需求,下面来改进一下:
1,需求分析: ftpmanager:对ftp内所有的文件有全权。 注册用户:权限不变,仍然对各自的文件有全权,相互隔离。 匿名用户:对anonymous内文件有下载权限,对anonymous/upload下有上传、建目录权限,没有删除权限。
2、实现办法: http://localhost/ftp/index.php 新建用户ftpmanager,输入密码,更改主目录为/var/ftpdir。其它的上传下载速率也改一下吧。 $sudo chmod +755 /var/ftpdir/anonymous #匿名目录写入权限限制在属主(也叫所有者)。 $sudo chown ftpuser:ftpgroup /var/ftpdir/anonymous #匿名目录属主改为ftpuser。 $sudo usermod -d /var/ftpdir/anonymous ftp #匿名用户主目录在anonymous,如果你是一步一步按前面来的,这一步不必做。 $sudo mkdir /var/ftpdir/anonymous/upload $sudo chmod +755 /var/ftpdir/anonymous/upload #upload目录写入权限限制在属主和群组。 $sudo chown ftp:ftpgroup /var/ftpdir/anonymous/upload #upload目录属主改为ftp(即匿名帐号)。 ======================================================================================================= (完)如果觉得好,顶一下,别让他沉了。 | | |