写在前面
最近通过帅地的公众号get了一个一年的阿里云轻量应用服务器, 2核4GB, 磁盘60GB,流量1100GB, 感觉还是相当够用的. 一开始我就将其当成一个x86_64
架构的虚拟机了, 但是后来发现这样实在是有点浪费了, 云服务器能做的事情可真是多. 之前就了解过的内网穿透服务器就可以用云服务器来搭建, 此外还可以做一些个人站点之类的. 话不多说, 我们先来配置一下这座’毛坯房’, 让它能够适应我们的需求.
系统镜像我选择了Ubuntu当前支持的最新版本20.04(focal), 毕竟是最大众化的一款Linux发行版了, 用着顺手.
之后可以通过重置镜像的方式更改.
ssh链接:秘钥文件+密码
由于平台默认已经为我们分配了公网ip, 此时就可以远程连接到云服务器了, 只需要在管理界面配置一下远程登录的密码即可, 但是这样会比较麻烦, 密码8位带字母数字, 每次都要输入一遍. 这里建议通过秘钥文件的方式来连接(确保安全的前提下), 管理面板上有详细的操作流程.
下面我设置了一个快捷命令, 连服务器更加顺手了:
alias ubt='ssh -i /Users/xxx/.ssh/ssh1.pem root@<公网IP>'
需要注意这样设置之后, 密码登录会失效, 需要修改/etc/ssh/sshd_config
文件的最后一行, 将PasswordAuthentication no
, 改为PasswordAuthentication yes
, 然后重启服务sudo systemctl restart sshd
, 最后重启服务器:reboot
, 这样就能看到生效了, 用手机端termux连服务器, 美滋滋~
后续的操作也基本都是通过ssh链接进行的.
镜像
这里阿里云直接帮我们设置为自己家的软件源镜像了, 速度相当快.
安装基本工具
查看系统信息
apt install neofetch
.-/+oossssoo+/-. root@xxx
`:+ssssssssssssssssss+:` ----------------------------
-+ssssssssssssssssssyyssss+- OS: Ubuntu 20.04.1 LTS x86_64
.ossssssssssssssssssdMMMNysssso. Host: Alibaba Cloud ECS pc-i440fx-2.1
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 5.4.0-47-generic
+ssssssssshmydMMMMMMMNddddyssssssss+ Uptime: 12 hours, 36 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 2121 (dpkg)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: bash 5.0.17
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ Resolution: 1024x768
ossyNMMMNyMMhsssssssssssssshmmmhssssssso Terminal: /dev/pts/1
ossyNMMMNyMMhsssssssssssssshmmmhssssssso CPU: Intel Xeon Platinum 8269CY (2) @ 2.499GHz
+sssshhhyNMMNyssssssssssssyNMMMysssssss+ GPU: 00:02.0 Cirrus Logic GD 5446
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Memory: 1126MiB / 3748MiB
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
+sssssssssdmydMMMMMMMMddddyssssssss+
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
-+sssssssssssssssssyyyssss+-
`:+ssssssssssssssssss+:`
.-/+oossssoo+/-.
编译工具链
apt install gdb make
MySQL
apt install mysql-server
apt install libmysqlclient-dev # 解决<mysql/mysql.h>找不到的问题
防火墙工具
这个算是相当重要了, 因为之后的网络服务都要通过防火墙, 不安装当然也可以, 但是会不安全, 之后在内网穿透部分我也会提到这个.
apt install firewalld
apt install iptables-services
开启服务:
systemctl start firewalld
查看版本和当前运行状态:
firewall-cmd --version
firewall-cmd --state
node.js
后面的clash配置要用:
apt install nodejs
apt install npm
npm镜像设置:
npm_config_registry=http://registry.npmmirror.com npx npm-mirror-set taobao
安装pm2(应用管理):
npm install pm2 -g
图形界面
这里虽说云服务器加GUI实属没必要, 不过有时候做一下Webserver的话不开个浏览器实在是看不到效果, 安一个基本的就够了(因为是真的卡, 甚至不如自己本地搭建的multipass). 这里参考了1:
apt install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal ubuntu-desktop
还要安装一个叫做vnc的东西, 有了这个方便的小工具, 我们才能通过vnc-viewer这款软件(在Mac)上查看远程服务器的图形化界面.
apt-get install tightvncserver
或者通过aptitude
安装vnc4server
, 两者功能是一样的.
apt-get install aptitude aptitude install vnc4server
需要注意镜像的问题2, 修改
vi /etc/apt/sources.list
, 在第一行加上deb http://archive.ubuntu.com/ubuntu/ focal universe
然后更新镜像
apt update
.
完成之后, 在Mac上安装vnc-viewer
:
brew install vnc-viewer
通过输入vncserver
启动vncserver
, 修改配置文件:vim ~/.vnc/xstartup
.如下:
#!/bin/sh
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME"
export XDG_MENU_PREFIX="gnome-flashback-"
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check &
vncconfig &
这里我就用了官方给的配置, 最后一行是开启剪贴板支持(不过我感觉好像没起作用).
防火墙端口开启
这里还有一个重要的步骤, 就是关于防火墙的端口开启设置, 需要开启的端口为5900
和5901
, 这个1
就是之前vncserver
默认的第一个实例. 在管理界面中右上角添加规则:
由于前面设置过了防火墙, 这里就需要先添加相应的端口, 这里参考了3, 思路都是一样的:
firewall-cmd --zone=public --add-port=5900/tcp --permanent
firewall-cmd --zone=public --add-port=5901/tcp --permanent
查看端口状态:
firewall-cmd --query-port=5900/tcp
firewall-cmd --query-port=5901/tcp
netstat
查看服务器是否开启了任务监听对应端口:
sudo netstat -tunlp | grep 5901
这里应该显示如下:
tcp6 0 0 :::5901 :::* LISTEN 5502/Xvnc4
查看防火墙的端口开放情况:(对5900亦然, 下同)
sudo iptables -L -n --line-numbers | grep 5901
若没有, 需要用下面的方法开启:
sudo iptables -I INPUT -ptcp --dport 5901 -j ACCEPT
最后刷新防火墙:
firewall-cmd --reload
端口部分就完成了.
重启vnc:
vncserver -kill :1 && vncserver -geometry 1920x1080 :1
打开Mac本机的vnc-viewer, 输入: <公网IP>:1
, 其他默认, 即可连接.
配置代理
方便GitHub等的访问, 这里采用了clash命令行客户端, 参考了4.
wget https://github.com/Dreamacro/clash/releases/download/v1.11.12/clash-linux-amd64-v1.11.12.gz
gzip -d clash-linux-amd64-v1.11.12.gz
mv clash-linux-amd64-v1.11.12 clash
mkdir /opt/clash
mv clash /opt/clash/clash
cd /opt/clash
chmod 755 clash
./clash -v
# Clash v1.11.12 linux amd64 with go1.19.3 Fri Nov 4 05:30:39 UTC 2022
在/opt/clash
中新建:
vi start_clash.sh
# 加入如下内容:
./clash -d .
然后开启:
chmod 755 start_clash.sh
pm2 start start_clash.sh
此时可以看到:
最后同样, 加个快捷指令:
alias uvpn='pm2 stop /opt/clash/start_clash.sh'
alias vpn='pm2 start /opt/clash/start_clash.sh'
以及:
alias vv="export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890"
alias uv="unset https_proxy http_proxy all_proxy"
终端上GitHub的问题就可以解决了, 下面测试一下(with Google):
curl -vvv google.com
* Uses proxy env variable http_proxy == 'http://127.0.0.1:7890'
* Trying 127.0.0.1:7890...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 7890 (#0)
> GET http://google.com/ HTTP/1.1
> Host: google.com
> User-Agent: curl/7.68.0
> Accept: */*
> Proxy-Connection: Keep-Alive
...
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
* Connection #0 to host 127.0.0.1 left intact
关闭之后:
也可以通过pm2 list
查看运行状态.
开多了运行程序可以用pm2 delete <id>
删掉.