不论是工作还是学习,都需要到大世界去看看。本教程做为学习研究软件部署用,切勿做任何违反国家法律法规的事情哦,
关于梯子这个问题,我这里用的香港的VPS,cent os7系统。安装的ss软件
小水管不开放注册。 演示地址:ss.zxyfan.com 临时服务器到期就不能用了。
讲真的,配置这个花了好几天时间,看网上的教程,遇到很多问题,都和预期的不一样。在反反复复重装了很多次VPS系统之后终于成功了。所以下没耐心,不喜欢折腾的不建议继续看下去了。
我这里使用的新开的香港CN2线路VPS服务器,所以不存在保存资料啥的,接下来看过程吧:
服务器安装完系统后根据自己情况以及WEB环境安装一些必要的软件
1.1更换源+安装bbr+
BBR+加速一键安装脚本github主页:这个看个人吧,用了可提升服务器速度。
https://github.com/ylx2016/Linux-NetSpeed/releases
卸载内核版本,同原作者版本,删除安装内核以外的所有内核
wget -N --no-check-certificate "https://github.000060000.xyz/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
或
wget -N "https://github.000060000.xyz/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
根据需要选择安装 ps:阿里云服务器的话需要先卸载安骑士。
1.2安装epel源
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
1.3安装scl源
yum install centos-release-scl scl-utils-build
1.4 linux软件安装源(网易镜像)我这里手痒换了源,没特殊需求可以跳过这步
cd /etc/yum.repos.d
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum启用yum makecache
yum update
1.5升级GCC
依赖包安装,曾经多次失败都是出在各种依赖组件没有配置恰当引起的,所以我把这些完完整整的记录下来了。
sudo yum install gettext gcc autoconf libtool automake make asciidoc xmlto c-ares-devel libev-devel
报错升级GCC到9.3,由于centos默认安装的版本比较低,在编译安装redis的时候就出错,所有必要升级。
gcc -v
查看可在centos上的GCC版本
yum list all --enablerepo='centos-sclo-rh' |grep gcc
升级到gcc 9.3:
#安装scl,若前面安装则跳过
yum -y install centos-release-scl
#安装gcc 9
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
#切换使用gcc 9.3:
scl enable devtoolset-9 bash
#永久切换到gcc 9
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
需要注意的是scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。 如果要长期使用gcc 9.3的话:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
这样退出shell重新打开就是新版的gcc了 以下其他版本同理,修改devtoolset版本号即可。
安装宝塔面板
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
之所以安装宝塔,因为他真的很方便,可以免去很多手动配置步骤,同时服务器建站也很好,除非土豪们专门拿个服务器来玩,其他常用软件可以安装宝塔通过宝塔集成安装redis,pm2,nodejs,supervisor可视操作。
如果不安装宝塔或者不使用宝塔面板来安装redis,pm2,nodejs,supervisor请看手动安装步骤:
2.1、nodejs安装12
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
sudo yum install -y nodejs
#显示版本号则完成。
node -v
2.2 、安装pm2管理进程
npm install pm2@latest -g
#查看版本
pm2 -v
2.3、安装redis6 注意先要升级到gcc 5以上否则会编译报错:
wget http://download.redis.io/releases/redis-6.0.6.tar.gz
tar xzf redis-6.0.6.tar.gz
#tar xzf redis-6.0.6.tar.gz -C redis/ 解压到redis目录
cd redis-6.0.6
make && make install
#启动
src/redis-server
#创建redis存储目录mkdir -p /usr/local/redis
在redis-6.0.6目录 注意所在目录ls查看文件
cp src/redis-server /usr/local/redis/
cp src/redis-cli /usr/local/redis/
cp redis.conf /usr/local/redis/
#编辑配置文件
cd /usr/local/redis/
vim redis.conf
将redis.conf 中 daemonize 设置为yes
创建并编辑开机启动服务
vim /etc/systemd/system/redis-server.service
内容
[Unit]
Description=Redis Server Manager
After=syslog.target
After=network.target
[Service]
Type=simple
User=redis
Group=redis
PIDFile=/var/run/redis_6379.pid
ExecStart=/usr/local/redis/redis-server /usr/local/redis/redis.conf
ExecStop=/usr/local/redis/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target
保存退出,执行 sudo systemctl daemon-reload
启动服务 sudo systemctl start redis.service
设置开机自启动 sudo systemctl enable redis.service
查看是否成功 ps -ef | grep redis
创建redis命令软连接
ln -s /usr/local/redis/redis-cli /usr/bin/redis
或者ln -s /usr/local/redis/redis-cli /usr/bin/redis-cli
2.4 、安装libsodium-stable (gcc版本低也会报错)之前因为没升级GCC坑了很久。
#安装libsodium 1.0.18稳定版
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable.tar.gz
tar -zxf libsodium-1.0.18-stable.tar.gz
cd libsodium-stable
#编译安装
./configure --prefix=/usr
make check 可以略过
make && make check
sudo make install
sudo ldconfig
2.5、安装MbedTLS
如果安装新版的MbedTLS一定要升级python3,在python2下也会出问题,开始安装python3:若服务器已经安装可跳过
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install -y libffi-devel zlib1g-dev
yum install zlib* -y
下载python3
wget wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz
tar -xvJf Python-3.8.5.tar.xz
创建编译安装目录
mkdir /usr/local/python3
第一个指定安装的路径,不指定的话,安装过程中可能软件所需要的文件复制到其他不同目录,删除软件很不方便,复制软件也不方便.
cd Python-3.8.5
./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl
第二个可以提高python10%-20%代码运行速度.
第三个是为了安装pip需要用到ssl,后面报错会有提到.
make && make install
创建软连接
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
查看版本
python3 -V
pip3 -V
升级完python3后开始安装mbedtls
wget https://github.com/ARMmbed/mbedtls/archive/mbedtls-2.23.0.tar.gz
tar -zxf mbedtls-2.23.0.tar.gz
cd mbedtls-mbedtls-2.23.0
make && make install
或者安装低版本版2.6.0可跳过安装python3,我这里是选择的上面较新版安装的
Installation of MbedTLS
export MBEDTLS_VER=2.6.0
wget https://tls.mbed.org/download/mbedtls-$MBEDTLS_VER-gpl.tgz
tar xvf mbedtls-$MBEDTLS_VER-gpl.tgz
pushd mbedtls-$MBEDTLS_VER
make SHARED=1 CFLAGS="-O2 -fPIC"
sudo make DESTDIR=/usr install
popd
sudo ldconfig
2.6安装supervisor
yum -y install supervisor
3、安装shadowsocks-libev和shadowsocks-manager
3.1.安装shadowsocks-libev
#注意是否安装git
yum install git
#注意是否安装升级过依赖包如果安装了略过
#sudo yum install gettext gcc autoconf libtool automake make asciidoc xmlto c-ares-devel libev-devel
git clone https://github.com/shadowsocks/shadowsocks-libev.git
cd shadowsocks-libev
git submodule update --init --recursive
./autogen.sh
./configure
make
make install
#查看版本
ss-server -v
编辑默认配置,这里配置完成后可以单独运行shadowsocks-libev,使用shadowsocks客户端可以实现梯子效果了。如果只是单用户使用且不需要前端管理页面完成下面配置就大功告成啦。
mkdir /etc/shadowsocks-libev
vim /etc/shadowsocks-libev/config.json
{
# server这里写自己服务器ip
"server": "19.26.25.29",
"server_port": 19989,
"local_port":1080,
"password":"123456",
"timeout":600,
"method":"aes-256-cfb",
"fast_open":false,
"workers":2
}
启动后客户端就可以连接成功了
#通过默认配置启动shadowsocks-libev
ss-server -c /etc/shadowsocks-libev/config.json
我们的目的是要有前端管理界面,所以还需要继续安装shadowsocks-manager
3.2 安装shadowsocks-manager
[collapse title="点击展开 查看shadowsocks-manager安装"]
使用ss-manager API来启动shadowsocks-libev
从git仓库克隆
git clone https://github.com/shadowsocks/shadowsocks-manager.git
cd shadowsocks-manager
npm i
npm i -g shadowsocks-manager --unsafe-perm
安装好后,直接使用 ssmgr 可以启动shadowsocks-manager,并且会默认创建.ssmgr 目录和default.yml 和db.sqlite文件
default.yml中的默认设置内容如下:
type: s
shadowsocks:
address: 127.0.0.1:6001
manager:
address: 0.0.0.0:6002
password: '123456'
db: 'db.sqlite'
# db:
# host: '1.1.1.1'
# user: 'root'
# password: 'abcdefg'
# database: 'ssmgr'
4、配置shadowsocks-manager和shadowsocks-libev配合宝塔完成前端配置
1、type: s的配置
mkdir ~/.ssmgr
(如果安装完成shadowsocks-manager时运行了 ”ssmgr“)可跳过创建目录
vim ~/.ssmgr/ssmgr.yml
type: s
shadowsocks:
address: 127.0.0.1:6001
manager:
address: 0.0.0.0:6002
password: '123ll'
db: 'ssmgr.sqlite'
2、type: m的配置
vim ~/.ssmgr/webgui.yml
type: m
manager:
address: 19.26.45.29:6002
password: '123ll'
plugins:
flowSaver:
use: true
user:
use: true
account:
use: true
email:
use: true
type: 'smtp'
username: '[email protected]'
password: '123lll'
host: 'smtp.163.com'
webgui:
use: true
host: '0.0.0.0'
port: '80'
site: 'http://ss.zxyfan.com'
admin_username: '[email protected]'
admin_password: '123lll'
db: 'webgui.sqlite'
redis:
host: '127.0.0.1'
port: 6379
db: 0
上面服务器地址写自己服务器地址,密码和type s的manager密码一致,还有注意缩进,格式不对ss识别不到配置内容也是一个坑。
3、配置 运行 shadowsocks
使用--manager-address
的参数运行shadowsocks-libev
都要保证--manager-address
的参数和上一步配置文件一致,运行方式:
ss-manager -m aes-256-cfb -u --manager-address 127.0.0.1:6001
把这个启动进程交给后台管理程序supervisor
supervisord
–管理ss-manger
进程
若前面没有安装记得安装yum -y install supervisor
配置文件在 /ect/supervisord.conf
vim /ect/supervisord.conf
配置 supervisor 代理管理后台启动
[program:ss-manager]
command=ss-manager -m aes-256-cfb -u --manager-address 127.0.0.1:6001
autorestart=true
user=root
systemctl start supervisord && systemctl reload && systemctl status
使用pm2后台运行ssmgr
#安装pm2 已部署跳过此步
npm install pm2@latest -g
pm2 --name "ssmgr" -f start ssmgr -x -- -c ~/.ssmgr/ssmgr.yml
pm2 --name "webgui" -f start ssmgr -x -- -c ~/.ssmgr/webgui.yml
pm2 save && pm2 startup
4、宝塔这边的配置
宝塔新建站点,用webgui.yml 配置里的域名,再申请一个ssl证书,并部署成功。
再在网站配置文件里添加:
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Frame-Options DENY;
proxy_pass http://127.0.0.1:8080;
}
防盗链不启用。如果启用了Shadowsocks-Manager页面打开会是空白。当然可能是我这边宝塔设置有问题,仅供参考。
注释掉这段:
# location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
# {
# expires 30d;
# error_log off;
# access_log /dev/null;
# }
#location ~ .*\.(js|css)?$
#{
# expires 12h;
# error_log off;
# access_log /dev/null;
# }
后台管理界面,可以自有设置多账户,方便多用户管理。
完成!!!大家喜欢的YOUTUBE来了。
评论(0)