A-A+

Centos6.x 离线安装V2ray 方法 (解决 env: /etc/init.d/v2ray: No such file or directory)

2020年01月07日 11:41 学习笔记 暂无评论 阅读 234 views 次

【注意:此文章为博主原创文章!转载需注意,请带原文链接,至少也要是txt格式!】

手动安装步骤如下:

1] 下载并解压V2Ray程序

首先下载V2Ray的发行版程序,解压压缩包并查看目录中的文件。

 # wget https://github.com/v2ray/v2ray-core/releases/download/v3.24/v2ray-linux-64.zip
 # unzip v2ray-linux-64.zip
 # cd v2ray-v3.24-linux-64
 # ll -a

V2Ray的程序目录文件详情如图.1所示,其中v2rayv2ctl是V2Ray的主程序和控制程序;geoip.datgeosite.dat是程序所需要数据文件;systemdsystemv两个目录中包含了用于生成服务的文件。为了可以使用预先设置好的服务文件,需要把文件移动至正确位置。

2] 将文件移动至正确位置

根据V2Ray的安装脚本,会自动在如下目录生成如下文件:

  • /usr/bin/v2ray/v2ray
  • /usr/bin/v2ray/v2ctl
  • /etc/v2ray/config.json
  • /usr/bin/v2ray/geoip.dat
  • /usr/bin/v2ray/geosite.dat

于是现在要做的就是将文件移动至相应位置:

 # mkdir /usr/bin/v2ray
 # cp v2ray /usr/bin/v2ray/v2ray
 # cp v2ctl /usr/bin/v2ray/v2ctl
 # cp geoip.dat /usr/bin/v2ray/geoip.dat
 # cp geosite.dat /usr/bin/v2ray/geosite.dat
 # mkdir /etc/v2ray/
 # cp vpoint_vmess_freedom.json /etc/v2ray/config.json

最后一条命令是将当前的vpoint_vmess_freedom.json配置文件复制到指定位置,并修改其为config.json。由于V2Ray是不区分服务端和客户端的,同一个程序可以配置成服务器也可以配置成客户端,程序目录中的vpoint_vmess_freedom.json一般用于配置服务器,而vpoint_socks_vmess.json用于配置成为客户端。
如果需要看如何配置,请移步:v2ray 简易配置示例 (服务端+客户端)

3] 生成V2Ray服务

为了使用方便,一般将V2Ray配置成 service 服务,还记得程序目录中两个文件夹么,里面保存了systemd和systemv两种系统服务的服务文件,
但是注意,Centos6就需要自己手动创建服务。首先把下面的代码保存为名字是v2ray无后缀的文件:

#!/bin/sh
#
# v2ray        Startup script for v2ray
#
# chkconfig: - 24 76
# processname: v2ray
# pidfile: /var/run/v2ray.pid
# description: V2Ray proxy services
#

### BEGIN INIT INFO
# Provides:          v2ray
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: V2Ray proxy services
# Description:       V2Ray proxy services
### END INIT INFO

DESC=v2ray
NAME=v2ray
DAEMON=/usr/bin/v2ray/v2ray
PIDFILE=/var/run/$NAME.pid
LOCKFILE=/var/lock/subsys/$NAME
SCRIPTNAME=/etc/init.d/$NAME
RETVAL=0

DAEMON_OPTS="-config /etc/v2ray/config.json"

# Exit if the package is not installed
[ -x $DAEMON ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Source function library.
. /etc/rc.d/init.d/functions

start() {
  local pids=$(pgrep -f $DAEMON)
  if [ -n "$pids" ]; then
    echo "$NAME (pid $pids) is already running"
    RETVAL=0
    return 0
  fi

  echo -n $"Starting $NAME: "

  mkdir -p /var/log/v2ray
  $DAEMON $DAEMON_OPTS 1>/dev/null 2>&1 &
  echo $! > $PIDFILE

  sleep 2
  pgrep -f $DAEMON >/dev/null 2>&1
  RETVAL=$?
  if [ $RETVAL -eq 0 ]; then
    success; echo
    touch $LOCKFILE
  else
    failure; echo
  fi
  return $RETVAL
}

stop() {
  local pids=$(pgrep -f $DAEMON)
  if [ -z "$pids" ]; then
    echo "$NAME is not running"
    RETVAL=0
    return 0
  fi

  echo -n $"Stopping $NAME: "
  killproc -p ${PIDFILE} ${NAME}
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && rm -f ${LOCKFILE} ${PIDFILE}
}

reload() {
  echo -n $"Reloading $NAME: "
  killproc -p ${PIDFILE} ${NAME} -HUP
  RETVAL=$?
  echo
}

rh_status() {
  status -p ${PIDFILE} ${DAEMON}
}

# See how we were called.
case "$1" in
  start)
    rh_status >/dev/null 2>&1 && exit 0
    start
    ;;
  stop)
    stop
    ;;
  status)
    rh_status
    RETVAL=$?
    ;;
  restart)
    stop
    start
    ;;
  reload)
    reload
  ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|status|reload|restart}" >&2
    RETVAL=2
  ;;
esac
exit $RETVAL

保存文件的时候很容易出现问题,我就遇到了,比较坑!!!下面有解决方案!!!
然后把这个文件保存到 /etc/init.d/ 目录下,完整的就是/etc/init.d/v2ray
然后执行下面的命令:

sudo chmod +x /etc/init.d/v2ray
sudo chkconfig v2ray on
sudo service v2ray start
sudo mkdir /var/log/v2ray/

现在V2Ray程序就已经正常运行并且已经成功添加至系统服务,之后就可以使用以下命令将其设置为系统自动启动:

service v2ray start

以上就是CentOS 6系统手动安装V2Ray的全部过程。希望对各位想搭梯子的朋友有所帮助。

------------【遇到以下报错解决方法】-----------
如果遇到下面的报错

env: /etc/init.d/v2ray: No such file or directory
/etc/init.d/v2ray: line 29: /lib/init/vars.sh: No such file or directory
-bash: /etc/init.d/  No such file or directory

那么就是你上面v2ray文件保存有问题,注意,重点来了!!!!!!
你可能是在Windows下保存的v2ray的文件,这样会导致文件每个换行的结尾都有\r\n 或者结尾携带了ASCII 10,13 再或者每行结尾携带了 0x0D 0x0A
所以你需要把\r\n替换为\n, 或者把上面对应的替换为ASCII 10 再或者替换为 0x0A
然后再保存,再上传到/etc/init.d/ 目录下 然后再执行命令即可解决问题!!!!

文字参考:https://www.rultr.com/tutorials/proxy/2699.html
https://install.direct/go.sh
https://www.linuxquestions.org/questions/ubuntu-63/error-env-etc-init-d-snortd-no-such-file-or-directory-trying-to-start-service-922358/
https://github.com/v2ray/v2ray-core/issues/101#issuecomment-214670792%5D

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言