<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>服务器 &#8211; from0to1</title>
	<atom:link href="https://www.from0to1.top/tag/%E6%9C%8D%E5%8A%A1%E5%99%A8/feed" rel="self" type="application/rss+xml" />
	<link>https://www.from0to1.top</link>
	<description>一个研究技术、分享经验的博客</description>
	<lastBuildDate>Mon, 23 Mar 2026 08:41:28 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>利用python实现对目标ip进行端口扫描</title>
		<link>https://www.from0to1.top/228.html</link>
					<comments>https://www.from0to1.top/228.html#respond</comments>
		
		<dc:creator><![CDATA[雾朦Official]]></dc:creator>
		<pubDate>Sun, 01 Oct 2023 16:48:52 +0000</pubDate>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[扫描器]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[网站]]></category>
		<guid isPermaLink="false">https://www.from0to1.top/?p=228</guid>

					<description><![CDATA[先放完整代码 import socket IP = input(&#34;请输入目标IP&#34;) start = int(input(&#34;请输入起始端口&#34;)) end = int(input(&#34;请输入结束端口&#34;)) + 1 for port in range(start, end): sock = socket.socket(socket.AF_INE [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>先放完整代码</p>
<pre class="prettyprint linenums">import socket

IP = input(&quot;请输入目标IP&quot;)
start = int(input(&quot;请输入起始端口&quot;))
end = int(input(&quot;请输入结束端口&quot;)) + 1

for port in range(start, end):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(2)
    try:
        result = sock.connect_ex((IP, port))
        if result == 0:
            print(IP,&quot;:{}已放开&quot;.format(port))
            sock.close()
    except Exception as e:
        pass
</pre>
<div class="link-title wow rollIn">思路</div>
<p>导入socket模块</p>
<pre class="prettyprint linenums">import socket</pre>
<p>获取使用者输入的IP，起始端口，终止端口信息，超时时限并用四个变量分别接收，终止端口后面加一方便使用后面的range循环</p>
<pre class="prettyprint linenums">IP = input(&quot;请输入目标IP&quot;)
start = int(input(&quot;请输入起始端口&quot;))
end = int(input(&quot;请输入结束端口&quot;)) + 1
s = int(input(&quot;请输入超时时限(秒)&quot;))</pre>
<p>开始循环端口号</p>
<pre class="prettyprint linenums">for port in range(start, end):</pre>
<p>创建套接字对象</p>
<pre class="prettyprint linenums">    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)</pre>
<p>设置超时时限并导入使用者的输入值</p>
<pre class="prettyprint linenums">    sock.settimeout(s)</pre>
<p>因为我们不一定能成功扫到对方的某个端口，故用try语句并尝试与目标端口进行连接</p>
<pre class="prettyprint linenums">    try:
        result = sock.connect_ex((IP, port))</pre>
<p>加入if语句，如果连接成功，打印ip＋端口号，然后关闭套接字对象</p>
<pre class="prettyprint linenums">        if result == 0:
            print(IP,&quot;:{}已放开&quot;.format(port))
            sock.close()</pre>
<p>如果连接失败，则直接开始下一次循环</p>
<pre class="prettyprint linenums">    except Exception as e:
        pass</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.from0to1.top/228.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>用stress对服务器进行内存压力测试</title>
		<link>https://www.from0to1.top/219.html</link>
					<comments>https://www.from0to1.top/219.html#respond</comments>
		
		<dc:creator><![CDATA[雾朦Official]]></dc:creator>
		<pubDate>Sun, 01 Oct 2023 14:32:55 +0000</pubDate>
				<category><![CDATA[服务器]]></category>
		<category><![CDATA[strees]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[内存]]></category>
		<category><![CDATA[游戏服务器]]></category>
		<guid isPermaLink="false">https://www.from0to1.top/?p=219</guid>

					<description><![CDATA[压力测试前我们需要安装压力测试工具stress sudo apt install stress 安装完成后我们就可以对服务器进行压力测试 线程数为内存压力 线程内存大小为每个线程所占用的内存的大小 释放时间为内存占用开始后的持续时间 持续时间为该测试的持续时间 stress --vm 线程数 --vm-bytes 内存大小G --vm-hang 释放时间 --timeout 持续时间s]]></description>
										<content:encoded><![CDATA[<p>压力测试前我们需要安装压力测试工具stress</p>
<pre class="prettyprint linenums">sudo apt install stress</pre>
<p>安装完成后我们就可以对服务器进行压力测试</p>
<p>线程数为内存压力</p>
<p>线程内存大小为每个线程所占用的内存的大小</p>
<p>释放时间为内存占用开始后的持续时间</p>
<p>持续时间为该测试的持续时间</p>
<pre class="prettyprint linenums">stress --vm 线程数 --vm-bytes 内存大小G --vm-hang 释放时间 --timeout 持续时间s</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.from0to1.top/219.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>为服务器添加虚拟内存防止服务器崩溃</title>
		<link>https://www.from0to1.top/215.html</link>
					<comments>https://www.from0to1.top/215.html#respond</comments>
		
		<dc:creator><![CDATA[雾朦Official]]></dc:creator>
		<pubDate>Sun, 01 Oct 2023 13:53:03 +0000</pubDate>
				<category><![CDATA[服务器]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[内存]]></category>
		<category><![CDATA[游戏服务器]]></category>
		<guid isPermaLink="false">https://www.from0to1.top/?p=215</guid>

					<description><![CDATA[你的服务器是否出现了内存不够用的情况？ 你是否担心服务器内存太少导致内存溢出而使得服务器崩溃？ 如果你有上述问题，那么就跟着教程走，带你解决烦恼 添加虚拟内存 首先我们先检查一下内存的分配情况 free -m 返回结果中men是物理内存，swap是虚拟内存，total是总大小，used是使用量，free是剩余量 我们要根据实际情况来配置配置虚拟内存的大小，一般为物理内存：虚拟内存=1:2 如果服务 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>你的服务器是否出现了内存不够用的情况？</p>
<p>你是否担心服务器内存太少导致内存溢出而使得服务器崩溃？</p>
<p>如果你有上述问题，那么就跟着教程走，带你解决烦恼</p>
<div class="link-title wow rollIn">添加虚拟内存</div>
<p>首先我们先检查一下内存的分配情况</p>
<pre class="prettyprint linenums">free -m</pre>
<p>返回结果中men是物理内存，swap是虚拟内存，total是总大小，used是使用量，free是剩余量</p>
<p>我们要根据实际情况来配置配置虚拟内存的大小，一般为物理内存：虚拟内存=1:2</p>
<p>如果服务器已经有虚拟内存但是想重新配置虚拟内存的，请先翻到文章末尾查看如何删除虚拟内存</p>
<p>进入共享根目录</p>
<pre class="prettyprint linenums">cd /</pre>
<p>创建一个配置虚拟内存的文件夹</p>
<pre class="prettyprint linenums">sudo mkdir swap</pre>
<p>进入虚拟内存配置文件夹</p>
<pre class="prettyprint linenums">cd swap/</pre>
<p>创建虚拟内存配置文件并设置虚拟内存大小，单位设为1，则虚拟内存的单位大小就是b；单位设为1024，则虚拟内存单位大小为kb；单位设为1048576则虚拟内存单位大小为mb；单位设为1073741824，则虚拟内存单位大小为gb。</p>
<pre class="prettyprint linenums">sudo dd if=/dev/zero of=swapfile bs=内存单位 count=内存大小</pre>
<p>例如我想配置4g虚拟内存，可以这样写</p>
<pre class="prettyprint linenums">sudo dd if=/dev/zero of=swapfile bs=1024 count=4194304</pre>
<p>虚拟内存大小设置完成后就需要转换配置文件类型</p>
<pre class="prettyprint linenums">sudo mkswap swapfile</pre>
<p>配置完成后我们就需要启用虚拟内存</p>
<pre class="prettyprint linenums">sudo swapon swapfile</pre>
<p>再次检查内存分配情况</p>
<pre class="prettyprint linenums">free -m</pre>
<p>这时我们就可以看到虚拟内存已经启用成功了</p>
<p>但是如果我们重启后就会发现刚刚配置好的虚拟内存又消失了，又需要再次输入一遍sudo swapon swapfile</p>
<p>为了解决这种情况，我们就要设置虚拟内存开机加载（虚拟内存持久化）</p>
<div class="link-title wow rollIn">配置虚拟内存持久化</div>
<p>安装vim编辑器</p>
<pre class="prettyprint linenums">sudo apt install vim</pre>
<p>使用vim打开系统静态信息信息文件，修改其内容可以做到重启时虚拟内存被加载</p>
<pre class="prettyprint linenums">sudo vim /etc/fstab</pre>
<p>进入vim后按下【i】键进入编辑模式，在末位置按下【enter】键创建新的一行然后输入</p>
<pre class="prettyprint linenums">/swap/swapfile swap swap defaults 0 0</pre>
<p>然后按【esc】键退出编辑模式之按下【:】键进入命令模式，最后输入wq保存并退出</p>
<pre class="prettyprint linenums">:wq</pre>
<p>这样我们的服务器虚拟内存在开机时就会被加载</p>
<div class="link-title wow rollIn">删除虚拟内存</div>
<p>如果你想去掉虚拟内存或重新配置虚拟内存，可通过下面的两段命令进入虚拟内存配置文件夹并删除虚拟内存</p>
<pre class="prettyprint linenums">cd /swap/</pre>
<pre class="prettyprint linenums">sudo swapoff swapfile</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.from0to1.top/215.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>利用Windows PowerShell实现ssh服务</title>
		<link>https://www.from0to1.top/210.html</link>
					<comments>https://www.from0to1.top/210.html#respond</comments>
		
		<dc:creator><![CDATA[雾朦Official]]></dc:creator>
		<pubDate>Sun, 01 Oct 2023 12:12:16 +0000</pubDate>
				<category><![CDATA[服务器]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">https://www.from0to1.top/?p=210</guid>

					<description><![CDATA[PowerShell是微软为Windows操作系统的开发的一个命令行环境和脚本语言解释器。它允许用户使用PowerShell命令和脚本来管理和自动化Windows系统的各种任务，包括文件和文件夹管理、系统配置、网络管理、安 全性管理、应用程序管理、任务调度等。今天我们就用Windows PowerShell实现ssh远程登录服务器 首先我们要以管理员权限打开Windows PowerShell 我 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>PowerShell是微软为Windows操作系统的开发的一个命令行环境和脚本语言解释器。它允许用户使用PowerShell命令和脚本来管理和自动化Windows系统的各种任务，包括文件和文件夹管理、系统配置、网络管理、安</p>
<p>全性管理、应用程序管理、任务调度等。今天我们就用Windows PowerShell实现ssh远程登录服务器</p>
<p>首先我们要以管理员权限打开Windows PowerShell</p>
<p><img fetchpriority="high" decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/10/屏幕截图-2023-10-01-195958.png" alt="" class="alignnone size-full wp-image-211" srcset="https://www.from0to1.top/wp-content/uploads/2023/10/屏幕截图-2023-10-01-195958.png 422w, https://www.from0to1.top/wp-content/uploads/2023/10/屏幕截图-2023-10-01-195958-300x284.png 300w" sizes="(max-width: 422px) 100vw, 422px" /></p>
<p>我们在进行ssh连接前要先安装openssh客户端，在命令行中输入下面的指令并回车</p>
<pre class="prettyprint linenums">Install-PackageProvider -Name NuGet -ForceBootstrap</pre>
<pre class="prettyprint linenums">Install-Module -Name posh-ssh</pre>
<p>接下来就可以进行ssh连接，用户名和ip地址可以在你购买服务器的网站的控制台中查看</p>
<pre class="prettyprint linenums">ssh 用户名@ip地址</pre>
<p>在弹出的password后面输入该用户的密码即可建立ssh连接</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.from0to1.top/210.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>搭建内网穿透</title>
		<link>https://www.from0to1.top/168.html</link>
					<comments>https://www.from0to1.top/168.html#respond</comments>
		
		<dc:creator><![CDATA[captain]]></dc:creator>
		<pubDate>Thu, 21 Sep 2023 09:42:05 +0000</pubDate>
				<category><![CDATA[服务器]]></category>
		<category><![CDATA[内网穿透]]></category>
		<category><![CDATA[网站]]></category>
		<guid isPermaLink="false">https://www.from0to1.top/?p=168</guid>

					<description><![CDATA[前言 如果你不会搭建，可以购买人工服务，操作人员将会于24小时内帮你搭建完成，价格为40（这时间和价格比起来感觉是当黑奴了&#8230;），请点击前往或滚动到最下方购买 搭建网站这么久，我用过不少内网穿透，飞鸽、ngrok、openfrp、樱花、乐青等等，他们都有或多或少的问题，价格太贵或是节点访问慢、不稳定，导致我最后放弃了使用它们，决定自己搭一个内网穿透 (这篇文章不想写太细，不会像教你搭建网 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1 style="text-align: center;">前言</h1>
<h2 class="h-title"><span style="color: #ff0000;">如果你不会搭建，可以购买人工服务，操作人员将会于24小时内帮你搭建完成，价格为40（这时间和价格比起来感觉是当黑奴了&#8230;），请<a class="links_btn" href="#get" target="_blank" rel="noopener">点击前往</a>或滚动到最下方购买</span></h2>
<p>搭建网站这么久，我用过不少内网穿透，飞鸽、ngrok、openfrp、樱花、乐青等等，他们都有或多或少的问题，价格太贵或是节点访问慢、不稳定，导致我最后放弃了使用它们，决定自己搭一个内网穿透 <span style="color: #ff0000;"><strong>(这篇文章不想写太细，不会像<a class="links_btn" href="https://www.from0to1.top/7.html" target="_blank" rel="noopener">教你搭建网站</a>那样每个步骤和代码都给你，完全不懂的小白还是老老实实用别人做的吧或选择付费搭建服务)</strong></span>我先尝试了著名的frp，发现和openfrp差距的有点大，特别是没有自动https，我可不想每个web服务器都写跳转规则，心烦时在GitHub上找到了长亭雷池 WAF<a class="links_btn" href="https://github.com/chaitin/safeline" target="_blank" rel="noopener">GitHub链接</a>和rathole<a class="links_btn" href="https://github.com/rapiz1/rathole" target="_blank" rel="noopener">GitHub链接</a>在不断的尝试下我发现长亭雷池 WAF可以和rathole配合，完美解决自动https (frp做不到，被自定义域名限制住了) 接下来开始教学</p>
<h2 class="h-title">1、购买云服务器</h2>
<p>内网穿透你需要一台有公网IP的服务器，我使用的是阿里云的轻量应用服务器，配置香港2核2G每月2TB流量峰值带宽30mbps每月34RMB，内网穿透的同时能加一个WAF，这个价格也就可以接受了<strong> (使用其他内网穿透我每月最少要花26，访问要十几秒、nas下载只有三百多kb根本用不了）</strong>去阿里云搜索 轻量应用服务器，地区香港 <strong>不然要备案，带宽还只有5mbps</strong> <span style="color: #ff0000;"><strong>(吐槽一下: 备案机制真的挺恶心的,<span style="color: #3366ff;">听说</span>2024年3月连app都要备案了，不备案禁止联网，连国外都不让看？GitHub、dockerhub、youtube等等你还怎么用？)</strong></span>机器配置按你自己需求，1G内存装不了WAF，只能搭frp。（你也可以直接把网站迁移到云服务器上）</p>
<h2 class="h-title">2、安装内网穿透</h2>
<p>点击链接前往<a class="links_btn" href="https://github.com/rapiz1/rathole/" target="_blank" rel="noopener">rathole</a>Github项目地址，网页右边Releases下载符合你服务器系统的压缩包，解压可以得到可运行的程序，启动和命令什么的就不讲了，项目文档上一堆，<span style="color: #ff0000;">（<strong>测试时别忘了阿里云的防火墙要打开）</strong></span><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/09/Ink130905.jpg" alt="下载" /><br />
这个是<span style="color: #ff0000;"><strong>服务端</strong></span>的开机自启，<span style="color: #ff0000;"><strong>别忘了改成你自己的文件所在位置,使用方法自己搜索</strong></span><a class="links_btn" href="https://github.com/rapiz1/rathole/blob/main/examples/systemd/ratholes.service" target="_blank" rel="noopener">服务端开机自启</a></p>
<pre class="prettyprint linenums">[Unit]
Description=Rathole Server Service
After=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=5s
LimitNOFILE=1048576

# with root
ExecStart=/usr/bin/rathole -s /etc/rathole/rathole.toml
# without root
# ExecStart=%h/.local/bin/rathole -s %h/.local/etc/rathole/rathole.toml

[Install]
WantedBy=multi-user.target</pre>
<p>这个是客户端的开机自启，<span style="color: #ff0000;"><strong>别忘了改成你自己的文件所在位置,使用方法自己搜索</strong></span><a class="links_btn" href="https://github.com/rapiz1/rathole/blob/main/examples/systemd/ratholec.service" target="_blank" rel="noopener">客户端开机自启</a></p>
<pre class="prettyprint linenums">[Unit]
Description=Rathole Client Service
After=network.target

[Service]
Type=simple
Restart=on-failure
RestartSec=5s
LimitNOFILE=1048576

# with root
ExecStart=/usr/bin/rathole -c /etc/rathole/rathole.toml
# without root
# ExecStart=%h/.local/bin/rathole -c %h/.local/etc/rathole/rathole.toml

[Install]
WantedBy=multi-user.target</pre>
<h2 id="get" class="h-title">3、安装雷池WAF</h2>
<p>这是官网的一键安装脚本，<span style="color: #ff0000;">安装依赖docker和docker compose</span>（docker一键安装脚本<code>curl -fsSL https://get.docker.com | bash -s docker</code>）</p>
<pre class="prettyprint linenums">bash -c &quot;$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)&quot;</pre>
<p><span style="color: #ff0000;"><strong>具体安装看官方文档</strong></span><a class="links_btn" href="https://waf-ce.chaitin.cn/" target="_blank" rel="noopener">雷池WAF官网</a><br />
<strong>rathole穿透后的端口，阿里云防火墙策略设置为只允许127.0.0.1访问，然后用雷池反向代理过去就行了，上游服务器地址填http://127.0.0.1 <span style="color: #ff0000;">协议自定，端口填你穿透后的端口</span></strong></p>
<h2 class="h-title"><span style="color: #ff0000;">如果你不会搭建，可以购买人工服务，操作人员将会于24小时内帮你搭建完成，价格为40（这时间和价格比起来感觉是当黑奴了&#8230;），请<a class="links_btn" href="#get" target="_blank" rel="noopener">点击前往</a>或滚动到最下方购买</span></h2>
<div class="erphpdown erphpdown-see erphpdown-see-pay erphpdown-content-vip" id="erphpdown" style="display:block;">此内容查看价格为<span class="erphpdown-price">40</span>加隆，请先<a href="https://www.from0to1.top/login" target="_blank" class="erphp-login-must">登录</a><div class="erphpdown-tips">在本站充值消费一律不支持退款，请理性选择！</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.from0to1.top/168.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>docker备份服务器数据</title>
		<link>https://www.from0to1.top/126.html</link>
					<comments>https://www.from0to1.top/126.html#respond</comments>
		
		<dc:creator><![CDATA[captain]]></dc:creator>
		<pubDate>Fri, 04 Aug 2023 05:12:55 +0000</pubDate>
				<category><![CDATA[服务器]]></category>
		<category><![CDATA[docker]]></category>
		<guid isPermaLink="false">https://from0to1.top/?p=126</guid>

					<description><![CDATA[什么是docker？ 一款产品从开发到上线，从操作系统，到运行环境，再到应用配置。作为开发+运维之间的协作我们需要 关心很多东西，这也是很多互联网公司都不得不面对的问题，特别是各种版本的迭代之后，不同版本环 境的兼容，对运维人员是极大的考验！ 环境配置如此麻烦，换一台机器，就要重来一次，费力费时。很多人想到，能不能从根本上解决问题， 软件可以带环境安装？也就是说，安装的时候，把原始环境一模一样地复 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h2 class="h-title">什么是docker？</h2>
<p>一款产品从开发到上线，从操作系统，到运行环境，再到应用配置。作为开发+运维之间的协作我们需要<br />
关心很多东西，这也是很多互联网公司都不得不面对的问题，特别是各种版本的迭代之后，不同版本环<br />
境的兼容，对运维人员是极大的考验！<br />
环境配置如此麻烦，换一台机器，就要重来一次，费力费时。很多人想到，能不能从根本上解决问题，<br />
软件可以带环境安装？也就是说，安装的时候，把原始环境一模一样地复制过来。解决开发人员说的“ 在<br />
我的机器上可正常工作”的问题。<br />
Docker镜像的设计，使得Docker得以打破过去「程序即应用」的观念。通过Docker镜像 ( images ) 将<br />
应用程序所需要的系统环境，由下而上打包，达到应用程序跨平台间的无缝接轨运作。<br />
<strong>而我们使用docker是为了将服务器包括环境带着一起走，可以轻松在另一台同架构设备上完成部署，以及遇到故障可以马上从以前的镜像恢复备份</strong></p>
<h2 class="h-title"><span style="color: #ff0000;">如果你不会mysql容器可携带数据，可以购买人工服务，操作人员将会于24小时内帮你搭建完成，价格为20（这时间和价格比起来感觉是当黑奴了&#8230;），请<a class="links_btn" href="#get" target="_blank" rel="noopener">点击前往</a>或滚动到最下方购买</span></h2>
<h2 class="h-title">1、安装docker</h2>
<p>首先我们要在服务器中安装docker环境<a class="links_btn" href="https://www.docker.com/" target="_blank" rel="noopener">docker官网</a><br />
点击Linux（这篇博客将演示在ubuntu上安装docker）<br />
<img decoding="async" src="https://from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-05-28-171213.png" alt="点击" /><br />
<strong>左侧区域下滑找到Docker Engine</strong><br />
<img decoding="async" src="https://from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-05-28-171516.png" alt="Engine" /><br />
<strong>点击install选中你的系统版本（这里我选择Ubuntu）</strong><br />
<img decoding="async" src="https://from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-05-28-171741.png" alt="选择" /><br />
在这里按照官方文档进行安装<br />
看不懂可以拿去翻译，如果是edge浏览器，可以任意地方右键选择翻译为中文<br />
<strong>这里我就不搬代码了，注意命令要一句一句输</strong><br />
确定安装成功后，我们再给docker换个源，不然下载镜像太慢了，选择你想要的国内源，换了没用就再换别的源，<strong>推荐Docker中国区官方镜像的</strong><br />
Docker中国区官方镜像:<br />
https://registry.docker-cn.com</p>
<p>网易:<br />
http://hub-mirror.c.163.com</p>
<p>ustc:<br />
https://docker.mirrors.ustc.edu.cn</p>
<p>中国科技大学:<br />
https://docker.mirrors.ustc.edu.cn</p>
<p>阿里云:<br />
https://cr.console.aliyun.com/</p>
<p>腾讯云：<br />
https://mirror.ccs.tencentyun.com</p>
<p>输入命令（将https://registry.docker-cn.com换成的想换的源，默认Docker中国区官方镜像<strong><span style="color: #ff0000;">(复制下来可能是中文符号要改成英文)</span></strong></p>
<pre class="prettyprint linenums">sudo mkdir -p /etc/docker</pre>
<p><code>sudo tee /etc/docker/daemon.json &lt;&lt;-'EOF'<br />
{<br />
"registry-mirrors": ["https://registry.docker-cn.com"]<br />
}<br />
EOF</code></p>
<pre class="prettyprint linenums">sudo systemctl daemon-reload
sudo systemctl restart docker</pre>
<p>请手动调整此代码为以下格式<br />
<img decoding="async" src="https://from0to1.top/wp-content/uploads/2023/06/2023-06-13-134422.png" alt="图" /><br />
执行完成正常返回了命令行就成功了<br />
本次我们将在一个最基础的ubuntu镜像上部署我们的服务器环境<br />
首先下载一个ubuntu镜像，输入命令</p>
<pre class="prettyprint linenums">docker pull ubuntu</pre>
<p>下载完后查看一下</p>
<pre class="prettyprint linenums">docker images</pre>
<p>可以看到我们下载的ubuntu镜像<br />
接下来我们就要基于这个ubuntu镜像跑一个容器了，不过在此之前，我们先要自定义一个网络<strong>（这点非常重要，影响到容器之间的通信连接）</strong></p>
<pre class="prettyprint linenums">docker network create --driver bridge --subnet 172.100.0.0/16 --gateway 172.100.0.1 mynet</pre>
<p>这代码的意思是创建一个桥接网络，网段172.100.0.0这个/16代表网段的后两位都可以用，总共可以有255×255台设备在这个网络里，如果是/24就只有最后一位可以用，最多255台机子可以在网络里，172.0.0.1是他的网关，名称为mynet<br />
接下来我们就要启动一个ubuntu容器来装你的服务器环境和网站了（从现在开始就不解释命令了，文章底部可以下载一篇非常详细的图文笔记，看完你就会了）</p>
<pre class="prettyprint linenums">docker run -it -p 80:80 -p 443:443 --net mynet --restart=always ubuntu /bin/bash</pre>
<p>执行完成后，可以看到控制台ID变了，现在已经进入到容器内控制了（这台服务器上有服务正在运行，所以删了点参数，你们输完整命令就行）<br />
<img decoding="async" src="https://from0to1.top/wp-content/uploads/2023/07/屏幕截图-2023-05-29-135920.png" alt="图" /><br />
在这里就可以安装我们的服务器环境了，教你怎么配置服务器环境在我的另一篇博客<a class="links_btn" href="https://from0to1.top/17.html" target="_blank" rel="noopener">配置服务器环境</a><br />
<strong>去看那篇博客把环境配置好才能进行下一步</strong></p>
<h2 class="h-title">OK现在就当你已经配置完环境了</h2>
<p>接下来我们要进行MySQL数据库的镜像持久化数据，如果不进行任何设置的话，你会发现将一个创建了自己数据库的MySQL容器提交成镜像，再从这个镜像变为容器，但是你创建过的数据库没有了，这就非常要命了<br />
<code>先下载mysql镜像,然后从镜像启动一个容器，一定要设置容器名（--name 容器名），并且指定你的自定义网络（--net 网络），这将影响你的服务器容器跟数据库容器的连接，还有数据库root用户密码，<strong>要强密码</strong>（-e MYSQL_ROOT_PASSWORD=密码）</code></p>
<h3 class="h-title">代码全英文！！！</h3>
<pre class="prettyprint linenums">docker pull mysql
docker run -d -p 3306:3306 --name 容器名 --net mynet --restart=always -e MYSQL_ROOT_PASSWORD=你的密码  mysql
</pre>
<p>执行完后<strong>连续输入3次</strong><code>docker ps</code>看一下状态是不是up<br />
<img decoding="async" src="https://from0to1.top/wp-content/uploads/2023/07/屏幕截图-2023-05-29-182134.png" alt="图" /><br />
确定容器状态正常后输命令,新开个终端会话，与容器交互，使用bash脚本控制,<strong>上方图片里，蓝色标记的就是容器id</strong></p>
<pre class="prettyprint linenums">docker exec -it 容器id /bin/bash</pre>
<p>进入容器后需要在修改mysql容器中的<strong><span style="color: #ff0000;">根目录</span></strong>下新建目录</p>
<pre class="prettyprint linenums">mkdir /workdir</pre>
<p>再将 /var/lib/mysql 复制到新建目录中</p>
<pre class="prettyprint linenums">cp -r /var/lib/mysql /workdir</pre>
<p>修改 /etc/my.cnf 文件，将datadir改成你新建的目录</p>
<pre class="prettyprint linenums">cat /etc/my.cnf
sed -i 27d /etc/my.cnf
sed -i &#039;26a datadir=/workdir/mysql&#039; /etc/my.cnf</pre>
<p>完成后进入mysql命令行，创建一个数据库测试是否成功</p>
<pre class="prettyprint linenums">mysql -u root -p 你的密码
CREATE DATABASE wordpress;</pre>
<p><strong><span style="color: #ff0000;">接下来退出容器重启一次</span></strong>，再将容器提交成一个新镜像(提交完就可以删了)</p>
<pre class="prettyprint linenums">docker restart 这个mysql容器的id
docker commit 这个mysql容器的id mysql_withdata:1.00</pre>
<p>把原来的容器删掉</p>
<pre class="prettyprint linenums">docker rm -f 这个mysql容器的id</pre>
<p>运行你刚刚制作的镜像（不用初始化密码）</p>
<pre class="prettyprint linenums">docker run -d -p 3306:3306 --name blog_mysql --net mynet --restart=always  mysql_withdata:1.00</pre>
<p>再次进入容器内的mysql命令行查看是否成功(有你创建的数据库就成功了)</p>
<pre class="prettyprint linenums" id="get">show databases;</pre>
<p>成功后备份就很简单了，将你的博客和数据库容器用commit提交成镜像上传到docker镜像仓库，要用的时候拿下来直接运行就好了<strong><span style="color: #ff0000;">(别忘了要创建同样的环境！自定义网络、启动时指定自定义网络、指定容器名称等)</span></strong></p>
<pre class="prettyprint linenums">docker commit -m=23/5/25 -a=captain 5f7d6b5e806c captain/server_backup:blog_mysql-23-5-25 (提交成新镜像)
docker push captain/server_backup:blog_mysql-23-5-25(下载备份)</pre>
<h2 class="h-title"><span style="color: #ff0000;">如果你不会mysql容器可携带数据，可以购买人工服务，操作人员将会于24小时内帮你搭建完成，价格为20（这时间和价格比起来感觉是当黑奴了&#8230;），请<a class="links_btn" href="#get" target="_blank" rel="noopener">点击前往</a>或滚动到最下方购买</span></h2>
<div class="erphpdown erphpdown-see erphpdown-see-pay erphpdown-content-vip" id="erphpdown" style="display:block;">此内容查看价格为<span class="erphpdown-price">20</span>加隆，请先<a href="https://www.from0to1.top/login" target="_blank" class="erphp-login-must">登录</a><div class="erphpdown-tips">在本站充值消费一律不支持退款，请理性选择！</div></div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.from0to1.top/126.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>利用Windows搭建Minecraft服务器</title>
		<link>https://www.from0to1.top/144.html</link>
					<comments>https://www.from0to1.top/144.html#respond</comments>
		
		<dc:creator><![CDATA[雾朦Official]]></dc:creator>
		<pubDate>Fri, 28 Jul 2023 00:43:40 +0000</pubDate>
				<category><![CDATA[服务器]]></category>
		<category><![CDATA[Minecraft]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[游戏服务器]]></category>
		<guid isPermaLink="false">https://from0to1.top/?p=144</guid>

					<description><![CDATA[这是一篇关于在windows上架设minecraft服务器的文章 首先我们需要安装jdk或jre搭建mc服务器的运行环境 本教程以jdk17做演示，其他版本的安装大同小异 进入Java官网 点击【Windows】，找到【x64 Installer】，点击后面的链接下载 JDK17下载地址 双击运行刚刚下载的exe文件，一直点击【下一步】即可 右键点击【此电脑】 点击【属性】 点击【高级系统设置】  [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>这是一篇关于在windows上架设minecraft服务器的文章</p>
<p>首先我们需要安装jdk或jre搭建mc服务器的运行环境</p>
<p>本教程以jdk17做演示，其他版本的安装大同小异</p>
<p><a class="links_btn" href="https://www.oracle.com/cn/java/technologies/downloads/" target="_blank" rel="noopener">进入Java官网</a></p>
<p>点击【Windows】，找到【x64 Installer】，点击后面的链接下载</p>
<p><a class="download_btn" title="该资源来源于网络如有侵权,请联系删除." href="https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe" target="_blank" rel="noopener" data-bs-toggle="tooltip" data-bs-placement="top">JDK17下载地址</a></p>
<p>双击运行刚刚下载的exe文件，一直点击【下一步】即可</p>
<p>右键点击【此电脑】</p>
<p>点击【属性】</p>
<p>点击【高级系统设置】</p>
<p>点击【环境变量】</p>
<p>在【系统变量】这一栏下面点击【新建】，变量名和变量值分别是下面的第一行和第二行</p>
<pre class="prettyprint linenums">JAVA_HOME
C:\Program Files\Java\jdk-17
</pre>
<p>这个变量值就是你安装jdk的路径，如果你在安装时更改了jdk的安装路径或安装的不是jdk17这个版本，请自行更改</p>
<p>再次点击【新建】，变量名和变量值分别是下面的第一行和第二行</p>
<pre class="prettyprint linenums">CLASSPATH

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar</pre>
<p>双击【系统变量】这一栏中的【Path】,点击【新建】，输入下面这一行内容</p>
<pre class="prettyprint linenums">%JAVA_HOME%\bin</pre>
<p>再次点击【新建】输入下面这一行内容</p>
<pre class="prettyprint linenums">%JAVA_HOME%\jre\bin</pre>
<p>在打开的所有窗口都点击【确定】</p>
<p>打开cmd</p>
<p>输入下面这一行然后回车，检查解释器版本</p>
<pre class="prettyprint linenums">java -version</pre>
<p>输入下面这一行然后回车，检查编译器版本，注意解释器和编译器的版本要一致</p>
<pre class="prettyprint linenums">javac -version</pre>
<p>输入下面这一行然后回车，检查解释器启动是否正常</p>
<pre class="prettyprint linenums">Java</pre>
<p>输入下面这一行然后回车，检查编译器启动是否正常</p>
<pre class="prettyprint linenums">Javac</pre>
<p>如果出现java和javac版本不一致的情况可以尝试将【Path】中将刚配置好的jdk环境变量移至最上方</p>
<p>完成了jdk的安装和环境变量配置，接下来我们就需要去下载一个mc服务器核心，服务器核心虽多样但启动方式大同小异，本教程用spigot来演示mc服务器核心的启动</p>
<p><a class="links_btn" href="https://getbukkit.org/download/spigot" target="_blank" rel="noopener">Spigot官网地址</a></p>
<p>进入官网后选择一个版本下载即可，不同版本间的区别请自行百度</p>
<p>下载完成后我们新建一个纯英文的文件夹，并将服务器核心移至该文件夹内</p>
<p>打开文件夹</p>
<p>创建一个文本文档，名称自拟</p>
<p>打开这个文本文档，并且输入下面这行内容</p>
<pre class="prettyprint linenums">java -Xmxz最大内存分配g -Xms最小内存分配g -jar 服务器核心名.jar</pre>
<p>服务器分配内存看核心版本，游玩人数和服务器内mod的安装情况</p>
<p>如果2-3人游玩纯原版服不加mod最大内存分配2g最小分配1g即可</p>
<p>接下来我们保存并关闭该文本文档、</p>
<p>将改文本文档的后缀改为下面这行内容</p>
<pre class="prettyprint linenums">.bat</pre>
<p>这样，文本文档就变成了可执行文件，打开时系统就会调用cmd.exe执行它</p>
<p>双击运行该文件，等待显示启动失败后关闭窗口</p>
<p>启动失败是因为我们没有同意协议</p>
<p>点击打开新生成的【eula.txt】</p>
<p>将文件内的【eula=false】改为</p>
<pre class="prettyprint linenums">eula=true</pre>
<p>这样，我们就同意了服务器的启动协议</p>
<p>再次双击运行该bat文件</p>
<p>等待服务器启动程序运行完成</p>
<p>启动完成后我们还要学会怎么关闭服务器，可以选择在cmd窗口内同时按下CTRL键和C键，也可以选择在cmd窗口下方输入下面这行命令</p>
<pre class="prettyprint linenums">stop</pre>
<p>这样我们就可以自由开关我们的mc服务器了</p>
<p>服务器世界存档是【world】这个文件夹</p>
<p>服务器下界存档是【world_nether】这个文件夹</p>
<p>服务器末地存档是【world_the_end】这个文件夹</p>
<p>服务器配置文件是【server.properties】这个文件，可以用记事本编辑。关闭玩家正版验证，设置服务器地图种子，设置最大玩家数量，设置出生点保护半径等操作都需要修改该文件</p>
<p>如果你没有公网IP，外部网络是无法访问你这台服务器的，所以要配置内网穿透。</p>
<p>网上的内网穿透有很多，可自行选择，这里就不再细讲，只推荐几个比较好用的内网穿透</p>
<p><a class="links_btn" href="https://www.openfrp.net" target="_blank" rel="noopener">OpenFrp官网</a></p>
<p><a class="links_btn" href="https://www.fgnwct.com" target="_blank" rel="noopener">飞鸽内网穿透官网</a></p>
<p><a class="links_btn" href="https://www.natfrp.com/" target="_blank" rel="noopener">SkauraFrp官网</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.from0to1.top/144.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>利用Ubuntu搭建Minecraft服务器</title>
		<link>https://www.from0to1.top/141.html</link>
					<comments>https://www.from0to1.top/141.html#respond</comments>
		
		<dc:creator><![CDATA[雾朦Official]]></dc:creator>
		<pubDate>Mon, 24 Jul 2023 01:45:16 +0000</pubDate>
				<category><![CDATA[服务器]]></category>
		<category><![CDATA[Minecraft]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[游戏服务器]]></category>
		<guid isPermaLink="false">https://from0to1.top/?p=141</guid>

					<description><![CDATA[这是一篇关于在linux_ubunt上架设mc服务器的文章 ——————本篇中的符号—————— “&#60;&#60;”和”&#62;&#62;”无实意，中间的为代码 红色为主命令 紫色为辅命令 绿色为按键 —————常用的快捷键————— ‘start‘键+’空格‘键 ###切换输入法 ‘ctrl‘键+’shift‘键+’c‘键 ###复制 ‘ctrl‘键+’shift‘键+’v‘键 ###粘贴 ‘t [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>这是一篇关于在linux_ubunt上架设mc服务器的文章</p>
<p><span style="color: #993300;">——————本篇中的符号——————</span></p>
<p>“&lt;&lt;”和”&gt;&gt;”无实意，中间的为代码</p>
<p><span style="color: #ff0000;">红色为主命令</span></p>
<p><span style="color: #800080;">紫色为辅命令</span></p>
<p><span style="color: #008000;">绿色为按键</span></p>
<p><span style="color: #993300;">—————常用的快捷键—————</span></p>
<p><span style="color: #008000;">‘start‘键</span>+<span style="color: #008000;">’空格‘键</span></p>
<p>###切换输入法</p>
<p><span style="color: #008000;">‘ctrl‘键</span>+<span style="color: #008000;">’shift‘键</span>+<span style="color: #008000;">’c‘键</span></p>
<p>###复制</p>
<p>‘<span style="color: #008000;">ctrl‘键</span>+<span style="color: #008000;">’shift‘键</span>+<span style="color: #008000;">’v‘键</span></p>
<p>###粘贴</p>
<p><span style="color: #008000;">‘tab’键</span></p>
<p>###自动补全代码</p>
<p><span style="color: #008000;">‘上方向’键</span></p>
<p><span style="color: #000000;">###上一句输入的代码（可以追溯到很久之前的代码‘下方向‘键可以看输入该条代码之后输入的代码</span></p>
<p><span style="color: #993300;">—————jdk的安装—————</span></p>
<p>最近看到很多刚入门的小白卡在了java-jdk的安装上，故单独分出一节来详细地讲讲</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo passwd root&gt;&gt;</span></p>
<p>###创建一个root账号，创建时密码即为安装系统时所设置的开机密码</p>
<p><span style="color: #ff0000;">&lt;&lt;su&gt;&gt;</span></p>
<p>###进入管理员模式，这样可以省去后面输密码的麻烦事，输入的密码即为刚才所设置的root密码，如果在命令行前出现了“root“则成功开启管理员模式，而且后面需要root权限的命令前面无需再加“sudo”，当然也可以选择不这么做</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo apt install default-jdk&gt;&gt;</span></p>
<p>###安装java-jdk，环境变量的配置请看下面的官网安装，其实如果只运行mc服务器的话，安装jre也够了<span style="color: #800080;">&lt;&lt;sudo apt install default-jre&gt;&gt;</span>安装jre，不过如果之后用到开发工具的话再安装jdk也是麻烦事，推荐直接安装jdk，反正jdk也没比jre大多少</p>
<p>如果你安装失败也可以选择官网安装</p>
<p>本教程以最新版本的java20为例展示安装过程</p>
<p>进入jdk官网<span style="color: #0000ff;"><a style="color: #0000ff;" href="https://www.oracle.com/cn/java/technologies/downloads/">https://www.oracle.com/cn/java/technologies/downloads/</a></span></p>
<p>点击linux（一般默认是linux）</p>
<p>如果你是64位电脑用户点击下载64位电脑压缩文档（x64 Compressed Archive）</p>
<p>当然，如果你是32位电脑用户请下载更低版本的java，如java8</p>
<p>如果你是单板开发板用户请下载ARM版压缩文件（ARM64 Compressed Archive）</p>
<p>附下载链接</p>
<p>【ARM64 压缩存档 181.15 MB</p>
<p><span style="color: #0000ff;">https://download.oracle.com/java/20/latest/jdk-20_linux-aarch64_bin.tar.gz</span> 】</p>
<p>【x64 压缩存档 182.69 MB</p>
<p><span style="color: #0000ff;">https://download.oracle.com/java/20/latest/jdk-20_linux-x64_bin.tar.gz </span>】</p>
<p>点击后面的下载链接后后安静等待下载即可</p>
<p>文件一般默认下载到【下载】文件夹下</p>
<p>将下载的文件复制到主目录即可（可视化页面下<span style="color: #008000;">鼠标左键</span>即可操作，非可视化需要用到mv命令）</p>
<p>之后需要对该文件进行解压</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo tar -zxvf jdk-20_linux-x64_bin.tar.gz&gt;&gt;</span></p>
<p>###不同版本的视文件名称而定，即修改<span style="color: #800080;">&lt;&lt;sudo tar -zxvf 文件名称&gt;&gt;</span>中的“文件名称“为自己版本java压缩文件所解压出来的名称即可，这时如果不想打名称的话可以<span style="color: #800080;">&lt;&lt;ls&gt;&gt;</span>如果不在主目录下则<span style="color: #800080;">&lt;&lt;cd /home/你的名字/&gt;&gt;</span>(注意这里有一个空格，”你的名字“即为你在安装系统时给你电脑所命的名字)然后再进行<span style="color: #800080;">&lt;&lt;ls&gt;&gt;</span></p>
<p>即可显示文件名然后按开头所讲的方法复制即可</p>
<p><span style="color: #800080;">&lt;&lt;sudo mkdir /usr/local/java&gt;&gt;</span></p>
<p>###在/usr/local/目录下创建java文件夹方便后续下载多个版本java时归类</p>
<p><span style="color: #800080;">&lt;&lt;sudo mv /home/你的名字/jdk-20.0.1/ /usr/local/java/&gt;&gt;</span></p>
<p>###将解压出来的java文件移动到/usr/local/java目录下（如果用的不同版本只需要修改<span style="color: #800080;">&lt;&lt;sudo mv /home/你的名字 /文件名称/ /usr/local/java/&gt;&gt;</span>“你的名字“即安装系统时所命的名字，“文件名称“为自己版本java压缩文件所解压出来的名称即可，文件名称的查看需要用到”ls“，具体使用方法已经在刚刚讲过）</p>
<p><span style="color: #ff0000;">&lt;&lt;cd /usr/local/java/&gt;&gt;</span></p>
<p><span style="color: #ff0000;">&lt;&lt;ls&gt;&gt;</span></p>
<p>###检查java文件是否成功被移动到该文件夹内，如果报错，请检查上面的步骤是否操作正确</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo apt install vim&gt;&gt;</span></p>
<p>###下载vim编辑器，出现“你希望继续执行吗“之后输入<span style="color: #ff0000;">&lt;&lt;Y&gt;&gt;</span>继续安装，之后等待安装完成即可</p>
<p><span style="color: #ff0000;">&lt;&lt;cd ~&gt;&gt;</span></p>
<p><span style="color: #ff0000;">&lt;&lt;vim .bashrc&gt;&gt;</span></p>
<p>###为java配置环境变量</p>
<p>进入vim后按下<span style="color: #008000;">‘i’键</span>进入编辑模式，在起始位置按下<span style="color: #008000;">‘enter’键</span>创建新的一行然后输入</p>
<p><span style="color: #ff0000;">&lt;&lt;export JAVA_HOME=/usr/local/java/jdk20.0.1</span></p>
<p><span style="color: #ff0000;">export JRE_HOME=/usr/local/java/jdk20.0.1/jre</span></p>
<p><span style="color: #ff0000;">export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib</span></p>
<p><span style="color: #ff0000;">export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin&gt;&gt;</span></p>
<p>（不同版本</p>
<p><span style="color: #800080;">&lt;&lt;export JAVA_HOME=/usr/local/java/文件名称</span></p>
<p><span style="color: #800080;">export JRE_HOME=/usr/local/java/文件名称/jre</span></p>
<p><span style="color: #800080;">export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib</span></p>
<p><span style="color: #800080;">export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin&gt;&gt;</span></p>
<p>修改其中的“文件名称“为自己版本java压缩文件所解压出来的名称即可）</p>
<p>然后按<span style="color: #008000;">‘esc‘键</span>退出编辑模式之后输入<span style="color: #ff0000;">&lt;&lt;:&gt;&gt;</span>进入命令模式，最后输入<span style="color: #ff0000;">&lt;&lt;wq&gt;&gt;</span>保存并退出（注意是在“:“后面输入”wq“，”:“不能丢）</p>
<p><span style="color: #ff0000;">&lt;&lt;source .bashrc&gt;&gt;</span></p>
<p>###使刚才所配置的环境变量生效</p>
<p><span style="color: #ff0000;">&lt;&lt; java -version&gt;&gt;</span></p>
<p>###测试Java是否安装成功，安装不同版本的Java所显示的内容不一样</p>
<p>###java20安装所显示内容如下</p>
<p>###    java version &#8220;20.0.1&#8221; 2023-04-18</p>
<p>###    Java(TM) SE Runtime Environment (build 20.0.1+9-29)</p>
<p>###    Java HotSpot(TM) 64-Bit Server VM (build 20.0.1+9-29, mixed mode, sharing)</p>
<p><span style="color: #993300;">—————搭建准备—————</span></p>
<p>经过上面的操作，我们已经完成了ubuntu中jdk的安装，接下来，我们就该开始mc服务器的配置了</p>
<p>首先你要确定你是用公网IP和内网穿透</p>
<p>公网IP为了确保安全性需要添加一个新用户进行操作，这样即使账号被打下来了，因为权限不足，也不会造成原用户目录的信息泄露</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo service vsftpd start&gt;&gt;</span></p>
<p>###安装vsftpd，这是一款轻量级的ftp服务软件（mc服务器客户端与服务端就是ftp通信的）</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo service vsftpd screen&gt;&gt;</span></p>
<p>###安装screen，screen可以切换多个终端会话，而且可以使终端关闭时，程序仍然运行</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo vim /etc/vsftpd.conf&gt;&gt;</span></p>
<p>###配置vsftpd，用vim编辑</p>
<p>进入vsftpd配置文件后按下<span style="color: #008000;">‘i’键</span>进入编辑找到“write_enable=yes“这一行，将其前面的”#”删除，再在末位置按下<span style="color: #008000;">‘enter’键</span>创建新的一行然后输入</p>
<p><span style="color: #ff0000;">&lt;&lt;pasv_enable=yes</span></p>
<p><span style="color: #ff0000;">pasv_min_port=10000</span></p>
<p><span style="color: #ff0000;">pasv_max_port=10099&gt;&gt;</span></p>
<p>（配置ftp被动模式传输端口10000-10099）然后按<span style="color: #008000;">‘esc‘键</span>退出编辑模式之后输入<span style="color: #ff0000;">&lt;&lt;:&gt;&gt;</span>进入命令模式，最后输入<span style="color: #ff0000;">&lt;&lt;wq&gt;&gt;</span>保存并退出（注意是在“:“后面输入”wq“，”:“不能丢）</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo ufw allow proto tcp from any to any port 10000:10099&gt;&gt;</span></p>
<p>###打开ftp被动模式传输端口10000-10099</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo ufw allow 21&gt;&gt;</span></p>
<p>###打开ftp服务端口，便于后期远程向服务器传输文件，便于维护，无加密功能，而且在云服务器上使用时可能出现一些问题</p>
<p><span style="color: #800080;">&lt;&lt;sudo ufw allow 22&gt;&gt;</span></p>
<p>###打开sftp服务端口，便于后期远程向服务器传输文件，便于维护，如果上面的ftp用不了，而且多次重启防火墙<span style="color: #800080;">&lt;&lt;sudo ufw disable&gt;&gt;&lt;&lt;sudo ufw enable&gt;&gt;</span>和重启vsftp<span style="color: #800080;">&lt;&lt;service vsftpd restart&gt;&gt;</span>无果，就用这个sftp</p>
<p><span style="color: #800080;">&lt;&lt;sudo ufw allow 22&gt;&gt;</span></p>
<p>###打开ssh服务端口，方便后期远程控制服务器，便于维护</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo ufw allow 25565&gt;&gt;</span></p>
<p>###打开mc服务端口</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo ufw enable&gt;&gt;</span></p>
<p>###启用防火墙</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo ufw status&gt;&gt;</span></p>
<p>###检查打开的端口，确保刚才几步正确</p>
<p>接下来就是配置虚拟内存，云服务器通常不自带虚拟内存，必须配置以防服务器崩溃</p>
<p><span style="color: #ff0000;">&lt;&lt;free -m&gt;&gt;</span></p>
<p>###查看内存使用情况，单位为mb，（men物理内存)（swap虚拟内存）（total总大小）（used使用量）（free剩余量）</p>
<p><span style="color: #ff0000;">&lt;&lt;cd /&gt;&gt;</span></p>
<p>###进入共享根目录</p>
<p><span style="color: #ff0000;">&lt;&lt;mkdir swap&gt;&gt;</span></p>
<p>###创建放虚拟内存配置的文件夹</p>
<p><span style="color: #ff0000;">&lt;&lt;cd swap/&gt;&gt;</span></p>
<p>###进入swap文件夹</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo dd if=/dev/zero of =swapfile bs=单位 count=内存大小&gt;&gt;</span></p>
<p>###设置虚拟内存的大小，推荐将虚拟内存的值改为物理内存的1.5-3倍，单位设为1，则虚拟内存的单位大小就是b；单位设为1024，则虚拟内存单位大小为kb；单位设为1048576则虚拟内存单位大小为mb；单位设为1073741824，则虚拟内存单位大小为gb</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo mkswap swapfile&gt;&gt;</span></p>
<p>###转换文件类型</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo swapon swapfile&gt;&gt;</span></p>
<p>###加载文件</p>
<p><span style="color: #ff0000;">&lt;&lt;free -m&gt;&gt;</span></p>
<p>###检查是否设置成功</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo vim /etc/fstab&gt;&gt;</span></p>
<p>###用vim打开系统静态信息信息文件，修改其内容可以做到重启时虚拟内存被加载</p>
<p>进入vim后按下<span style="color: #008000;">‘i’键</span>进入编辑模式，在末位置按下<span style="color: #008000;">‘enter’键</span>创建新的一行然后输入</p>
<p><span style="color: #ff0000;">&lt;&lt;swap swap defaults 0 0&gt;&gt;</span></p>
<p>然后按‘esc‘键退出编辑模式之后输入<span style="color: #ff0000;">&lt;&lt;:&gt;&gt;</span>进入命令模式，最后输入<span style="color: #ff0000;">&lt;&lt;wq&gt;&gt;</span>保存并退出</p>
<p>接下来，我们就需要去下载一个服务器核心，服务器核心是多种多样的，但启动方式大同小异，我们可以在ubuntu上用wegt命令下载，可视化的ubuntu上也可以直接用浏览器下载，也可以选择在其他电脑上下载后用u盘传输，也可以用我们刚才所打开的ftp或sftp传输（推荐云服务器使用）</p>
<p>下载完后你可以选择在/opt/目录下新建一个文件夹存放（使用内网穿透的服务器推荐这么做），也可以选择放在刚才我们所创建用户的主目录下新建一个文件夹存放（使用公网ip的服务器，这样做更安全）（尽量不要让在文件夹中，防止出现报错）</p>
<p><span style="color: #993300;">—————开始搭建—————</span></p>
<p><span style="color: #ff0000;">&lt;&lt;cd 文件夹路径&gt;&gt;</span></p>
<p>###进入你刚刚为存放服务器核心的文件夹的目录下（不要进入文件夹，让服务器文件和启动文件分开，更容易管理），不小心进入了文件夹内可以直接<span style="color: #800080;">&lt;&lt;cd ..&gt;&gt;</span>返回上一级</p>
<p><span style="color: #800080;">&lt;&lt;sudo tar -zxvf 文件名称&gt;&gt;</span></p>
<p>###如果你下载下来的是压缩包，则先解压</p>
<p><span style="color: #ff0000;">&lt;&lt;touch 文件名称.sh&gt;&gt;</span></p>
<p>###创建启动文件，文件名称自拟，好记即可</p>
<p><span style="color: #ff0000;">&lt;&lt;vim 文件名称.sh&gt;&gt;</span></p>
<p>###用vim编辑该文件</p>
<p>进入vim后按下<span style="color: #008000;">‘i’键</span>进入编辑模式，在起始位置按下<span style="color: #008000;">‘enter’键</span>创建新的一行然后输入</p>
<p><span style="color: #ff0000;">&lt;&lt;cd 文件夹名称</span></p>
<p><span style="color: #ff0000;">java -xms最小分配内存G -xmx最大分配内存G -核心名称.jar&gt;&gt;</span></p>
<p>然后按<span style="color: #008000;">‘esc‘键</span>退出编辑模式之后输入<span style="color: #ff0000;">&lt;&lt;:&gt;&gt;</span>进入命令模式，然后输入<span style="color: #ff0000;">&lt;&lt;wq&gt;&gt;</span>保存并退出(“文件夹名称”就是存放服务器核心的文件夹，分配最小和最大内存多少g看你电脑的配置，如果只是2-4人玩原版，不加mod，可以直接设置最小为1，最大为2)</p>
<p><span style="color: #ff0000;">&lt;&lt;sh 启动文件名称.sh&gt;&gt;</span></p>
<p>###运行服务器启动文件</p>
<p>服务器首次启动会失败，因为我们没有同意服务器的协议</p>
<p><span style="color: #ff0000;">&lt;&lt;vim 文件夹名称/eula.txt&gt;&gt;</span></p>
<p>###进入服务器核心文件夹，用vim打开eula.txt</p>
<p>进入vim后按下<span style="color: #008000;">‘i’键</span>进入编辑模式，找到最下面那一行，将“eula=false“改为“eula=true” 然后按<span style="color: #008000;">‘esc‘键</span>退出编辑模式之后输入<span style="color: #ff0000;">&lt;&lt;:&gt;&gt;</span>进入命令模式，最后输入<span style="color: #ff0000;">&lt;&lt;wq&gt;&gt;</span>保存并退出</p>
<p><span style="color: #ff0000;">&lt;&lt;sh 启动文件名称.sh&gt;&gt;</span></p>
<p>###再次启动服务器</p>
<p>按下<span style="color: #008000;">‘ctrl’键</span>+<span style="color: #008000;">‘c’键</span>停止服务器</p>
<p><span style="color: #ff0000;">&lt;&lt;vim 文件夹名称/server.properties&gt;&gt;</span></p>
<p>###用vim打开服务器核心文件夹下的服务器配置文件</p>
<p>进入vim后按下<span style="color: #008000;">‘i’键</span>进入编辑模式，找到”online-mod=true”改为”online-mode=false”关闭正版验证，这样就可以使用非正版账号进行登录了，其余的配置请自行百度</p>
<p>按<span style="color: #008000;">‘esc‘键</span>退出编辑模式之后输入<span style="color: #ff0000;">&lt;&lt;:&gt;&gt;</span>进入命令模式，最后输入<span style="color: #ff0000;">&lt;&lt;wq&gt;&gt;</span>保存并退出</p>
<p>之后每次开启服务器只需要进入文件夹<span style="color: #ff0000;">&lt;&lt;sh 启动文件名.sh&gt;&gt;</span></p>
<p>如果你用的是有公网IP的服务器，那么这个教程已经结束了，登录服务器只需要在mc的多人游戏中输入IP地址就可以登录服务器，如果你的服务器没有公网IP，那么请看下面的内网穿透教程</p>
<p><span style="color: #993300;">—————配置内网穿透—————</span></p>
<p>本教程将以openfrp为例</p>
<p>openfrp官网网址<span style="color: #0000ff;"><a style="color: #0000ff;" href="https://console.openfrp.net/">https://console.openfrp.net/</a></span></p>
<p>注册，登录完成后点击【个人中心】，完成实名认证（也可以选择不实名认证，但是那样你只能使用中国香港或者海外的节点，无法使用大陆节点，延迟会极高</p>
<p>点击【创建隧道】，选择一个国内节点，动态IP会出现解析延迟，可能导致卡顿甚至掉线的情况，推荐购买会员，这可比你自己去买云服务器搭建内网穿透便宜多了，然后给的你的隧道起一个比较明显的名字，隧道类型选择tcp，远程端口随机即可，本地端口是你mc服务器的端口，如果你没改过的话，默认为25565，最后点击【提交】</p>
<p>点击【软件下载】再点击【Linux】选择你服务器的架构，下载即可，下载的一些方式在上面已经讲过，这里就不再多说，下载完成后推荐将该文件与服务器启动文件放在一起</p>
<p><span style="color: #ff0000;">&lt;&lt;sudo tar -zxvf 文件名称&gt;&gt;</span></p>
<p>###解压该文件</p>
<p><span style="color: #ff0000;">&lt;&lt;chmod 755 解压出的文件名称&gt;&gt;</span></p>
<p><span style="color: #ff0000;">&lt;&lt;ls -ls 解压出来的文件名称&gt;&gt;</span></p>
<p>###设置该文件权限</p>
<p><span style="color: #ff0000;">&lt;&lt;./解压出的文件名称&gt;&gt;</span></p>
<p>###运行该文件</p>
<p>运行后会提示输入密钥，密钥的获取需要回到openfrp官网，点击<span style="color: #000000;">【首页】</span>在带有“鉴定“这一栏的最下方点击“访问密钥”旁边的【立即查看】</p>
<p><span style="color: #993300;">—————结尾—————</span></p>
<p>利用Ubuntu搭建Microsoft服务器的教程就此结束，如果你还想看Windows系统的Microsoft服务器搭建教程，请移步【利用Windows系统搭建Microsoft服务器】</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.from0to1.top/141.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>树莓派搭建服务器，自己开网站</title>
		<link>https://www.from0to1.top/7.html</link>
					<comments>https://www.from0to1.top/7.html#respond</comments>
		
		<dc:creator><![CDATA[captain]]></dc:creator>
		<pubDate>Tue, 13 Jun 2023 06:23:09 +0000</pubDate>
				<category><![CDATA[服务器]]></category>
		<category><![CDATA[网站]]></category>
		<guid isPermaLink="false">http://192.168.66.8/?p=7</guid>

					<description><![CDATA[前言 本人也是完全零基础萌新，此教程是我根据CSDN上其他大佬的博客和自己摸索研究出来的，期间踩了挺多的坑，浪费了很多时间，把这些经验分享出来，希望能帮助到你，本文参考了CSDN上copcin大佬博客，链接会放在文章底部 1、准备事项 首先你需要一台树莓派电脑（云服务器也可以），zerow，zero2w，树莓派4b，树莓派400之类的，由于溢价严重，我只能选择价格相对便宜一点的树莓派400，我在某 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1 class="h-title" style="text-align: center;">前言</h1>
<p>本人也是完全零基础萌新，此教程是我根据CSDN上其他大佬的博客和自己摸索研究出来的，期间踩了挺多的坑，浪费了很多时间，把这些经验分享出来，希望能帮助到你，本文参考了CSDN上copcin大佬博客，链接会放在文章底部</p>
<div class="link-title wow rollIn">1、准备事项</div>
<p>首先你需要一台树莓派电脑（云服务器也可以），zerow，zero2w，树莓派4b，树莓派400之类的，由于溢价严重，我只能选择价格相对便宜一点的树莓派400，我在某宝买的价格是620<br />
在选的时候一定要选单主机，防止被坑（套装加了点官方配件价格直线上升）你还要去买一根树莓派官网的原装供电线（5V3A）的，一张闪雷的TF卡当做硬盘（杂牌会让你的服务器变得很不稳定哦）我选择的是128g，大小看个人预算，一块可以接HDMI的屏幕（我选择的是200多的七寸屏幕，作为服务器的话无需1080p）一个读卡器（3.0会让你烧录系统更快）选择的不是树莓派400的话，你还需要购买外壳和风扇，不然温度会变得很高，还有一根 Micro-HDMI 转 HDMI（400 用）或者一根 Mini-HDMI 转 HDMI（Zero 2 W 及 Zero W 用）还有一只有线键盘（必须要有线）到这里，服务器硬件已经准备完毕了</p>
<div class="link-title wow rollIn">2、操作系统的安装</div>
<p>安装前，我们需要准备的软件有：balenaEtcher，<a class="links_btn" href="https://mirrors.tuna.tsinghua.edu.cn/github-release/balena-io/etcher/LatestRelease/" target="_blank" rel="noopener">下载链接</a>，打开链接选择文件名称为balenaEtcher-Portable-1.18.6.exe下载运行即可（大小为132.9 MB，本文有时效性，如更改请自行判断）<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-144630.png" alt="下载balenaEtcher" /><br />
然后下载Ubuntu server镜像，<a class="links_btn" href="https://ubuntu.com/download/raspberry-pi" target="_blank" rel="noopener">下载链接</a>，打开连接后下滑到Ubuntu server下载页面，树莓派400或者4b点Download 64-bit<br />
其他型号的选择Download 32-bit<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-150119.png" alt="下载ubuntu系统" /><br />
<strong>下载完后先进行解压，解压后文件是.img就为正常</strong><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-150558.png" alt="解压文件" /><br />
<strong>运行刚刚下载的balenaEtcher，选择从文件烧录</strong><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-150705.png" alt="烧录系统" /><br />
<strong>选择刚刚解压的img系统映像文件，然后点击打开</strong><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-151455.png" alt="选择系统映像" /><br />
把你购买的TF卡插入读卡器然后连接电脑，<br />
点击选择目标磁盘，找到你的TF卡（这一步要谨慎操作！否则其他盘会被格式化！）<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-151748.png" alt="选择目标TF卡" /><br />
<strong>选定后点击现在烧录</strong><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-151849.png" alt="" /><br />
<strong>等待烧录成功（有概率烧录失败，此时选择重新烧录一次，一直失败就得换卡了）</strong><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-152005.png" alt="等待烧录" /><br />
<strong>这个界面为成功，可以拔出你的TF卡，插到树莓派上了</strong><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-152144.png" alt="烧录成功" /></p>
<div class="link-title wow rollIn">3、ssh连接和联网初始化</div>
<p>把树莓派接上电源和屏幕等待，此时不要进行任何输入，第一次出现ubuntu login：时不要输入，输入也会提示密码错误，过一会满屏都是代码最底下显示up多少second时先回车一次，ubuntu login会弹出来，此时再进行登录，先输入一次ubuntu回车（这是账号），Password后面再输入ubuntu（这是初始密码密码，不会显示你输入多少个盲打就行了）<br />
current password：（此时再输入一次ubuntu）<br />
new password：（这是让你设置新密码）<br />
ret new password：（确认你的密码）<br />
下次登录时输入ubuntu和你自己设置的密码就能登录了<br />
如果最底下出现ubuntu@ubuntu:~$ _<br />
恭喜你登录成功了！<br />
然后输入以下代码（命令一条一条输）</p>
<pre class="prettyprint linenums">sudo -i
nano /etc/netplan/50-cloud-init.yaml</pre>
<p>通过nano编辑器打开这个文件后在最下面添加以下代码，一定要注意缩进！非常严格！</p>
<h3 class="h-title">（复制我的代码会是中文符号，所有代码都是全英文的！！！一定要改为英文）</h3>
<p>WIFI名和密码填真实的，否则会连接不上，注意大小写</p>
<pre class="prettyprint linenums">    wifis:
          wlan0:
                 dhcp4: true
                 optional: true
                 access-points:
                      &quot;wifi名称&quot;:
                              password:
                             &quot;wifi密码&quot;</pre>
<p>输入完成后，一定要仔细检查<br />
可对比图片缩进<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-05-27-190643.png" alt="1" /><br />
然后同时按下ctrl+x保存，按y确认，再回车一次返回终端<br />
然后输入以下代码，输一行回车一次</p>
<pre class="prettyprint linenums">systemctl enable wpa_supplicant
systemctl start wpa_supplicant
netplan generate
systemctl daemon-reload
netplan apply</pre>
<p>执行后如果有报错，确认代码没出错，就需要回上一步设置WIFI密码检查你的缩进和符号<br />
稍微等待几秒，如果在热点或者路由器下发现了树莓派，恭喜你！这时候你的树莓派就初始化完成了啦！可以关闭显示器了</p>
<div class="link-title wow rollIn">4、ssh连接树莓派</div>
<p>SSH，是一种远程连接协议。我们这里使用 SSH，一方面是为了节省显示器的电费（比树莓派贵多了），还有一方面是为了方便设置树莓派（比如换源）<br />
<a class="links_btn" href="https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html" target="_blank" rel="noopener">下载链接</a>，打开链接下载64-bit x86<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-161938.png" alt="下载PuTTY" /><br />
安装过程就带过了，一路确定就行<br />
打开你的路由或者热点设置界面，找到树莓派的IP地址，名称为ubuntu<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/QQ图片20230428152220-e1685181303379.jpg" alt="查看树莓派IP地址" /><br />
<strong>打开PuTTY输入树莓派的IP地址，然后点击open</strong><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-162620.png" alt="连接树莓派" /><br />
<strong>点击Accept（有概率弹不出来，遇到这个问题只能重装系统解决）</strong><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-28-152821.png" alt="点击Accept" /><br />
输入ubuntu回车后输入你的密码（所有输入密码操作都是不显示的）出现下图界面就成功了，恭喜你，完成了关键的一步（Accept弹不出来，我又要重刷系统和写配置）</p>
<div class="link-title wow rollIn">5、换源</div>
<p>等会我们会下载很多软件，软件都需要从国外的软件源下载。由于国外的服务器非常慢，所以我们要换成国内源<br />
国内源与国外源的软件一模一样，所以不需要担心换了源之后软件无法下载<br />
PuTTY输入以下命令（一行回车一次）：</p>
<pre class="prettyprint linenums">sudo -i
nano /etc/apt/sources.list</pre>
<p>把文件里的每一行前面都加上#注释掉（按下方向键向下移动光标，已经加过的不用了）然后去这个链接拿清华源（请确认你的Ubuntu版本和清华源上的版本是一样的，不一样会无法下载！）<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-28-154417.png" alt="添加注释" /><br />
<a class="links_btn" href="https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu-ports/" target="_blank" rel="noopener">清华源链接</a><br />
选择你的版本复制后在PuTTY右键粘贴到刚才打开的配置文件就行了<br />
这样就成功把Ubuntu中的软件源换到了国内的清华源，同时按ctrl+x保存，按y确认后回车一次<br />
然后输入一下代码更新软件源：<br />
<pre class="prettyprint linenums">sudo apt-get update &amp;&amp; apt-get upgrade</pre><br />
出现Do you want to continue？[Y/n]时输入y回车，然后等待更新完成<br />
当你的 PuTTY 出现这个界面，按下 Tab 再回车（一般情况遇到都先Tab在回车）<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-28-155346.png" alt="先按tab再按回车" /><br />
当你的Ubuntu重新出现这个，恭喜你换源成功！<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-170532.png" alt="终端" /></p>
<div class="link-title wow rollIn">6、服务器LNMP安装</div>
<p>安装LNMP环境</p>
<h3 class="h-title">安装nginx</h3>
<p>先安装依赖<br />
<pre class="prettyprint linenums">sudo apt install -y gcc zlib1g-dev libpcre3 libpcre3-dev openssl libssl-dev</pre><br />
等待安装完成<br />
然后输入<br />
<pre class="prettyprint linenums">sudo apt install -y nginx</pre><br />
输入命令启动nginx<br />
<pre class="prettyprint linenums">sudo service nginx start</pre><br />
使用在同一个局域网下的设备用浏览器访问树莓派的IP，如果看到下图界面就代表成功了（云服务器要去安全组放行入方向的80端口）<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-26-135536.png" alt="访问成功" /></p>
<h3 class="h-title">安装mysql数据库</h3>
<pre class="prettyprint linenums">sudo apt install -y mysql-server</pre>
<h3 class="h-title">安装PHP</h3>
<p>这里我是安装PHP8.1版本，如果你想安装不同的版本只需要把8.1换成其他版本就行<strong>（如果是arm架构的话你的镜像里面PHP版本暂时最高只有7.4，请将这条命令里的8.1改为7.4再使用）</strong><br />
<pre class="prettyprint linenums">sudo apt-get install php8.1-cli php8.1-dev php8.1-fpm php8.1-cgi php8.1-mysql php8.1-gd php8.1-curl php8.1-memcache</pre><br />
如果执行失败报错找不到软件</p>
<pre class="prettyprint linenums">sudo apt-get install -y language-pack-en-base
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
sudo apt-get update</pre>
<p>此时如果还是报错执行代码</p>
<pre class="prettyprint linenums">apt install software-properties-common
apt update</pre>
<p>然后再安装PHP</p>
<h3 class="h-title">配置nginx支持PHP</h3>
<p><pre class="prettyprint linenums">sudo nano /etc/nginx/sites-enabled/default</pre><br />
在这里添加index.php<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-26-141924.png" alt="添加index.php" /><br />
然后解开下图这几条的注释<br />
注意划线标记的地方PHP后面改成你自己的版本号，我这里用的是8.1<br />
图片左下角回扩不要忘记解除注释<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-26-142228.png" alt="解开注释" /><br />
Ctrl+x按y回车保存就行<br />
输入命令检查是否有误，然后重启</p>
<pre class="prettyprint linenums">nginx -t
sudo service nginx restart</pre>
<p>接下来创建一个PHP探针测试一下<br />
<pre class="prettyprint linenums">touch /var/www/html/test.php</pre><br />
再输入echo &#8220;&lt;删?p删hp ph删pinfo(删); ?&gt;&#8221; &gt;&gt; /var/www/html/test.php（把里面的删字删掉再输入命令）<br />
使用局域网内的其他机器访问树莓派的IP192.168.133.8/test.php<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-26-175453.png" alt="php链接成功" /><br />
出现这个界面，恭喜你！服务器已经架设完毕了，内网穿透后便可访问到你，不过我们还要部署WordPress，继续加油吧！</p>
<h2 class="h-title">部署WordPress</h2>
<p>输入命令进入到nginx的目录下<br />
<pre class="prettyprint linenums">cd /var/www</pre><br />
获取WordPress安装包（你看到这篇文章的时候可能这个就不是最新版了，输入链接在官网复制.tar.gz的下载链接）<a class="links_btn" href="https://cn.wordpress.org/download/#download-install" target="_blank" rel="noopener">wordpress下载</a><br />
<strong>右键点击.tar.gz</strong><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-185301.png" alt="下载wordpress" /><br />
<strong>右键点击复制链接</strong></p>
<p><img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-185441.png" alt="复制链接" /><br />
<strong>输入命令wget空格后面粘贴你复制的链接就行（换成你复制的链接）</strong><br />
<pre class="prettyprint linenums">wget https://cn.wordpress.org/latest-zh_CN.tar.gz</pre><br />
下载完成后在当前目录输入以下命令<br />
tar -zxvf 空格后面跟着你下载的WordPress压缩包名称</p>
<pre class="prettyprint linenums">tar -zxvf latest-zh_CN.tar.gz
ls</pre>
<p>此时解压完成后就出现WordPress文件夹了<br />
为了避免以后遇到权限不足，我们现在给他权限，很多教程都是将文件访问权限改成了777但是这样会很危险，我们使用另一种方法<br />
输入以下命令查看所有的用户组<br />
<pre class="prettyprint linenums">ps -aux</pre><br />
找到nginx的用户组（在我这里是www-data）<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/2023-05-28-153129-e1685259586683.png" alt="1" /><br />
记下这个用户组的名字后，输入命令</p>
<pre class="prettyprint linenums">cd /var/www
ls -l</pre>
<p>可以看到现在WordPress用户组是1006<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/-2023-04-22-095804-e1686563002530.png" alt="1" /><br />
接下来进行更改（如果你的nginx用户组不是www-data请将这段代码里的两个更换成你服务器上的用户组）</p>
<pre class="prettyprint linenums">sudo chown -R www-data:www-data /var/www/wordpress</pre>
<p>执行完成后再次输入ls -l此时会发现用户组已经更改为www-data了<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/-2023-04-22-100235-e1686561965511.png" alt="1" /></p>
<h2 class="h-title">7、nginx重定向网站目录</h2>
<p>现在去访问你的树莓派IP还是php探针的页面<br />
我们需要让nginx重新定向网站目录到WordPress<br />
输入命令<br />
<pre class="prettyprint linenums">sudo nano /etc/nginx/sites-enabled/default</pre><br />
打开这个文件后，将目录中的html改为wordpress如下图<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-26-180656.png" alt="重定向网站目录" /><br />
同时按Ctrl+x然后按y回车退出<br />
输入命令重启nginx服务器<br />
<pre class="prettyprint linenums">sudo service nginx restart</pre><br />
重启完成后再次访问树莓派的IP地址如果出现如下图，那么更改目录已经成功了，接下来只差安装<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/2023-04-21-194926-e1685182103147.png" alt="wordpress" /><br />
点击现在就开始会要求你填写数据库连接信息我们现在就去创建一个数据库，让WordPress能连接到</p>
<h2 class="h-title">8创建数据库</h2>
<p>输入命令以root权限登录MySQL数据库<br />
<pre class="prettyprint linenums">mysql -u root -p</pre><br />
让你输密码直接回车就行<br />
接下来我们需要创建一个用户来管理WordPress的数据库<br />
把单引号里的123456换成你自己要设置的密码（复制我的代码会是中文符号，所有代码都是全英文的！！！一定要改为英文）<br />
<pre class="prettyprint linenums">create user &#8216;wordpressuser&#8217; @&#8217;%&#8217; identified by &#8216;123456&#8217;;</pre><br />
MySQL里的命令结尾一定要带上；<br />
否则会卡住需要按ctrl+c退出<br />
创建了用户，我们还需要创建一个数据库给WordPress用<br />
输入命令创建一个叫WordPress的数据库<br />
<pre class="prettyprint linenums">CREATE DATABASE wordpressdb;</pre>（复制我的代码会是中文符号，所有代码都是全英文的！！！一定要改为英文）<br />
接下来，将WordPress db的所有权限给WordPress user管理<br />
输入命令</p>
<pre class="prettyprint linenums">grant all on wordpressdb.* to wordpressuser@&#039;%&#039;;</pre>
<p>（复制我的代码会是中文符号，所有代码都是全英文的！！！一定要改为英文）<br />
到这里就授权完成了输入quit退出mysql<br />
输入命令重启MySQL数据库<br />
service mysql restart 或 /etc/init.d/mysql restart<br />
这个时候再次回到浏览器刚刚访问的树莓派IP地址<br />
输入你刚才创建的数据库名和用户名<br />
你输入你创建的密码<br />
数据库主机不改<br />
表前缀不改<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/微信图片_20230527210110.png" alt="输入" /><br />
点击提交（有点不稳定，经常连接不上，多次重试无效后去更改数据库用户的密码再来大概率就能连接上）<br />
更改数据库用户密码的命令（单引号里面的username换成你设置的数据库用户名New password换成你要更改的密码）<br />
<pre class="prettyprint linenums">ALTER USER &#8216;user_name&#8217;@&#8217;%&#8217; IDENTIFIED BY &#8216;new_password&#8217;</pre><br />
一般改完第二次尝试连接就好了</p>
<p>完成这一步后，回到网页点击运行安装程序</p>
<p>按下后出现这个界面为正常，恭喜你就快成功了！<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-203528.png" alt="1" /><br />
接下来填写这些进行设置，密码推荐设置强密码保证安全，填写完检查邮箱不要出错<br />
确认完后，点击安装WordPress如下图<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/uuygyug.jpg" alt="" /><br />
<strong>如果弹出这个界面，代表你已经安装成功喽</strong><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-21-204137.png" alt="1" /><br />
点击登录输入你刚才创建的账号密码就可以进入后台啦</p>
<p>一切正常马上就可以看到这个界面，这里就是你的WordPress后台<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-28-181536.png" alt="1" /></p>
<h3 class="h-title"> （只能下载和上传2M大小文件的，想要上传更大的主题和插件，需要更改nginx和PHP的配置，推荐去csdn搜索解除php上传大小限制和nginx413）</h3>
<p><img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-22-100516-e1682677440478.png" alt="" /><br />
是不是以为到这里就结束了啦？<br />
现在这个网站只有和你在一个局域网内的人才能访问到，你难道不想公开出去让任何地方的人都能访问你的网站吗？<br />
这个时候我们就要安装内网穿透了</p>
<h2 class="h-title">9安装内网穿透</h2>
<p>什么是内网穿透？<br />
内网穿透是一种将局域网里的端口发布到公网访问的一种技术<br />
网络有分内网和公网，内网指的就是树莓派所在局域网，内网的内容只有连接上你的局域网才能访问。公网它指的是对每一位用户开放的网站，可以从任何地方访问。让自己的树莓派进入外网有2个方法：购买公网IP4与内网穿透。第一种方法我们可以排除，因为买不到，那我们只能用内网穿透了，内网穿透的好处是内网穿透服务器不在境内你的域名就可以不用备案，而且内网穿透还是免费的！</p>
<h3 class="h-title">（坏处是如果和你使用同一个内网穿透服务器的人，拿他的网站干了点坏事，可能导致你的域名一起被封！！！）</h3>
<p>这里我们要使用的内网穿透工具是sunny-ngrok，因为这一家可以免费自定义域名<br />
（现在不推荐了，访问慢，免费隧道无法使用了，推荐使用飞鸽内网穿透，不用实名！使用方法与这个区别不大，你看我的博客与飞鸽官方教程，大概就能明白）<br />
<a class="links_btn" href="https://www.fgnwct.com" target="_blank" rel="noopener">飞鸽内网穿透</a><br />
先去注册一个账号<a class="links_btn" href="https://ngrok.cc/" target="_blank" rel="noopener">sunny-ngrok</a><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-29-082341.png" alt="1" /><br />
需要实名认证一下，会收你一点费用，跟着他的实名步骤做就行<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-29-083408.png" alt="1" /><br />
<strong>实名后点隧道管理——开通隧道，鼠标拉到最下面选择美国Ngrok免费服务器</strong><br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-29-084052.png" alt="1" /><br />
点立刻购买——确定，隧道协议&#8211;选http（以后我会教你申请ssl证书更改nginx配置使用https）隧道名称&#8211;用来区分多个隧道的（可以就填美国服务器）<br />
前置域名&#8211;http://captain.5gzvip.91tunnel.com这个域名里的captain就是前置域名<br />
本地端口&#8211;127.0.0.1:80前面是你本地ip,:号后面填你要映射的端口这里不用改<br />
http验证用户名和http验证密码不要填，点确定添加就行<br />
然后来到隧道管理复制你刚刚购买的隧道ID（红色涂抹的地方）<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-29-085722.png" alt="1" /><br />
接下来我们要下载客户端安装倒树莓派上<a class="links_btn" href="https://www.ngrok.cc/download.html" target="_blank" rel="noopener">客户端下载</a>选择适合你服务器的版本（我的是树莓派400，所以选择arm 64）（使用云服务器的，请去查看你服务器的版本选择适合的）<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-29-090520.png" alt="1" /><br />
老样子右键你要下载的版本复制链接，然后去终端输入命令(wget空格后面跟你刚刚复制的链接，压缩包名称不一样就改成你那里的)<br />
<img decoding="async" src="https://www.from0to1.top/wp-content/uploads/2023/06/屏幕截图-2023-04-29-090858.png" alt="1" /></p>
<pre class="prettyprint linenums">sudo -i
cd /opt
wget https://www.ngrok.cc/sunny/linux_arm64.zip?v=2.1
mv &#039;linux_arm.zip?v=2.1&#039; linux_arm.zip
apt install unzip
unzip linux_arm.zip
ls
cd linux_arm64
screen -s sunny
./sunny clientid 你购买的隧道id</pre>
<p>先提权，cd到opt，下载压缩包，mv重命名压缩包，下载一个unzip，使用unzip解压，ls看一眼压缩包解压后的名称，cd进入这个文件夹，第九行新建一个screen后台程序（一定要-S小写不生效），第十行输入你的隧道ID启动内网穿透<br />
启动成功后复制红圈这里的网址去浏览器访问，出现WordPress界面就代表成功了</p>
<h1 id="get" class="h-title" style="text-align: center;">结束语</h1>
<p>到这里本文差不多就结束了，以后我可能会教你购买域名使用免费的DNS服务解析，配置SSL证书使用https访问你的站点，使用IPV6访问网站以及分享其他经验<strong>（不过写博客真的好累啊！感谢那些大佬的无私分享，希望你也能传递下去，和我一样分享你的经验，帮助到其他人！）</strong></p>
<p>第一次写博客，如有发现错误，欢迎评论指正<br />
如果觉得本文对你帮助很大的话，可以赞助一下吗？（服务器维护也是要钱的啊）<a class="links_btn" href="https://www.from0to1.top/wp-content/uploads/2023/06/QQ图片20230429104347.jpg" target="_blank" rel="noopener">前往赞助</a></p>
<p>本文参考了CSDN上copcin大佬的博客<a class="links_btn" href="https://blog.csdn.net/raspi_fans/article/details/126562772" target="_blank" rel="noopener">copcin大佬的博客</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.from0to1.top/7.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
