FRP內網穿透服務端及客戶端架設

 

 

去github下載最新版FRP,下載時對應自己的作業系統。https://github.com/fatedier/frp

再去讀一下FRP的 README.md和Wiki,瞭解一下基本工作原理。

<span style="font-size: 18pt;">服務端架設</span>

下載對應自己版本的frp,https://github.com/fatedier/frp/releases

并傳到自己的VPS上,或者自己去找免費的FRP服務,請直接跳轉到客戶端架設。下載好後解壓出來,只保留frps及其配置文件。

打開配置文件,

[common]
bind_port = 7006 #服務端與客戶端連接端口
bind_addr=0.0.0.0#
kcp_bind_port=7006#开启 kcp 协议支持
bind_udp_port = 7001#UDP端口
vhost_http_port = 8088#http的訪問端口,可以自己定義,
vhost_https_port = 8086#https訪問端口,可以自己定義
subdomain_host = frp.*.com#解析域名,需要把這個域名解析到你服務器的IP上。
dashboard_port = 8089#控制台的端口
dashboard_user = name#控制台的訪問帳戶
dashboard_pwd = password#控制台的訪問密碼
privilege_token = *  #服務器與客戶端連接的token。最好設置一個比較複雜的,這樣會比較安全
max_pool_cunt=5#連接池

tcp_mux=true#啟用tcp多路複用

 

更多設置請看<span class="repo-root js-repo-root"><span class="js-path-segment">frp</span></span><span class="separator">/</span>README_zh.md

設置好以後就可以執行./frps -c ./frps.ini 啟動FRP。
<h3>添加frp到開機自啟。</h3>
請參考本站的  ubuntu 添加開機自啟軟件方法

然後再參考  Ubuntu/CentOS使用Supervisor管理进程

可以做到守護進程,這樣就不怕進程被kill了。

 
<h2>FRPC客戶端的配置。</h2>
[common]
server_addr = 服務器IP
server_port = 7006#和服務端的bind_port相同
privilege_token = #和服務端的privilege_token相同
tcp_mux=ture#如果服務端開啟了tcp多路複用客戶端也要開啟

protocol=kcp#根據自己需求是否開啟kcp,開啟后會消耗較多流量

pool_count=5#連接池,具體解釋請看<span class="repo-root js-repo-root"><span class="js-path-segment">frp</span></span><span class="separator">/</span>README_zh.md
login_fail_exit=false#鏈接失敗后不退出

[ssh]#根據自己的需求修改名字,方便服務端web查看管理
type = tcp
local_ip = 127.0.0.1#需要穿透的內網機器,如果是本機可以寫127.0.0.1也可以寫本機ip如192.168.1.1看你的ip是什麽就寫什麽
local_port = 22#需要穿透的本地端口
use_encryption = false#根據需要是否啟用加密
use_compression = false#根據需要是否啟用壓縮
remote_port = 39001#遠程服務器所用的端口

[NextCloud]
type = http
local_ip = 192.168.6.182#本地局域網機器ip
local_port = 80#需要穿透的本地端口
subdomain = next#二級域名,服務端設定的域名為subdomain_host = frp..com,那麼訪問這個穿透的端口就是next.frp..com:8088(端口號為服務端設置的vhost_http_port = 8088)

 

服務端添加開機自啟已經進程守護請參考服務端的設置。

如果這些都設置的沒問題的話打開服務端web就可以看到客戶端連接上來了。

 

linux系統swappiness參數在內存與交換分區間優化

 

 

swappiness的值的大小對如何使用swap分區是有著很大的聯繫的。swappiness=0的時候表示最大限度使用物理記憶體,然後才是 swap空間,swappiness=100的時候表示積極的使用swap分區,並且把記憶體上的數據及時的搬運到swap空間裏面。linux的基本默認設置為60,具體如下:

[root@timeserver ~]# cat /proc/sys/vm/swappiness
60

也就是說,你的記憶體在使用到100-60=40%的時候,就開始出現有交換分區的使用。大家知道,記憶體的速度會比磁片快很多,這樣子會加大系統io,同時造的成大量頁的換進換出,嚴重影響系統的性能,所以我們在操作系統層面,要盡可能使用記憶體,對該參數進行調整。

臨時調整的方法如下,我們調成10:

[root@timeserver ~]# sysctl vm.swappiness=10
vm.swappiness = 10
[root@timeserver ~]# cat /proc/sys/vm/swappiness
10
這只是臨時調整的方法,重啟後會回到默認設置的

要想永久調整的話,需要將
需要在/etc/sysctl.conf修改,加上:
[root@timeserver ~]# cat /etc/sysctl.conf

Controls the maximum number of shared memory segments, in pages

kernel.shmall = 4294967296
vm.swappiness=10

[root@timeserver ~]# sysctl -p

這樣便完成修改設置!

Ubuntu/CentOS使用Supervisor管理进程

<h2></h2>
<h2></h2>
<h2>1.安装supervisor</h2>

<span class="hljs-meta">#</span><span class="bash">pip  </span>
pip install supervisor  
<span class="hljs-meta">  
#</span><span class="bash">ubuntu  </span>
sudo apt-get install supervisor  
<span class="hljs-meta">  
#</span><span class="bash">centos (可能需要先安装epel源) </span>
yum install epel-release
yum -y install supervisor  

<div data-unique="2.启动"></div>
<h2>2.启动</h2>
安装完后如supervisor没启动,可以使用如下,手动启动

<span class="hljs-meta">#</span><span class="bash">启动supervisor  </span>
/usr/bin/supervisord -c /etc/supervisord.conf  
或者
supervisord -c /etc/supervisord.conf

