草庐IT

如何从0到1搭建一个个人网站

敖 丙 2023-12-12 原文

前言

如何从0到1搭建一个可以外网访问的项目

我就用自己的服务器给大家举例,怎么从0到1搭建一个学生和新手可以用来面试的项目,老手也可以回忆一下自己逝去的青春。

服务器在激活的时候会让你选系统,这个时候敖丙我个人建议,有点基础已经熟悉安装过程和环境配置的同学可以直接选择镜像,镜像市场里面有很多很适合的镜像,我选的就是带JDK8,Tomcat8,MySQL的镜像。

没搞过的同学可以尝试着选个空白机,然后下好这些东西,一步步去尝试,我想收获还是会有的,跟你在自己电脑搭建的区别你会马上体会到,这就是为啥建议大家去服务器操作的原因之一。

镜像选择

镜像记得选不要钱的,一般都是免费的。

选完镜像之后就是进行服务器的基本配置了。

选择服务器区域以及规格,比如我使用了4GiB内存以及4G带宽的,这里大家就按照自己的需求来:

接着就是选择网络安全组以及做登录配置:

配置完服务器信息接着就去使用它。

登录服务器

可以直接在管理界面网页登录服务器远程链接,也可以自己本地用对应的控制台工具连接。

个人推荐本地的控制台连接会好点,每次要登录服务器都要去网页很麻烦的。

远程链接的代码,记住是大家的公网ip,管理界面看得到的,要记得你购买的时候配置的密码,因为这个时候要输入。

ssh root@123.14.123.8 -p 22 (后面的22是个端口,后面我介绍到)

到这一步的时候,很多小伙伴直接登录成功,但是之前就已经有服务器的朋友是不发现,出现下面这个页面了?


会出现这些信息是因为,第一次SSH连接时,会生成一个认证,储存在客户端(也就是用SSH连线其他电脑的那个,自己操作的那个)中的known_hosts,但是如果服务器验证过了,认证资讯当然也会更改,服务器端与客户端不同时,就会跳出错误啦~因此,只要把电脑中的认证资讯删除,连线时重新生成,就一切完美啦~要删除很简单,只要在客户端输入一个指令

ssh-keygen -R +输入服务器的IP

接下来再次连接一次,会出现

Are you sure you want to continue connecting (yes/no)?

输入yes!
就完成连接啦!同时,新的认证也生成了。

进去后如果是镜像的小伙伴会发现本身他准备好的东西都在了,环境都搭建起来了,大家只管直接使用就好了。

但是如果没有选择镜像的朋友,就需要自己搭建一个FTP或者使用传输命令去把你下载好的Tomcat、MySQL等传输进来安装好。

大家可以看到还有一个默认密码文件夹,里面就有MySQL和FTP的账号密码什么的,不同的镜像可能有差异。

这个在之后大家自己的服务写代码的时候,配置连接本地的MySQL就是需要这个的。

博客网站

这次教大家搭建的项目说大不大,说小吧他啥都有,反正小白和学生肯定很适合,是个个人博客网站。

我们先看看博客的效果,看看大家作为大学的项目到底合格么?

我大学做的那个项目比起这个就差点意思了,当时要是有这么好的UI就很香了!

项目代码

以我这种直男审美都觉得UI很不错,你以为只是UI可以?那我们看看项目!

项目的Git地址 https://github.com/halo-dev/halo.git 大家克隆一下就好了。

这个项目本身是Gradle的,很多小伙伴就要说了,啊帅丙我不要,我就要Maven项目的。

我只想告诉大家,技多不压身,目前很多大厂都是Maven项目Gradle项目都占有很高的比重,你怎么知道你去的公司会用啥?

你会用进去减少多少学习的成本啊,Leader在旁边暗自给你比一个大拇指,暗自感叹:帅丙的读者,有点东西

Mac很多小伙伴安装的时候发现没有Homebrew 就没办法用很方便的命令行去下载安装Gradle,那简单我们安装一下,用下面的命令。(Windows的朋友直接官网下载一个就好了 https://gradle.org/install

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

这个安装好了,我们再用下面的命令就可以就把Gradle安装好了,是不是比你去下载方便很多?

$ brew install gradle

接下来去项目中设置下Gradle地址,这里介绍的是IDEA的设置

为啥推荐个人博客项目?

很多人问我为啥推荐这个项目,这个项目看过次代码了,没有啥语法错误项目结构完全标准的项目,注释也很齐全代码的风格挺不错的,还是 用了很多新语法和注解

而且他也不难理解结构很简单,前端后端都很简单,大家看看代码,看看前后的接口,很快就能适应这个项目了。

接下来我们可以用项目去打个包,或者直接下载敖丙打包好的。(jar包还有war包随意)

用命令行下载最新的 Halo 安装包

curl -L https://github.com/halo-dev/halo/releases/download/v1.1.1/halo-1.1.1.jar --output halo-latest.jar

或者

wget https://github.com/halo-dev/halo/releases/download/v1.1.1/halo-1.1.1.jar -O halo-latest.jar

文件传输呢,帅丙我习惯命令行了,FTP这样的工具还是不适应,我就发下命令行是怎么把jar包从本地传输到服务器的。

scp -P 22 /Java/program.war root@123.456.789.987:/usr/server/tomcat7/webapps/

我们进入机器去看一下,文件已经传输进来了。

因为是一个SpringBoot项目,你只要有JDK直接就能跑起来了。

java -jar halo-latest.jar

然后大家访问下自己的 ip+端口(8090)就能看到项目了

然后很多小伙伴说,渣男,我的怎么不行?

稍等稍等,敖丙啊还正准备说呢,大家的端口默认就开通了 22 、-1、3389

22是不是很熟悉,就是开头我们链接的端口号→ ssh root@123.14.123.8 -p 22 也是因为厂商默认给我们开通了,我们才可以直接链接的。

但是我们要访问别的端口,那就去开通嘛,记得入口出口一样都要开通哟

然后重启下机器,重新启动项目,是不是!!!可以访问了???我们先注册一下

然后再登录进去。

可以看到校验的异常什么的都直接日志抛出的,项目我觉得对于学生和新手来说很香,里面的代码风格大家也多适应一下。

登录进去我们可以发现,功能很全,博客网站基本的结构都在了。

有个不成熟的猜想,还没毕业设计的朋友。。。。😂

正文

这里只是一个单机的项目,大家真正部署的时候要体验别的技术栈可以去Git上下载下来部署上去,体验他整个部署流程,中间肯定很多不顺利的地方相信我,100000%不会一次成功,但是你慢慢摸索的过程就是你学习的收获的过程。

大家经常问我那些大佬怎么成长上去的,踩坑和付出大量实践上去的,别无他法。

我老东家的Leader 95年的,是我们之前公司前端后端的Leader,技术深度广度,业务深度都领人发指,怎么做到的?

简单,不断踩坑学习咯,每天都是凌晨回去,白天开会,晚上写代码,甚至还要挤出时间学习新的业务,技术栈也是不断自己去摸索。

之前他一手带的我,我跟他太熟悉了,买了早餐刚坐下就去开会讨论业务,晚上6点回来就说:诶鸡蛋豆浆都冷了啊,然后丢垃圾桶。

学习是一条令人时而喜极若狂、时而郁郁寡欢的道路。

成长路上我们一起共勉。

有关如何从0到1搭建一个个人网站的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  8. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  9. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  10. ruby-on-rails - 渲染另一个 Controller 的 View - 2

    我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>

随机推荐