vps迁移记录和linux命令

因为之前的乐谷云集找不到老巢了,官网都挂了,网上说是跑路了,虽然之前有人联系过我说是有他们公司接管,但是等出现问题联系的时候,却是找不到人。所以决定更换vps。简单记录下用到的这次vps迁移用到的命令。

新的vps是用的centos 32。

登陆后更换密码

连上ssh之后,第一件事情就是更换root密码,用到的命令是passwd

连续两次输入新的密码就可以。

添加新用户www

passwd www 继续数据www的密码。就可以添加

安装软件包命令Yum

ubuntu的包管理软件是app-get,centos的包管理软件是yum,因为我的vps是centos,所以使用yum

# 安装
yum install xxx
# 删除
yum remove httpd

因为我使用的是lnmp,所以对于默认安装的apache可以删除,使用yum remove httpd

使用screen来管理对话

经常就是遇见网络连接不好,ssh中断,那么执行的程序就不知道会不会成功,所以有了screen。如果使用screen --help没有命令,那么需要安装下:

yum install screen

screen常用命令

# 创建screen对话
screen -S lnmp
# 查看现在运行的screen
screen -ls
# 读取某个screen
screen -r lnmp
# 退出screen,在当前screen中执行exit
exit

安装lnmp

CentOS系统下执行:wget -c http://soft.vpser.net/lnmp/lnmp1.0-full.tar.gz && tar zxvf lnmp1.0-full.tar.gz && cd lnmp1.0-full && ./centos.sh
Debian系统下执行:wget -c http://soft.vpser.net/lnmp/lnmp1.0-full.tar.gz && tar zxvf lnmp1.0-full.tar.gz && cd lnmp1.0-full && ./debian.sh
Ubuntu系统下执行:wget -c http://soft.vpser.net/lnmp/lnmp1.0-full.tar.gz && tar zxvf lnmp1.0-full.tar.gz && cd lnmp1.0-full && ./ubuntu.sh

中间会要你选择php版本,mysql版本,mysql root密码

lnmp状态管理命令

  • LNMP状态管理: /root/lnmp {start|stop|reload|restart|kill|status}
  • Nginx状态管理:/etc/init.d/nginx {start|stop|reload|restart}
  • MySQL状态管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
  • Memcached状态管理:/etc/init.d/memcached {start|stop|restart}
  • PHP-FPM状态管理:/etc/init.d/php-fpm {start|stop|quit|restart|reload|logrotate}
  • PureFTPd状态管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
  • ProFTPd状态管理:/etc/init.d/proftpd {start|stop|restart|reload}

如重启LNMP,输入命令:/root/lnmp restart 即可,单独重启mysql:/etc/init.d/mysql restart

大约要经过一个小时(看自己的vps的网速了)

LNMP相关软件安装目录

Nginx 目录: /usr/local/nginx/
MySQL 目录 : /usr/local/mysql/
MySQL数据库所在目录:/usr/local/mysql/var/
PHP目录 : /usr/local/php/
PHPMyAdmin目录 : 0.9版为/home/wwwroot/phpmyadmin/ 1.0版为 /home/wwwroot/default/phpmyadmin/ 强烈建议将此目录重命名为其不容易猜到的名字。phpmyadmin可自己从官网下载新版替换。
默认网站目录 : 0.9版为 /home/wwwroot/ 1.0版为 /home/wwwroot/default/
Nginx日志目录:/home/wwwlogs/
/root/vhost.sh添加的虚拟主机配置文件所在目录:/usr/local/nginx/conf/vhost/
PureFtpd 目录:/usr/local/pureftpd/
PureFtpd web管理目录: 0.9版为/home/wwwroot/default/ftp/ 1.0版为 /home/wwwroot/default/ftp/
Proftpd 目录:/usr/local/proftpd/

LNMP相关配置文件位置

Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
/root/vhost.sh添加的虚拟主机配置文件:/usr/local/nginx/conf/vhost/域名.conf
MySQL配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
php-fpm配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd配置文件:/usr/local/pureftpd/pure-ftpd.conf
PureFtpd MySQL配置文件:/usr/local/pureftpd/pureftpd-mysql.conf
Proftpd配置文件:/usr/local/proftpd/etc/proftpd.conf
Proftpd 用户配置文件:/usr/local/proftpd/etc/vhost/用户名.conf

LNMPA相关目录文件位置

Apache目录:/usr/local/apache/
Apache配置文件:/usr/local/apache/conf/httpd.conf
Apache虚拟主机配置文件目录:/usr/local/apache/conf/vhost/

安装nodejs

作为前端,当然要安装nodejs啦,可是centos不能像ubuntu那么方便使用apt-get,而需要自己编译,后来在nodejs官网看到了centos也可以使用包管理:https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

依次在命令行中执行:

