Archive

Posts Tagged ‘Linux’

CentOS6.x/7.x配置Nginx系统服务

September 20th, 2017 No comments

使用源代码编译方式安装Nginx的时候,肯定不如用用yum方式安装来得便捷,CentOS的系统服务需要自行配置。
自行配置Nginx为CentOS的系统服务时,出于进程管理考虑需要首先配置pid,出于安全考虑建议修改nginx的运行用户。

创建nginx.pid文件用于nginx主进程

1
touch /usr/local/nginx/logs/nginx.pid

修改conf/nginx.conf,设置pid和user

1
2
user     nobody;
pid       logs/nginx.pid;

CentOS6.x配置nginx系统服务
创建一个/etc/init.d/nginx文件

1
2
touch /etc/init.d/nginx
chmod 755 /etc/init.d/nginx

/etc/init.d/nginx文件中写入以下内容,
源文件取自yum方式安装后的文件,不过需要自己修改一下nginx的指向位置
nginx=”/usr/local/nginx/sbin/nginx”
NGINX_CONF_FILE=”/usr/local/nginx/conf/nginx.conf”
Read more…

Categories: 系统管理 Tags: , ,

Tomcat进程无法正常stop问题

September 20th, 2017 No comments

CentOS使用Catalina.sh 来管理Tomcat运行时,Catalina.sh run 之后产生的tomcat进程会无法使用 Catalina.sh stop -force关闭。如果Catalina.sh的默认内容来配置tomcat服务,/etc/init.d/tomcat stop 也将会失效

查看Catalina.sh文件后找到以下代码,原来需要stop的话,需要CATALINA_PID文件配合。
Catalina.sh 468行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  if [ ! -z "$CATALINA_PID" ]; then
    if [ -f "$CATALINA_PID" ]; then
      if [ -s "$CATALINA_PID" ]; then
        kill -0 `cat "$CATALINA_PID"` >/dev/null 2>&1
        if [ $? -gt 0 ]; then
          echo "PID file found but no matching process was found. Stop aborted."
          exit 1
        fi
      else
        echo "PID file is empty and has been ignored."
      fi
    else
      echo "\$CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted."
      exit 1
    fi
  fi

Read more…

CentOS7配置NFS文件共享

September 18th, 2017 No comments

NFS(Network File System)即网络文件系统,是Linux/Unix支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

测试环境 CentOS7.3

NFS服务端配置
1.安装nfs-utils和rpcbind

1
2
3
4
# yum update
yum -y update
# install nfs
yum -y install nfs-utils rpcbind

2.启用和打开NFS相关服务rpcbind,nfs-server,nfs-lock,nfs-idmap。 注意需要先启动rpcbind

1
2
3
4
5
6
7
8
9
10
11
#enable services
systemctl enable rpcbind
systemctl enable nfs-server
systemctl enable nfs-lock
systemctl enable nfs-idmap
 
# start nfs service
systemctl start rpcbind
systemctl start nfs-server
systemctl start nfs-lock
systemctl start nfs-idmap

Read more…

Categories: 系统管理, 零敲碎打 Tags: ,

[Linux]Java获取本机网卡IP地址

December 1st, 2016 No comments

应用程序服务器由Windows环境整体迁移到Linux环境,出现了不能获取本机IP地址的问题
原因是下面一段JAVA代码在Linux下直接返回127.0.0.1。Windows下有效的InetAddress貌似在linux下不起作用。

1
2
3
4
5
6
7
8
9
10
11
12
public static String getLocalIP() {
    String ip = "";
        try {
            InetAddress address = InetAddress.getLocalHost();
            if(address != null) {
                ip = address.getHostAddress();
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    return ip;
}

原因在于Java使用的JNI代码调用的是Linux中的gethostname内核函数
这个函数在Linux主机没有绑定IP的情况下根据Host文件定义返回默认的localhost或者127.0.0.1。
Read more…

Categories: 系统管理, 零敲碎打 Tags: , ,

w_char*和char *转换宽窄字符

June 29th, 2016 No comments

w_char*和char*在windows编程过程中进行转换是经常需要的,通常由互联网我们取到都是utf-8编码,到windows应用程序里面却需要用unicode编码。
一开始用stdlib.h 下wcstombs_s和mbstowcs_s的代码实现,发现总是转换失败和出错。
char 转 WCHAR 、wchar_t、LPWSTR ,窄字符转宽字符,C++代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//+------------------------------------------------------------------+
//| char to WCHAR 、wchar_t、LPWSTR etc                              |
//+------------------------------------------------------------------+
static char* WStr2CStr(const wchar_t* WStr)
  {
             // 长度设置
              size_t len = wcslen(WStr) + 1;
              size_t converted = 0;
              // 准备转换的对象
              char *CStr;
              CStr=(char*)malloc(len*sizeof(char));
              // 转换
              wcstombs_s(&converted, CStr, len, WStr, _TRUNCATE);
              // 返回
              return CStr;
  }

Read more…

Categories: 语言编程, 零敲碎打 Tags: , ,

[Linux]使用SSH-KEY方式登录SSH

January 18th, 2016 No comments

管理Linux主机多了之后,管理大量的登录密码是一件很麻烦的事情,使用SSH-KEY方式登录服务器可以很好的解决问题。
以下是使用SSH-KEY方式实现客户端免密码登录SSH的方法。一套SSH-KEY可以等遍所有的服务器。

1.使用ssh-keygen在本地创建登录远程SSH服务器使用的公钥和私钥

1
2
3
ssh-keygen -t [rsa|dsa] -C "comments"
# -t 可选择RSA 和 DSA 两种密钥
# -C 可选注释

一路enter之后,会在~/.ssh目录下创建两个文件
id_dsa #私钥,妥善保存好。
id_dsa.pub #公钥

2.将公钥复制到服务器上对应用户的 ~/.ssh/目录下。

3.在服务器用户的 ~/.ssh/目录下执行

1
2
3
cat id_dsa.pub >>authorized_keys
#  首次使用的时候
chmod 600 authorized_keys

需要注意的是出于安全考虑,authorized_keys必须是600权限
Read more…

Linux文件批量转编码iconv命令

January 12th, 2016 No comments

Linux下转换编码可以直接使用iconv命令搞定。支持单个文件和批量处理。
iconv命令可以将一种已知的字符集文件转换成另一种已知的字符集文件。它的作用是在多种国际编码格式之间进行文本内码的转换。

单个文件处理的shell命令

1
iconv -t utf-8 -f gb2312 source > target

# -f 源编码
# -t 目标编码
# -l :列出已知的编码字符集合
# -o file :指定输出文件
# -c :忽略输出的非法字符
# -s :禁止警告信息,但不是错误信息
Read more…

Categories: 零敲碎打 Tags: ,