部署服务器需要用到的命令,记录一下,有需要的也可以看看:
1、一个新的服务器需要先检查一下服务器的内存、磁盘、核数、网络这些的(我暂时用到的是这几个)
top: 查看进程,在此基础上再按1即可查看:linux核数 + 内存
查看磁盘: df -lh 查看目录占用大小:du -lh
至于网络:ping tech.meituan.com,要是不能访问外网就傻了(排除内网环境的情况)
ifconfig:查看当前ip地址 还有就是,有些挂载的磁盘在 /dev/vdb 目录,需要格式化挂载到/data目录下,可参考上一篇博文: http://study121007.iteye.com/blog/2297693 , 此处可能还会用到:ln -s 源目录 目标目录。为 /dev/vdb 创建一个软连接,说白了就是创建一个快捷 方式,当在源目录下做修改时,则目标目录下也会相应的被修改。
2、安装JDK(1.8)
将jdk压缩包存放到 /usr/local/目录下解压,有时候还需要修改jdk目录下的文件权限:
chmod -R 777 start*:批量修改以start开头的文件权限 ( 因为不修改权限,系统仍会使用默认的jdk版本1.7 )
再配置一下环境变量( /etc/profile )
export JAVA_HOME=/usr/local/jdk export PATH=$JAVA_HOME/bin:$PATH 退出保存好之后执行:source /etc/profile 编译一下文件让修改生效
3、文件解压缩
tar压缩:tar -zcvf file.tar.zip file 解压tar:tar -zxvf file.tar.zip 解压zip:unzip xxx.zip 解压war:jar -xvf xxx.war
4、安装Nginx(后续再详细介绍Nginx)
可访问外网时就在线安装的,yum install nginx
在CentOS6上,有的可能直接yum还不行,需要下载一下资源:
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/ nginx-release-centos-6-0.el6.ngx.noarch.rpm
安装好之后,进如 /etc/nginx/conf.d/default.conf 修改一下配置信息(此处简单展示一下):
server { listen 80; server_name localhost; location /[此处为应用名称,若不写则为当前域名的根目录] { proxy_pass http://127.0.0.1:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } ....... } (若应用名称为search,则当访问www.xxx.com/search的时候nginx 80端口实际是转发到 127.0.0.1:8080/search应用上,也就是说最终跳转的路径为 proxy_pass + 应用名称)
手动安装的可自己配置环境变量:(yum在线安装的目录为:/etc/nginx)
export NGINX_HOME=/usr/local/nginx (这是手动安装时的目录) export PATH=$NGINX_HOME/sbin:$PATH ulimit -HSn 65535 顺便配置一下可供打开的最大文件数 (顺便多说一句之前有碰到过的一个问题,前端做网站的公司没做缓存,网站访问量又很大,大量的调用我 们的接口,导致一直抛”打开的文件数过多“错误,日志也一直记载,导致几天下来日志文件夹大小达到49G 占用了太多的空间,整个应用服务就死掉了。之前有考虑的解决方案:使用ehcache来做缓存 + nginx的 缓存,但效果不是很好还是有死机的情况,后来就没用了。之后解决方案是:让他们加上缓存)
service nginx configtest:检查nginx是否配置成功,新的服务器一般都不支持service命令了,而是systemctl
service nginx restart:重启nginx(这是支持service命令的服务器),至于不支持的可使用如下:
启动:nginx
重启:nginx -s reload
其他详细命令使用nginx -h查看帮助里面有更多的介绍,如下
手动安装nginx时有时候会缺少编译环境: yum install gcc gcc-c++ ncurses-devel perl
5、安装Jetty,有的也安装Tomcat,方法都差不多
下载好Jetty安装包,上传到服务器自己的指定的目录下(如:/opt下),解压,进入bin目录,
执行:./jetty.sh start 启动 ./jetty.sh stop 停止
6、当不同应用或同一应用部署在多台机器上时还需要开放端口
/etc/sysconfig/iptables (开放端口:如下的22端口) -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT (多台机器时,若从机器A访问机器B中的应用,因为走的nginx代理,所以不要忘了开放机器B的80端口)
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -dport 6000:6500 -j ACCEPT (开放一段端口) service iptables restart 重启防火墙
手动安装iptables: yum install iptables-services
修改配置:vi /etc/sysconfig/iptables
重启:systemctl restart iptables.service
设置开机自动启动:systemctl enable iptables.service
7、应用当然少不了数据库,此处使用的是mongodb
我就不详细介绍了,参考http://blog.csdn.net/yuwenruli/article/details/8529192
以及数据库的备份和还原,参考http://y-zjx.iteye.com/blog/1310380
需要注意的是,必须创建logs目录,没建这个目录,会导致数据库启动的时候不成功。
一个新的mongo数据库,为其设置管理员:
/bin/mongo localhost:8888 use admin db.createUser({user:'xxxxx',pwd:'yyyyy-=',roles:['root']}) 使用用户名和密码登陆Mongo /bin/mongo -u xxxxx -p yyyyy --authenticationDatabase admin localhost:8888
8、查看日志文件
tail -f -n200 /log/2016-05-12log.txt 查看当前日志的前200行
9、进程相关
查看端口:netstat -nltp 查看PID:ps -ef|grep jetty 杀死进程:kill 218882
10、时间问题 <http://codingstandards.iteye.com/blog/1157513>
date -R 查看时间
11、Linux java性能监视
> jconsole (打开控制面板,选择相应的进程连接进去即可,类似于windows中的任务管理器) 有的需要自己安装此命令。 另查看系统版本:cat /etc/issue
12、SCP
(1)从远处复制文件到本地目录。若复制文件夹,参数需要设置-r scp [参数] [email protected]:/opt/app/jettys/robot/webapps/ss.tar.gz ./ (2)上传本地文件到远程机器指定目录。同样若复制文件夹,参数需要设置-r scp [参数] ./ss.tar.gz [email protected]:/opt/app/jettys/robot/webapps
13、linux中根据PID来查找文件路径
lsof -p PID 即列出指定进程号所打开的文件。 (1)先查看进程信息:top (2)可以直接在docker父容器中可以使用sudo lsof -p PID 来查看该进程所对应的文件信息。 也可登录到子容器中,cd /proc/PID,进入到该PID进程文件夹中,ls -ail来查看对应信息。 (另外,docker中也可通过docker top Name/ID来查看该容器中的进程信息)
14、查找文件
which 查看可执行文件的位置。 whereis 查看文件的位置。 locate 配合数据库查看文件位置。 find 实际搜寻硬盘查询文件名称。 格式: which 可执行文件名称 ,如 which java
(附:阿里云开源镜像:http://mirrors.aliyun.com/)
(会一直更新此文档)
更多linux可阅读这位大神的系列文章:http://www.cnblogs.com/peida/tag/%E6%AF%8F%E6%97%A5%E4%B8%80linux%E5%91%BD%E4%BB%A4/