每个公司的服务器运行的服务和管理的方式都不一样,在此简单总结一下前段时间迁移服务器所做的工作。
第一步 确定服务器运行的服务
切换到root权限,netstat -tunlp可查看所有进程。弄明白所有进程的作用,并确保迁移新服务器启动旧服务器的所有进程。注意有一些是服务器自身进程,如网络同步时间进程ntpd,在新的服务器上可能已切换为chronyd等等,请不要过于执着。
第二步 迁移nginx服务
进入/etc/nginx/conf.d/里面,下载所有的*conf 的nginx配置。确保每个conf配置的域名,在新服务器上能成功访问。
第三步 定时任务
查看当前所有定时任务: crontab -l
编辑定时任务:crontab -e
如果没安装:(centos 默认已安装)
yum install crontabs
systemctr start crond
编辑完后使用reload使任务生效: systemctr reload crond
因为我们是用docker搭建服务器,所以代码迁移,项目迁移都比较方便,直接docker-compose文件迁移,然后重新建image,container。
docker-compose pull 项目名
docker-compose up -d 项目名
docker-compose start 项目名
这里写一些常用的进程或备份
hub.docker.com 这里面有docker镜像
git的备份:
docker-compose 配置参考:
version: “3.3”
services:
gitlab-ce:
container_name: gitlab-ce
image: hub.docker.com寻找您要的镜像
ports:
- “9086:22”
- “9087:80”
volumes:
- ./gitlab-ce/data:/data
备份:
进入docker容器:docker exec -it gitlab-ce[容器名] bash
创建备份:gitlab-rake gitlab:backup:create
将备份移动到容器外面:注意这里的docker-compose配置的volumes是 /data文件夹软链接到外面,所以将备份移动到/data里面,mv /gitlab-ce/data/backups/备份名称 /data/
恢复备份:
进入docker容器:docker exec -it gitlab-ce[容器名] bash
恢复备份:
将上面备份的文件,mv到 /gitlab-ce/data/backups/里面,然后运行命令
gitlab-rake gitlab:backup:restore
修改git clone的地址配置,
/gitlab-ce/conf/gitlab.rb 配置修改 external_url ‘git.wyuyung.com(您的ngnix配置域名)’ 和 gitlab_rails[‘gitlab_shell_ssh_port’] = 9086(对应docker-compose文件的port)
external_url是您外部访问的域名链接,例如我搭建了服务器,并将域名git.wyuyung.com指向为我的git代码库UI管理域名127.0.0.1:9086.
安装文件分布式系统weed-fs
自行去github下载weed运行程序,可以不用源码。
启动服务 nohup ./weed master -port=9333 &
启动读文件服务 nohup ./weed volume -port=8080 -dir=./data -ip=img.wyuyung.com[您的文件域名,ngnix搭配proxy_pass http://127.0.0.1:8080;] -mserver=localhost:9333 &
nginx 的conf文件编写
这里举个最简单的例子:
一般不要改默认端口,不然您会发现搭建工程的时候,很多默认配置都要重新配置,大牛随意。
server {
listen 80; //http默认访问端口
listen 443 ssl; //https默认访问端口
server_name www.wyuyung.com; //域名
//[参考如何生成您的ssl证书](https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md#1-use-cloudflare-domain-api-to-automatically-issue-cert)
ssl_certificate /etc/nginx/ssl/wyuyung.com.cert; //您的ssl证书,
ssl_certificate_key /etc/nginx/ssl/wyuyung.com.key; //您的ssl证书,
location / { //这是入口,一般都在location /中配置前端项目入口。
index index.html index.htm index.php;
root /data/www/;
}
location ~ \.php$ { //这里是适配php的项目,有兴趣的自行去拓展阅读,默认直接copy使用就可以了。
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
*使用 location /yung/ { //这是入口,一般都在location /中配置前端项目入口。
index index.html index.htm index.php;
root /data/w/;
}
这种配置的要注意,这里的入口是/data/w/yung/index.html 而不是/data/w/index.html location匹配虽然匹配了location /yung/,但是/yung/依然有效。很多人认为www.wyuyung.com/yung/ 匹配 location /yung/ ,对应 root /data/w/; 实则不然。真正应该这么理解:www.wyuyung.com/yung/ 匹配 location /yung/,所以www.wyuyung.com对应的root地址是/data/w/。后面的yung需要再解释,而不是解释域名的时候就消耗掉了。
安装php支持环境
yum install php可能会安装很老的版本,建议使用:
yum install php70w php70w-devel php70w-cli php70w-common php70w-gd php70w-ldap php70w-mbstring php70w-mcrypt php70w-pdo php70w-mysql php70w-fpm
如果报错没找到源,那么请更新一下yum安装包:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
然后再运行
yum install php70w php70w-devel php70w-cli php70w-common php70w-gd php70w-ldap php70w-mbstring php70w-mcrypt php70w-pdo php70w-mysql php70w-fpm
域名nginx配置要加上:
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME d o c u m e n t r o o t document_root documentrootfastcgi_script_name;
include fastcgi_params;
}
备份禅道
第一步:备份禅道的sql ,例:
mysqldump -u root -p zentao > zentao.sql
第二步:到新服务器的mysql中,恢复sql。mysql -u root -p zentao < zentao.sql
这里可能会报错,因为您要先到mysql中创建一个空的zentao数据库,然后再将旧数据导入进新建的数据库中。例外如果您不想zentao使用root用户登录,可以新建一个sql用户,然后将zentao数据库授权给该用户。
create database zentao;
CREATE USER ‘zentao’@’%’ IDENTIFIED BY ‘用户密码’;
GRANT ALL ON zentao[数据库名].* TO ‘zentao’【用户名】@’%’;
%是允许外部访问,localhost是只允许内部访问
第三步:下载一个同版本的zentaopms,修改zentaopms/config/my.php配置sql的用户名、密码、数据库名