某储备粮的“学习笔记” - server http://blog.gregwym.info/tag/server/ CentOS下用yum搭建LNMP服务器 http://blog.gregwym.info/setup-lnmp-using-yum-under-centos.html 2012-04-05T22:07:00+08:00 CentOS下搭服务器也折腾好几次了, 每次都知道个大概, 具体repo的地址什么的还都要现找, 实在不效率, 干脆整理记录下来.yum安装比较简单快捷, 但默认配置的安全和性能方面不如LNMP一键安装包. 推荐生产环境用一键安装包如果你在国内的话, 先替换CentOS-Base.repomv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak # 如果是CentOS 5.* wget http://mirrors.163.com/.help/CentOS5-Base-163.repo # 如果是CentOS 6.* wget http://mirrors.163.com/.help/CentOS6-Base-163.repo yum makecache 如果之前有apache, 卸载yum remove httpd 更新软件到最新版本yum -y update 安装源# 如果是CentOS 5.* rpm -ivh http://nginx.org/packages/centos/5/noarch/RPMS/nginx-release-centos-5-0.el5.ngx.noarch.rpm rpm -ivh http://fedora.mirror.nexicom.net/epel/5/i386/epel-release-5-4.noarch.rpm rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm # 如果是CentOS 6.* rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm rpm -ivh http://fedora.mirror.nexicom.net/epel/6/i386/epel-release-6-8.noarch.rpm rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm 编辑启用remi源vi /etc/yum.repos.d/remi.repo # 将[remi]下的enabled=0改为enabled=1 # 按esc # :x回车 执行安装, 根据需要增减要安装的php模块yum install nginx mysql mysql-server php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy 启动nginx, php-fpm, mysqldservice nginx restart service php-fpm restart service mysqld restart 设置自动启动chkconfig nginx on chkconfig php-fpm on chkconfig mysqld on mysql密码设置mysql_secure_installation 至于目录权限管理什么的, 就不写了.niginx配置文件在/etc/nginx/nginx.confphp-fpm配置文件在/etc/php-fpm.confphp配置文件/etc/php.inimysql配置文件/etc/my.cnf参考文章:http://www.ppkj.net/2011/11/18/centos6-yum-%E6%90%AD%E5%BB%BAlinux-nginx-php-mysql-lnmp/http://www.centos.bz/2011/03/yum-install-nginx-mysql-php-fastcgi-lnmp/ Linux的用户(user)和用户组(group)管理 http://blog.gregwym.info/linux-de-yong-hu--user--he-yong-hu-zu--group--guan-li.html 2011-06-04T15:10:35+08:00 Linux的多用户权限管理还是很强大的...熟悉了各种命令之后, 对每一个用户的权利可以说是操控自如.用户(user)和用户组(group)相关的配置文件、命令或目录 /etc/passwd 用户配置文件 /etc/shadow 用户密码影子文件 /etc/group 用户组配置文件 /etc/gshadow 用户组配置影子文件 配置文件的格式 /etc/passwd 的每一行采用以下格式:name:password:uid:gid:comment:home:shell name 用户名 password 密码 uid 用户的UserID gid 用户所对应默认用户组的GroupID comment 备注 home 用户的主目录绝对路径 shell 用户登录的shell/任意命令的绝对路径 /etc/group 的每一行采用以下格式:group_name:passwd:GID:user_list group_name 用户组名 passwd 用户组密码 GID 用户组GroupID user_list 该组的所有用户 管理用户(user)和用户组(group)的相关命令useradd 添加用户 passwd 为用户设置密码 usermod 修改用户命令,可以通过usermod来修改登录名、用户的家目录等等; pwcov 同步用户从/etc/passwd到/etc/shadow pwck pwck是校验用户配置文件/etc/passwd和/etc/shadow文件内容是否合法或完整; pwunconv 是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件; finger 查看用户信息工具 id 查看用户的UID、GID及所归属的用户组 chfn 更改用户信息工具 su 用户切换工具 sudo 通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现; visudo 编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的; groupadd 添加用户组; groupdel 删除用户组; groupmod 修改用户组信息 groups 显示用户所属的用户组 gpasswd 将用户从用户组中添加/移除 grpck 校验用户组配置文件/etc/group和/etc/gshadow文件内容是否合法或完整; grpconv 通过/etc/group和/etc/gshadow的文件内容来同步或创建/etc/gshadow,如果/etc/gshadow 不存在则创建; grpunconv 通过/etc/group 和/etc/gshadow文件内容来同步或创建/etc/group,然后删除gshadow文件; 用户管理实例useradd visitor # 添加一个叫visitor的新用户(主用户组默认为同名) passwd visitor # 给visitor添加密码 groupadd theme-park # 添加一个叫theme-park的用户组 groupadd city-park # 添加一个叫city-park的用户组 usermod -g theme-park visitor # 将visitor的主用户组修改为park gpasswd -a visitor city-park # 将visitor添加到city-park用户组 参考资料:Linux 用户(user)和用户组(group)管理概述Linux 介绍和基本操作 Quickweb OpenVZ安装PPTP VPN实践笔记(不用MPPE) http://blog.gregwym.info/quickweb-openvz-an-zhuang-pptp-vpn-shi-jian-bi-ji---bu-yong-mppe.html 2011-04-22T23:56:29+08:00 从回国之前, 一直倒腾到家`可算是把VPN搭好了...OpenVZ的VPS在内核这块实在是缺少自由, 如果是Xen这次就不会这么复杂了.废话少说.基本过程和网上其他的教程都差不多, 主要在于加密和ipforward的配置. 安装ppp和iptables yum install -y ppp iptables 安装pptpd wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm rpm -ivh pptpd-1.3.4-2.rhel5.i386.rpm 配置/etc/ppp/options.pptpd这个是不使用MPPE加密的配置, 适用于母鸡kernel不支持MPPE的童鞋 name pptpd # Encryption部分全部注释掉, 不使用加密 # 使用chap验证 +chap #使用Google DNS ms-dns 8.8.8.8 ms-dns 8.8.4.4 proxyarp lock nobsdcomp novj novjccomp nologfd nodeflate 这个是使用MPPE的配置, 如果你的母鸡支持, 推荐用这个 name pptpd # 禁用pap, chap, mschap refuse-pap refuse-chap refuse-mschap # 强制mschap-v2和mppe-128 require-mschap-v2 require-mppe-128 #使用Google DNS ms-dns 8.8.8.8 ms-dns 8.8.4.4 proxyarp lock nobsdcomp novj novjccomp nologfd 配置/etc/pptpd.conf option /etc/ppp/options.pptpd # 设置ip分配方案 localip 172.16.36.1 remoteip 172.16.36.2-254 配置/etc/ppp/chap-secrets, 设置登录帐号 # Secrets for authentication using CHAP # client server secret IP_addresses 帐号 pptpd 密码 *(表示任意IP都可以连接) 配置ip转发 /etc/sysctl.conf net.ipv4.ip_forward = 1 在bash中执行 sysctl -p service pptpd restart service iptables restart iptables -t nat -A POSTROUTING -s 172.16.36.0/24 -o venet0 -j MASQUERADE iptables -I FORWARD -p tcp --syn -i ppt+ -j TCPMSS --set-mss 1356 service iptables save service iptables restart chkconfig pptpd on chkconfig iptables on 这些都配置好了以后, 如果你使用了MPPE, 那就可以尝试连接了.如果你没有使用MPPE 在Windows中设置VPN, 取消include windows logon domain, 选择PPTP连接,Data加密选择Optional, 选择CHAP验证登录 在Mac/iOS中设置VPN, 将加密设置为"无"即可 这样就可以尝试连接了 Note: 日志文件在/var/log/messages, 如果log中出现, "This system lacks kernel support for PPP. " 字样, 请发ticket让ISP给你打开PPP支持, 之后就应该可以正常连接了.参考资料:CentOS 5 VPS上配置pptpd作为VPN服务器不带MPPE的VPN服务器端及客户端的设置笔记 Nginx设置301重新定向 http://blog.gregwym.info/nginx-she-zhi-301-chong-xin-ding-xiang.html 2011-04-06T03:25:52+08:00 入了个新的域名, 打算做点小应用试试.原来的Nginx设定里, 子域名会自动对应子目录. 如果碰巧有人输入了我为新域名设定的目录名, 就会造成域名不统一的情况出现...所以研究了下301定向, 发现Nginx的设置真的好简单.在nginx.conf里的自动对应规则之前, 加入下边的内容server { server_name www.xxxx.com; rewrite ^(.*) http://xxxx.com$1 permanent; } 继续去整理240的内容了... linux服务器`自动备份数据库+网页到邮箱 http://blog.gregwym.info/linux-fu-wu-qi-%60-zi-dong-bei-fen-shu-ju-ku---wang-ye-dao-you-xiang.html 2011-04-05T10:11:48+08:00 我的QQ邮箱现在已经有3T容量了...原来玩WordPress的时候其实就一直拿来做数据库备份, 现在容量变大几倍有余, 自然是备份的不二选择. 这可比FDC的大容量VPS划算多了, 特别是当你的网站并没有多大的时候. (书苑现在的数据库也都还没有1G...)这个脚本来自小夜博客, 经我略加修改了一下.下载: backup_to_mail.sh很简单的一段bash script, 只需要自定义下mysql的用户名密码, 邮箱地址和要备份的目录.然后进行下边的步骤:首先要建立好放置备份文件的目录mkdir /home/backup 然后安装发送邮件的程序yum install sendmail mutt 把backup_to_mail.sh放到刚刚建立的目录中, 然后给脚本增加运行权限chmod a+x /home/backup/backup_to_mail.sh 最后一步是设置定时运行, 输入crontab -e 然后在vi编辑界面中加入下面这行文字00 00 * * * /home/backup/backup_to_mail.sh :x + enter就ok了.其中00 00表示在每日00分, 00点的时候运行该脚本.下边是脚本的内容, 以备附件失效和以后学习...#!/bin/bash MYSQL_USER=root #mysql username MYSQL_PASS=*********** #mysql password MAIL_TO=*******@***.** #mailling to WEB_DATA=/home/wwwroot/ #to be backup dir #define variables DataBakName=Data_$(date +%Y%m%d).tar.gz WebBakName=Web_$(date +%Y%m%d).tar.gz OldData=Data_$(date -d -3day +%Y%m%d).tar.gz OldWeb=Web_$(date -d -3day +%Y%m%d).tar.gz DataSubject="Backup: gregwym.info database "$(date +%Y%m%d) WebSubject="Backup: gregwym.info web dir "$(date +%Y%m%d) #delete data from 3days earlier rm -rf /home/backup/$OldData /home/backup/$OldWeb cd /home/backup #export database to compressed gz files for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do (/usr/local/mysql/bin/mysqldump --single-transaction -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz) done #compress database files tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz rm -rf /home/backup/*.sql.gz #mail database echo $DataSubject | mutt -a /home/backup/$DataBakName -s "${DataSubject}" $MAIL_TO #compress backup dir tar zcf /home/backup/$WebBakName $WEB_DATA #mail dir echo $WebSubject | mutt -a /home/backup/$WebBakName -s "${WebSubject}" $MAIL_TO echo "bye" #END 如果不希望备份网页文件, 或者希望数据库和网页分别备份的, 可以自行拆分脚本为两个文件.如果只是想降低备份网页文件的频率, 可以将#mail dir部分替换为:if [ $(date +%A) = "Sunday" ]; then echo $WebSubject | mutt -a /home/backup/$WebBakName -s "${WebSubject}" $MAIL_TO fi 果断换VPS...这回是QuickWeb http://blog.gregwym.info/guo-duan-huan-vps-zhe-hui-shi-quickweb.html 2011-04-03T07:10:58+08:00 Hostrail实在是不给力...`CPU不灵, 装lnmp慢的一塌糊涂, 好不容易Setup好, 各种问题层出不穷. HyperVM Panel时不时无法访问, 即使可以访问也慢得要死 html页的速度倒还不错, 可Typecho这么轻量化的php应用都慢的不成样子 从3.29到4.1这段时间, server至少down了两次, 而且都是长时间的 外加各种不确定性重启... 悲催的不是一点两点= =||`买的时候抱着随便玩玩的心理也就没仔细研究, 之后才看明白VPS是怎么一潭深水.这两天好好的查了下VPS的相关信息, 留下这么几个性价比高, 又比较靠谱的ISP:VPSYOU, YardVPS, Ramhost, QuickWeb VPSYOU价格中等, OpenVZ 256m的版本$4/m, CPU是745x2, 硬盘20G. YardVPS的OpenVZ口碑不太好, 但他的Xen据说硬盘速度超一流, 512m 1.5T流量, $7.95/m. 不过很少有货, 我看到有一个但因为犹豫不决miss掉了. Ramhost是口碑最好的一个. 所有信息都只有夸没有贬, 只是一直没货, 而且256m要$8.99/m. (Ramhost每周末会补货, 要注意刷网页) QuickWeb在网站上post出来的plan的性价比不是很高, 最低的OpenVZ/Xen都要$9.95/m. 有个Chinese Promo还可以, Texas机房的256mOpenVZ要$5.5/m, 不过好像也是out of stock. 最后来介绍下我的最终选择:QuickWeb一开始并不在我的选择范围内, 甚至根本不知道这个ISP, 因为几个大的VPS博客都没有特别推荐过这个ISP. 后来在Neal的博客发现他在做QuickWeb的代购, 才发现这也是一家在美国蛮有实力的IPS. (之所以说有实力是因为他们在美国五个大的数据中心都有机房)最后入手的这个是$35.88/年的plan, 平摊下来一月只要$3, Neal主推的就是这个plan.他自己的blog就搭在这个plan的VPS上, 访问速度很好, 而且看底下评论的反响普遍不错, 经Google四处查证以后, 决定还是下手试试看. Paypal付款给Neal以后, 主机即时开通.规格:OpenVZ/SolusVMIntel(R) Xeon(R) CPU X3440 @ 2.53GHz, 单核256M/384M突发10G硬盘, 速度测试平均22M/s美国凤凰城机房10Mbit带宽(Phoenix/LA) 250G/m流量+$5可升级100Mbit+$10可升级1000Mbit到目前为止, 对这个主机还是很满意的, 速度和性能方面都很不错. LNMP只用了20分钟就装好了.有需求的朋友可以联系Neal代购, http://neal.im/webhosting/ Nginx二级域名自动或手动匹配子目录 http://blog.gregwym.info/nginx-er-ji-yu-ming-zi-dong-huo-shou-dong-pi-pei-zi-mu-lu.html 2011-03-31T00:23:51+08:00 说写就写.刚刚搞定了Nginx二级域名的自动rewrite, 只要把自动匹配的配置放在几个特殊server定义之前, 就不会相互影响, 还挺简单的.需要在nginx.conf里修改http里增加新的server部分先说说标准的二级域名rewrite怎么写:server { listen 80; server_name sub.domain.com; index index.html index.htm index.php; root /***/wwwroot/sub_domain; include other.conf; location ~ .*\.(php|php5)?$ { fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fcgi.conf; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } access_log off; } 基本上在server_name里写上地址, root里写上对应的目录就万事大吉了然后是自动匹配的部分, 区别只在server_name和root的解析上:server_name *.domain.com; set $subdomain "default"; if ( $host ~* (.*)\.(.*)\.(.*)) { set $subdomain $1; } root /***/wwwroot/$subdomain; 第一篇结束...哈哈注: 以上配置是以Lnmp一键安装包自动生成的配置文件为基础修改的 先折腾着` http://blog.gregwym.info/xian-zhe-teng-zhe.html 2011-03-30T05:37:09+08:00 眼馋VPS很久了...毕竟没资本弄dedicated server, 弄个VPS玩玩也算像个样子.这个VPS是hostrail.com的VPS 2 Power Units Server, 60G硬盘 400G带宽 384MB内存 0.8G CPU(写的是0,6, 实际是0.2x4) 1 IP 总体来说= =`还算ok吧. 毕竟配上coupon, 每3个月才$6.29, 而且这个价格还是终身的, 即使速度不太理想, 也不算大碍. 稳定性有待长期验证.后续请看 http://blog.gregwym.info/guo-duan-huan-vps-zhe-hui-shi-quickweb.html已经在Title上写了是学习笔记, 那必然主要用来记技术上的东西.越往后学越觉得脑子不够用, 很多以前折腾过的东西, 再碰到的时候明明知道以前解决过却想不起来/找不到解决的方法了. 所以能有这个地方收集平时学到的点滴, 总又一天会派上用场.(又因为找不到合适的笔记软件, 记录Code什么的, 用网页的形式最合适不过...)Intro就这样吧`做个Code Highlight的演示if(this.is.c++()){ return "this should be highlighted\n" }