本文长期更新,目前进度 5 / 24,最近一次更新2020.4.7
为什么写这篇文章
在小学的时候我就开始尝试建网站,不过那时候用的是可视化拖拽的工具,Tap.cn。令人难过的是这个网站很早就关闭了,大概是因为无法实现盈利吧,但是在Tap游玩的三年的历程中,我对于平面设计的审美水平有了质的提升,这个到时候再说哈哈。
高考后准备弄一个网站记录自己的高中生活,但是Tap倒闭了用什么呢?才想起来当时遇到过一个叫做WordPress的工具,Tap上很多朋友不满足于过于局限的功能而转向WP,但是小时候实在是什么都不懂,连服务器都不知道是啥,更别说域名解析了。于是那个暑假起就开始了各种折腾,这篇文章就用来做一下简单的总结,也算是我的收藏夹大赏。
从域名到服务器
先扫扫盲
Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、Web Services 这些名词指的是什么呢?可以看看这篇知乎回答。而对于我们文章的目标——在服务器上搭建自己的应用来说,具体的编程技术还不是太重要,不过还得知道一下域名解析是什么东东。
总结一下,服务器就是一台存放在数据中心一直开机的电脑,它有自己的IP地址(当然严格来说IP地址是相对于接口的),域名解析就是将一个域名比如moecode.com
指向IP,当我们在浏览器中访问该域名时,浏览器就会向服务器发送HTTP请求报文,当浏览器收到回复时就能显示网页应用了。如果还需要什么知识后面再补充。
首先要有一台服务器
当你访问阿里云的主页,你会发现有让人眼花缭乱的选项:云服务器ECS、轻量级应用服务器、云数据库、云虚拟主机、海外云虚拟主机……如果我们想要搭Web应用,可以选择轻量级应用服务器、云虚拟主机。
二者有什么区别呢?其实就是毛坯房和精装单人间的区别,轻量级应用服务器其实就是一台预装了Linux的电脑(当然也可以是其他系统或者应用镜像),可以在上面安装LAMP环境(下文会讲),然后对每个网站都开启虚拟主机virtual host
,装多少个网站都没问题,直到超过配置。而云虚拟主机就相当于一个virtual host
,一般只能装下一个站点。因此在阿里云上,轻量级应用服务器就比云虚拟主机贵。
但是,如果是香港节点就很便宜了,一年只需288。所以在选择配置的时候务必选择香港节点,而且还不用担心网站还没备案无法访问的问题。值得一提的是,有些应用在大陆的服务器是无法使用命令安装的,比如WordPress在大陆地区就已经无法正常访问了,PHP的Composer下载镜像也会出问题,鉴于此还是推荐香港节点。
当然你可以选择阿里云学生机和腾讯云学生机,费用都是一年一百多,配置也不错。缺点就是网站需要备案才能好好访问。
如果想购买国外的服务器可以试试Vultr的日本节点,据说访问起来也挺快,一年需要400+,但是好处是按运行时间计费,一旦销毁服务器就停止计费了,避免提前付费导致的浪费。
那购买服务器的时候安装什么镜像呢?推荐centOS 7 64x。毕竟第七版上能一键安装BBR(后面会提到)。对于个人应用来说,最低配置的那一款其实已经足够了。
不得不提一下,如果你想安装的PHP应用如果需用到Composer依赖管理器,你可能会遇到各种报错QuQ。如果不能解决的话可以求助于具有图形界面的云虚拟主机,但是也不是所有图形界面面板都支持Composer,我目前知道的事Plesk面板能支持Composer,cPanel就不能。这些面板也不是个人支付得起的,所以还是需要找使用了Plesk面板的云虚拟主机提供商。如果需要了解的话你可以在文章留言板戳一下我。很好看的Flarum论坛框架就需要用Composer管理。
如何连接我的服务器
在获得服务器之后怎么登录我这台云端的电脑呢?当然是用SSH!简单地看SSH客户端就是一个远程电脑的命令行界面,如果你是macOS,那么给你推荐Termius,界面超好看Logo超可爱。Windows用户似乎也能用Termius,不过更多是用XShell。登录的方法百度搜一下就有了。登录之后就能见到熟悉的命令行界面了。
如果想要传输文件,那么还需要FTP客户端。给mac用户推荐Transmit,给win用户推荐WinSCP。百度一下也可以知道怎么下载 :-P。
给自己的服务器安装Web环境
单有一台服务器还不行,你可曾听说过别人直接访问自己的电脑?我们还需要一个完整的Web应用环境。最经典的环境莫过于LAMP(Linux + Apache + MySQL + PHP)。L指的是服务器的操作系统;Apache是Web服务器,有了它才能处理浏览器提供的对于网页的请求;M指的是数据库,当然有时也会是MariaDB数据库,用于存放网站的各种数据;PHP就是PHP啦,世界上最好的语言(雾)。
哇那么多我怎么安装呢?木得问题,木得问题,我们有一键安装脚本。
注意这里的LNMP只是脚本的名称,不是说用它安装就一定是LNMP,它也能安装LAMP环境,还有其他一些组合。不过LAMP好像真的只能装LAMP,所以我们不理它。
我用的是OneinStack所以就拿它举例。不过在安装之前我们先用下面的命令安装一下BBR,BBR是Google提出的一个开源的TCP拥塞控制算法,对提升网速效果显著。
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
如果找不到wget命令可以这样子:
yum -y install wget
你还可以参考一下这篇文章,里面提到了如何设置SSH长期在线,并用screen命令创建一个会话以避免LAMP的安装过程暂停。当然里面还提到WordPress的安装方法,非常详细。
可以选择自动安装,下面主要提下几个参数怎么选择。
- 因为我只捣鼓过Apache的环境所以就选择LAMP吧233
- Apache可以使用默认参数
- PHP务必选择7.x,因为WordPress等很多应用都不支持5.x
- PHP扩展:如果你要试试安装flarum论坛那请务必选择fileinfo,不然在服务器上自己装这个扩展能让人怀疑人生;可以加上memcached或memcache,实现缓存功能;如果将来可能要开发php应用还可以选择xdebug,可能还需要其他的扩展,我还没做过PHP开发所以也不懂嗷。
- 数据库推荐MySQL5.7,DB的默认用户是root,密码就是图片中自己填的部分。
- Pure-FTPd是FTP服务器,一般都会用到。
- phpMyAdmin是一个图形界面的数据库管理工具,十分方便!
- iptables是防火墙管理工具。
- 记得换SSH端口,不超过65535,一般选择1000以上的。
如果是阿里云的服务器可能系统会有防火墙的限制,修改SSH端口之后无法访问,请自行搜索解决方法。
随后复制命令就可以到Termius安装啦。不过安装之前请开启screen会话,参考这篇文章。
安装好之后也可以参考上面的文章做一些安全措施,比如删掉index.html文件,修改phpMyAdmin的目录等。
Comments | 2 条评论
博客作者 Mooncell automaton
这是一条私密评论
博客作者 Zilize
@Mooncell automaton 谢谢,好像最近没太大精力更新233