10/07
2
一。 安装vsftp和db4
sudo apt-get install vsftpd
sudo apt-get install db4.6-util
二。建立虚拟用户口令库文件
sudo mkdir /etc/vsftpd
新建名为logins.txt 的用户口令文件,
sudo gedit /etc/vsftpd/logins.txt
奇数行为用户名。偶数行为密码,如下用户 User1的密码为123456,User2的密码为12345
User1
123456
User2
12345
admin
admin
三。生成vsftpd的认证文件
使用db_load命令生成认证文件:
db4.6_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db
将vsftpd_login.db的权限设为只对root可读写,即600
chmod 600 /etc/vsftpd/vsftpd_login.db
四。建立虚拟用户所需的PAM配置文件
在/etc/pam.d目录中建立vsftpd.vu内容如下
sudo gedit /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
五。建立虚拟用户所需的系统用户和主目录
sudo useradd jtmvi -d /www -s /bin/false
sudo chown jtmvi.jtmvi /www
sudo chown jtmvi.jtmvi /www/User1
sudo chown jtmvi.jtmvi /www/User2
sudo chmod 700 /www
六。设置vsftpd.conf配置文件:(记得先备份)
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_old #备份
gedit /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=jtmvi
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd.vu
local_enable=YES
anon_umask=022
七 。 对不同的虚拟用户设置不同权限
sudo mkdir /etc/vsftpd_user_conf
gedit /etc/vsftpd_user_conf/User1
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/www/User1
gedit /etc/vsftpd_user_conf/User2
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/www/User2
gedit /etc/vsftpd_user_conf/admin
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/www
八。重启vsftpd
/etc/init.d/vsftpd restart
sudo apt-get install vsftpd
sudo apt-get install db4.6-util
二。建立虚拟用户口令库文件
sudo mkdir /etc/vsftpd
新建名为logins.txt 的用户口令文件,
sudo gedit /etc/vsftpd/logins.txt
奇数行为用户名。偶数行为密码,如下用户 User1的密码为123456,User2的密码为12345
User1
123456
User2
12345
admin
admin
三。生成vsftpd的认证文件
使用db_load命令生成认证文件:
db4.6_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/vsftpd_login.db
将vsftpd_login.db的权限设为只对root可读写,即600
chmod 600 /etc/vsftpd/vsftpd_login.db
四。建立虚拟用户所需的PAM配置文件
在/etc/pam.d目录中建立vsftpd.vu内容如下
sudo gedit /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
五。建立虚拟用户所需的系统用户和主目录
sudo useradd jtmvi -d /www -s /bin/false
sudo chown jtmvi.jtmvi /www
sudo chown jtmvi.jtmvi /www/User1
sudo chown jtmvi.jtmvi /www/User2
sudo chmod 700 /www
六。设置vsftpd.conf配置文件:(记得先备份)
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_old #备份
gedit /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=jtmvi
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd.vu
local_enable=YES
anon_umask=022
七 。 对不同的虚拟用户设置不同权限
sudo mkdir /etc/vsftpd_user_conf
gedit /etc/vsftpd_user_conf/User1
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/www/User1
gedit /etc/vsftpd_user_conf/User2
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/www/User2
gedit /etc/vsftpd_user_conf/admin
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/www
八。重启vsftpd
/etc/init.d/vsftpd restart
10/06
25
把图片实时同步到图片服务器。。。
10/06
24
1.先启动一个测试用的ttserver
注意使用的所有路径都是绝对路径
ttserver -host 192.168.0.100 -port 20000 -thnum 4 -dmn -ulim 1024m -ulog $(pwd)/ulog/ -log $(pwd)/temp/test.log -pid $(pwd)/temp/test.pid -sid 9 $(pwd)/temp/test_data.tch#bnum=1000#rcnum=0#xmsiz=0m
2. 查看服务器统计信息
tcrmgr inform -port 20000 -st 192.168.0.100
3. 写入数据
tcrmgr put -port 20000 192.168.0.100 test1 value1
4. 读取数据
tcrmgr get -port 20000 192.168.0.100 test1
5. 删除数据
tcrmgr out -port 20000 192.168.0.100 test1
6. 查看所有的key
tcrmgr list -port 20000 192.168.0.100
7. 备份数据
注意:路径是服务器上的绝对路径,否则显示“./tcrmgr: error: 9999: miscellaneous error”
tcrmgr copy -port 20000 192.168.0.100 $(pwd)/temp/test2.tch
8. 日志导出(屏幕上打印,十六进制字符串格式)
注意:命令不同了
注意:目录是服务器上的ulog的绝对路径
ttulmgr export $(pwd)/ulog/
9. 同步内存数据到磁盘(没搞懂有什么特别之处,可能是当ttserver使用-uas参数异步写入日志的时候起作用)
tcrmgr sync -port 20000 192.168.0.100
10. 数据导入
注意:tsv格式的文件以TAB分隔,如:test2\tvalue2\n
注意:路径是本地路径,所以不必是绝对路径
tcrmgr importtsv -port 20000 192.168.0.100 temp/2.tsv
11. 通过ulog日志恢复数据
注意:路径是服务器上的绝对路径
tcrmgr restore -port 20000 192.168.0.100 $(pwd)/old_ulog/
12. 打印更新日志(挂起,一直显示日志)
可能是用于实时查看ttserver有哪些操作,相当于tail -f
tcrmgr repl -port 20000 -ph 192.168.0.100
13. 下一个实验:启动一个带复制功能的ttserver,以前面启动的ttserver为master
ttserver -host 192.168.0.100 -port 20001 -mhost 192.168.0.100 -mport 20000 -rcc -rts $(pwd)/temp_1/test_1.rts -thnum 4 -dmn -ulim 1024m -ulog $(pwd)/temp_1/ -log $(pwd)/temp_1/test_1.log -pid $(pwd)/temp_1/test_1.pid -sid 10 $(pwd)/temp_1/test_1.tch#bnum=1000#rcnum=0#xmsiz=0m
14. 再启动一个普通的ttserver,不与其他服务器相关
ttserver -host 192.168.0.100 -port 20002 -thnum 4 -dmn -ulim 1024m -ulog $(pwd)/ulog_2/ -log $(pwd)/temp_2/test_2.log -pid $(pwd)/temp_2/test_2.pid -sid 11 $(pwd)/temp_2/test_data_2.tch#bnum=1000#rcnum=0#xmsiz=0m
15. 修改某个ttserver的master
tcrmgr setmst -port 20001 -mport 20002 192.168.0.100 192.168.0.100
注意:只有以复制方式启动的ttserver,修改master后才能从新的数据库复制数据
注意:每个ttserver只能有一个master,修改后,不能再从以前的master复制数据
注意使用的所有路径都是绝对路径
ttserver -host 192.168.0.100 -port 20000 -thnum 4 -dmn -ulim 1024m -ulog $(pwd)/ulog/ -log $(pwd)/temp/test.log -pid $(pwd)/temp/test.pid -sid 9 $(pwd)/temp/test_data.tch#bnum=1000#rcnum=0#xmsiz=0m
2. 查看服务器统计信息
tcrmgr inform -port 20000 -st 192.168.0.100
3. 写入数据
tcrmgr put -port 20000 192.168.0.100 test1 value1
4. 读取数据
tcrmgr get -port 20000 192.168.0.100 test1
5. 删除数据
tcrmgr out -port 20000 192.168.0.100 test1
6. 查看所有的key
tcrmgr list -port 20000 192.168.0.100
7. 备份数据
注意:路径是服务器上的绝对路径,否则显示“./tcrmgr: error: 9999: miscellaneous error”
tcrmgr copy -port 20000 192.168.0.100 $(pwd)/temp/test2.tch
8. 日志导出(屏幕上打印,十六进制字符串格式)
注意:命令不同了
注意:目录是服务器上的ulog的绝对路径
ttulmgr export $(pwd)/ulog/
9. 同步内存数据到磁盘(没搞懂有什么特别之处,可能是当ttserver使用-uas参数异步写入日志的时候起作用)
tcrmgr sync -port 20000 192.168.0.100
10. 数据导入
注意:tsv格式的文件以TAB分隔,如:test2\tvalue2\n
注意:路径是本地路径,所以不必是绝对路径
tcrmgr importtsv -port 20000 192.168.0.100 temp/2.tsv
11. 通过ulog日志恢复数据
注意:路径是服务器上的绝对路径
tcrmgr restore -port 20000 192.168.0.100 $(pwd)/old_ulog/
12. 打印更新日志(挂起,一直显示日志)
可能是用于实时查看ttserver有哪些操作,相当于tail -f
tcrmgr repl -port 20000 -ph 192.168.0.100
13. 下一个实验:启动一个带复制功能的ttserver,以前面启动的ttserver为master
ttserver -host 192.168.0.100 -port 20001 -mhost 192.168.0.100 -mport 20000 -rcc -rts $(pwd)/temp_1/test_1.rts -thnum 4 -dmn -ulim 1024m -ulog $(pwd)/temp_1/ -log $(pwd)/temp_1/test_1.log -pid $(pwd)/temp_1/test_1.pid -sid 10 $(pwd)/temp_1/test_1.tch#bnum=1000#rcnum=0#xmsiz=0m
14. 再启动一个普通的ttserver,不与其他服务器相关
ttserver -host 192.168.0.100 -port 20002 -thnum 4 -dmn -ulim 1024m -ulog $(pwd)/ulog_2/ -log $(pwd)/temp_2/test_2.log -pid $(pwd)/temp_2/test_2.pid -sid 11 $(pwd)/temp_2/test_data_2.tch#bnum=1000#rcnum=0#xmsiz=0m
15. 修改某个ttserver的master
tcrmgr setmst -port 20001 -mport 20002 192.168.0.100 192.168.0.100
注意:只有以复制方式启动的ttserver,修改master后才能从新的数据库复制数据
注意:每个ttserver只能有一个master,修改后,不能再从以前的master复制数据
10/06
23
#!/bin/sh
for F in `ls user_post/config.*.php`
do
/php/bin/php-cgi $F > /dev/null &
done
for F in `ls user_post/config.*.php`
do
/php/bin/php-cgi $F > /dev/null &
done
放到后台运行的方法
nohup jasonyu.php &
10/06
22
memcached完全剖析–1. memcached的基础
memcached全面剖析–2.理解 memcached的内存存储
memcached全面剖析 –3.memcached的删除机制和发展方向
memcached全面剖析–4. memcached的分布式算法
memcached全面剖析–2.理解 memcached的内存存储
memcached全面剖析 –3.memcached的删除机制和发展方向
memcached全面剖析–4. memcached的分布式算法
10/06
18
一无所知的入门学习的最好学习资料就是Emacs自带的Tutorial,即 C-h t。学习时间大概2~3小时。
10/06
14
memcache模块是一个高效的守护进程,提供用于内存缓存的过程式程序和面向对象的方便的接口,特别是对于设计动态web程序时减少对数据库的访问。.....
10/06
6
sudo vi /etc/network/interfaces
//这个应该是决定是否启用这个端口
auto eth0
//静态设置IP
iface eth0 inet static
address 172.16.146.200
netmask 255.255.255.0
#broadcast 172.16.146.255
gateway 172.16.146.254
//通过dhcp动态设置
iface eth0 inet dhcp
//设置DNS服务器
sudo vi /etc/resolv.conf
nameserver 202.96.128.68
nameserver 61.144.56.101
nameserver 192.168.8.220
//重新设置网络,以启用新设置
sudo /etc/init.d/networking restart
ubuntu下一个网卡设置多个IP
要加一个 192.168.0.111 的 ip
sudo ifconfig eth0:0 192.168.0.111 up
就搞定了。
如果需要开机自动绑定的话,
就写到 /etc/network/interfaces 中,仿照 eth0 写个 eth0:0
auto eth0
iface eth0 inet static
address 192.168.0.5
netmask 255.255.255.0
gateway 192.168.0.1
auto eth0:0
iface eth0:0 inet static
address 192.168.0.25
netmask 255.255.255.0
gateway 192.168.0.1
//这个应该是决定是否启用这个端口
auto eth0
//静态设置IP
iface eth0 inet static
address 172.16.146.200
netmask 255.255.255.0
#broadcast 172.16.146.255
gateway 172.16.146.254
//通过dhcp动态设置
iface eth0 inet dhcp
//设置DNS服务器
sudo vi /etc/resolv.conf
nameserver 202.96.128.68
nameserver 61.144.56.101
nameserver 192.168.8.220
//重新设置网络,以启用新设置
sudo /etc/init.d/networking restart
ubuntu下一个网卡设置多个IP
要加一个 192.168.0.111 的 ip
sudo ifconfig eth0:0 192.168.0.111 up
就搞定了。
如果需要开机自动绑定的话,
就写到 /etc/network/interfaces 中,仿照 eth0 写个 eth0:0
auto eth0
iface eth0 inet static
address 192.168.0.5
netmask 255.255.255.0
gateway 192.168.0.1
auto eth0:0
iface eth0:0 inet static
address 192.168.0.25
netmask 255.255.255.0
gateway 192.168.0.1






