yum安装比较简单快捷, 但默认配置的安全和性能方面不如LNMP一键安装包. 推荐生产环境用一键安装包
如果你在国内的话, 先替换CentOS-Base.repo
mv /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, mysqld
service 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.conf
php-fpm配置文件在/etc/php-fpm.conf
php配置文件/etc/php.ini
mysql配置文件/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/
/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 该组的所有用户
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用户组
]]>基本过程和网上其他的教程都差不多, 主要在于加密和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
Note: 日志文件在/var/log/messages, 如果log中出现, "This system lacks kernel support for PPP. " 字样, 请发ticket让ISP给你打开PPP支持, 之后就应该可以正常连接了.
原来的Nginx设定里, 子域名会自动对应子目录. 如果碰巧有人输入了我为新域名设定的目录名, 就会造成域名不统一的情况出现...所以研究了下301定向, 发现Nginx的设置真的好简单.
在nginx.conf里的自动对应规则之前, 加入下边的内容
server {
server_name www.xxxx.com;
rewrite ^(.*) http://xxxx.com$1 permanent;
}
继续去整理240的内容了...
]]>这个脚本来自小夜博客, 经我略加修改了一下.
下载: 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
]]>高中的时候就折腾过WordPress, 借朋友的空间搭了个小博`写了两句就没兴致继续下去了. 大部分时间都花在了研究各种插件上边. 但不知道为什么, WordPress一直就没有让我有强烈的归属感. 虽然它插件很多, 主题很多, 能高度定制化...可都少了点什么.
啊`是他太乱了...
添加了各种杂七杂八的插件以后, 单侧栏恐怕都塞不下了, 再配上本就没什么几篇的博文列表, 整个页面显得臃肿杂乱`主次颠倒, 自然也就没有了继续下去的动力.
虽然这算是我自己的客观因素...但WordPress越长越肥, 功能繁多却不实用的现状是毋庸置疑的.
不记得到底是先注意到Typecho, 还是先动了玩VPS的主意, 反正这俩分不开. 在某博看到Typecho的介绍和他简洁的风格时就决定了我肯定要抛弃WordPress了.
他实在太简单了...
按Typecho官方说法, 一个完全重写的全新后台系统正在开发中, 实在是非常期待.
有想法要好好学习下Typecho的源码, 不过还是先考完试再说吧.
附个在别处看到的相关短文, 深以为然:
时间差不多了...睡觉睡觉`
]]>刚刚搞定了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一键安装包自动生成的配置文件为基础修改的
]]>