yum repolist
curl -O http://download-i2.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
sudo rpm -ivh epel-release-6-8.noarch.rpm
sudo yum install npm --enablerepo=epel

经过上面折腾,一般就可以了,使用node -vnpm -v就可以了。

这时候可以试下安装nodeppt是否成功:npm install -g nodeppt

备份之前的vps数据

打包之前的web程序,使用zip。

# 打包
zip -r www.zip www
# 解压
unzip www.zip

备份数据库

mysqldump -u root -p --default-character-set=utf8 --all-databases > all1207.sql

为了传输方便,可以使用zip将all1207.sql打包

vps之间传输数据scp

例如在B上要将A在/home/root/all.zip传输到/home

scp root@A:/home/root/all.zip /home

如果需要传输的是文件夹,那么需要添加-r

scp -r root@A:/home/root/ /home

导入数据库

进入mysql:mysql -u root -p, 导入数据:

mysql>source /home/root/all.sql

lnmp优化

lnmp虽然已经优化的不错了,但是根据自己的vps特点,比如多核、内存大小,可以调整下自己的lnmp配置。

安装eAccelerator

eAccelerator是我用的php加速器,lnmp中安装还是很简单的,进入lnmp的下载包,然后执行./eaccelerator.sh,根据提示选择对应的eAccelerator的版本就好,我因为是php5.3所以选择了new

配置eAccelerator

安装后可以下载eAccelerator的管理php,首先打开php,修改下登录用户名和密码,然后放在自己的网络根目录就可以访问了。默认设置缓存是1M,感觉有点小,可以参考下《linux安装PHP加速器eAccelerator 》修改下配置。

安装memcached

memcached是内存缓存,可以将查询出来的mysql之类的数据,存入memcached来减少IO操作。在lnmp中安装也是很简单的,同样是进入lnmp的包,执行./memcached.sh,就可以了

启动memcached

/usr/local/memcached/bin/memcached -d -p 11214 -u root -m 10 -c 1024 -t 8 -P /tmp/memcached.pid

关闭mysql日志

mysql的日志功能,一般没啥用,之前我的vps曾经因为mysql日志太多导致硬盘报警,所以这次我就直接关闭了:

删除日志

执行:/usr/local/mysql/bin/mysql -u root -p
输入密码登录后再执行:reset master;

修改/etc/my.cnf 文件,找到

log-bin=mysql-bin
binlog_format=mixed

开机自启动

修改/etc/rc.d/rc.local。需要用vi执行:vi /etc/rc.d/rc.local,比如要将memcached添加到自启动任务重,需要给rc.local 添加下面的命令:

/usr/local/memcached/bin/memcached -d -p 11214 -u root -m 10 -c 1024 -t 8 -P /tmp/memcached.pid
/usr/local/memcached/bin/memcached -d -p 11211 -u root -m 14 -c 1024 -t 8 -P /tmp/memcached-main.pid

crontab定时任务

在命令行中执行crontab -e 进入定时任务页面,跟vi使用一样,编辑好了:wq就可以了。通过crontab 可以做日志切割,负载过高自动重启。

切割日志

#!/bin/bash
# This script run at 00:00

# The Nginx logs path
logs_path="/xxx/logs/"

mkdir -p ${logs_path}$(date -d "yesterday" +"%Y%m%d")/


mv /home/wwwlogs/* ${logs_path}$(date -d "yesterday" +"%Y%m%d")/
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

添加crontab,每天凌晨0点执行:00 00 * * * /bin/sh /xxx/bin/cut_nginx_logs.sh

负载过高自动重启负载

#!/bin/bash
# script to check server for extremely high load and restart Apache if the condition is matched
check=`cat /proc/loadavg | sed 's/./ /' | awk '{print $1}'`
check=$( printf "%.0f" $check )
# define max load avarage when script is triggered
max_load=15
# log file
high_load_log='/root/lnmp_high_load_restart.log'

# location to Lnmp init script
lnmp='/root/lnmp'

if [ $check -gt "$max_load" ]; then
    $lnmp stop
    sleep 5
    $lnmp restart
    echo "$(date) : Lnmp Restart due to excessive load | $check |" >> $high_load_log
fi

添加crontab,没十分钟检测一次:*/10 * * * * /bin/sh /root/lnmp_auto_restart.sh

增强php安全

我使用了phpsecinfo来查看php的配置,具体可以查看下http://phpsec.org/projects/phpsecinfo/。根据自己情况修改php.ini 然后重启php-fpm即可。

软连接ln

ln -s /home/www/webroot /webroot

nginx reload

当配置了新的nginx 虚拟主机,或者修改了nginx配置文件,可以通过下面的命令reload配置,而不需要重启nginx造成网站中断:

/usr/local/nginx/sbin/nginx -s reload