进入 cd /etc 目录 找到supervisord.conf 配置文件和supervisord.d 文件夹,编辑supervisord.conf文件,拉到最底部我们可以看到

files = supervisord.d/*.ini 这句代码说明它会加载supervisord.d文件夹中的所有.ini配置文件

 
<h2>3.添加开机自启动</h2>

<span class="hljs-comment">#创建supervisord.service  </span>
<span class="hljs-attribute">vi</span> /usr/lib/systemd/system/supervisord.service  
  
<span class="hljs-comment">#supervisord.service文件内容  </span>
[Unit]  
Description=Supervisor  
  
[Service]  
Type=forking  
ExecStart=/usr/bin/supervisord -c /etc/supervisord.conf  
ExecStop=/usr/bin/supervisorctl <span class="hljs-variable">$OPTIONS</span> shutdown  
ExecReload=/usr/bin/supervisorctl <span class="hljs-variable">$OPTIONS</span> reload  
KillMode=process  
Restart=<span class="hljs-literal">on</span>-failure  
RestartSec=<span class="hljs-number">42s</span>  
  
[Install]  
WantedBy=multi-user.target  

激活开机启动

<span class="hljs-meta">#</span><span class="bash">激活开机启动  </span>
systemctl enable supervisord.service  
<span class="hljs-meta">  
#</span><span class="bash">如修改了supervisord.service配置文件需重新加载  </span>
systemctl daemon-reload  

各种开机自启动脚本:https://github.com/Supervisor/initscripts
<div data-unique="4.创建一个配置文件"></div>
<h2>4.创建一个配置文件</h2>

[<span class="hljs-meta">program:DeployLinux</span>]   <span class="hljs-meta">#DeployLinux  为程序的名称</span>
command=dotnet DeployLinux.dll <span class="hljs-meta">#需要执行的命令</span>
directory=/home/publish <span class="hljs-meta">#命令执行的目录</span>
environment=ASPNETCORE__ENVIRONMENT=Production <span class="hljs-meta">#环境变量</span>
user=root <span class="hljs-meta">#用户</span>
stopsignal=INT 
autostart=<span class="hljs-literal">true</span> <span class="hljs-meta">#是否自启动</span>
autorestart=<span class="hljs-literal">true</span> <span class="hljs-meta">#是否自动重启</span>
startsecs=<span class="hljs-number">3</span> <span class="hljs-meta">#自动重启时间间隔(s)</span>
stderr_logfile=/<span class="hljs-keyword">var</span>/log/ossoffical.err.log <span class="hljs-meta">#错误日志文件</span>
stdout_logfile=/<span class="hljs-keyword">var</span>/log/ossoffical.<span class="hljs-keyword">out</span>.log <span class="hljs-meta">#输出日志文件</span>

<span class="hljs-meta">#</span><span class="bash">加载配置文件 </span>
supervisorctl reread
<span class="hljs-meta">

</span><span class="bash">启动spring-app </span>

supervisorctl start spring-app
<span class="hljs-meta">

</span><span class="bash">查看进程状态 </span>

supervisorctl status

<h3>遇到的问题</h3>
添加要启动的程序配置文件后supervisor无法再启动,用systemctl status supervisor 命令查看状态发现有错误。

把添加的程序配置文件删除后再启动 supervisor可以正常启动,这样问题就是出现在了所添加的程序配置文件上。

比较奇怪的的是配置文件和另一台一样也会报错,需要把配置文件里面的一行命令删除后才正常。好奇怪,也不知道为什么。

apache添加多站点

 

之前一直使用宝塔面板搭建lnmp.最近在斐讯N1上跑Ubuntu 16.04,估计是宝塔对ARM的处理器适配还不是很好,lnmp没有一个能安装上的,无奈只有不用面板了(关键是面板太方便了)。看着教程安装了apache,不知道该如何下手啊,之前都是使用nginx。现在记录下apache下在一个主机上实现多站点的操作。

添加一个新的站点,例如A.com

首先在apache的配置文件夹/etc/apache2/sites-available下面添加一个文件A.com.conf(名字可以是其他的,看自己怎么命名)。

内容为

 

[info]

<VirtualHost *:80>
ServerName IP或者域名
ServerAdmin webmaster@localhost
DocumentRoot /var/www/nextcloud    #(这个是你站点的目录)

<Directory "/var/www/nextcloud/">
Options MultiViews FollowSymlinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>

TransferLog /var/log/apache2/nextcloud_access.log
ErrorLog /var/log/apache2/nextcloud_error.log
</VirtualHost>

保存后执行a2ensite A.com(你的配置文件名称)

重启apache服务    service apache2 restart

这样一个站点就增加好了。

然后再用相同的方法增加站点B。B.com

 

如果使用的端口不是80或者443需要在/etc/apache2/ports.conf裏面加入你制定的端口。不然是訪問不了的!

其实也很简单。

 

 

ubuntu 添加開機自啟軟件方法

<div>
<h3></h3>
<h3>用systemd控制开机自启</h3>
cd /lib/systemd/system/ && sudo touch frps.service
sudo nano frps.service
在其中添加如下内容

[Unit]
Description=fraps daemon
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
<span class="hljs-comment">#启动服务的命令(此处xxx换做你的实际安装目录)</span>
ExecStart=xxx/frps -c xxx/frps.ini

[Install]
WantedBy=multi-user.target

然后启动frps
sudo systemctl start frps
应用自启
sudo systemctl enable frps
有关于systemd的知识请自行谷歌

</div>