从零开始搭建自己的个人博客 发表于 2018-04-13 | 分类于 博客 | 暂无评论 > 一直都很喜欢极简风。 > 之前的博客模板总觉得太花哨,但是因为是自己写的,更换模板太费劲,懒癌晚期的我实在提不起劲来折腾。 > 直到几天前看到朋友托管于github上的博客,NexT.Mist真的是太符合审美了! > 于是抱着尝试的心态在github上搜索了一番,竟然真的有基于php的Typecho移植版,完美! > 鉴于之前博客荒的不成样子,就懒得迁移过来了。就着这次搭建新服务器,将流程整理了一番,希望可以帮到想自己搭建博客的朋友们。 ## 前置需求 ## 1. ### 域名 ### 域名注册十分简单,如果没有特殊需求,建议在 [**万网**][1] 购买。 需要注意的是,如果希望使用**国内**的云服务器,则需要进行**域名备案**后才能正常解析,而**部分后缀的域名不支持在工信部进行备案**,所以注册时需要注意。 如果使用的是境外机房(包括香港地区)的服务器,则无论域名是否备案,都可以正常解析。 2. ### 服务器 ### 国内云服务提供商推荐 [阿里云][2] 、 [腾讯云][3]。 国外的话,可供选择的太多,[Linode][4] 、 [Vultr][5] 、 [Amazon][6] 等都是十分靠谱的主机托管商。 3. ### SSH 客户端工具 ### 用以在本地连接远程云服务器进行管理。这里推荐 xshell 、 Putty。 4. ### FTP 客户端工具 ### 更方便的进行文件上传、下载。推荐 xftp 、 FileZilla。 ---------- 这里对域名注册、服务器购买不做太多介绍,有需要的朋友请自行搜索。 ---------- ## LNMP ## LNMP代表的就是:**Linux**系统下**Nginx**+**MySQL**+**PHP**这种网站服务器架构。 简单理解为网站的**运行环境**即可。 鉴于这里更多的是面向无经验的小白朋友,所以推荐 [LNMP一键安装包][7] 搭建环境。 具体操作步骤如下: 1. 使用SSH 客户端工具连接到云服务器。 2. 运行命令 `screen -S lnmp`,如果提示 **screen: command not found** 命令不存在可以执行:`yum install screen` 或 `apt-get install screen` 安装 screen 此步骤非必需,为预防连接断开造成安装失败 3. 执行LNMP安装命令: `wget http://soft.vpser.net/lnmp/lnmp1.5beta.tar.gz -cO lnmp1.5beta.tar.gz && tar zxf lnmp1.5beta.tar.gz && cd lnmp1.5 && ./install.sh lnmp` ,如果提示 **wget: command not found** ,使用`yum install wget` 或 `apt-get install wget` 命令安装 **wget** 4. 命令执行完后会弹出数据库版本选择。因为Typecho没有对MySQL版本做要求,所以这一步**直接回车**,默认会选择2,安装MySQL 5.5.58 ![][8] 5. 要求输入数据库root账户密码,**数字**请使用键盘区的数字键(见下图**红色框线**)输入。如果输错,使用 **CTRL + Backspace**键进行删除。 输入完成后**回车**确认。 * ![][9] * ![][10] 6. 是否开启MySQL的InnoDB引擎,建议开启,输入**y**,**回车**确认 ![][11] 7. 选择PHP版本,建议选择**7**, PHP 7.1.15,**回车**确认 ![][12] 8. 是否安装内存优化,**直接回车**,不安装 ![][13] 9. 提示"Press any key to install...or Press Ctrl+c to cancel"后,按回车键确认开始安装。 ![][14] 10. 安装时长视配置不同可能不同,我安装时大概耗时40分钟,安装完成后提示(这张图是1.4版本的,提示是一样的) ![][15] ---------- 到这里,LNMP一键包安装完成,下面我们开始安装ftp服务 ---------- ## FTP ## 1. 依然使用lnmp一键包提供的脚本进行安装。 如果上一步安装完成后没有做其他操作,当前仍然在lnmp1.5目录下,直接执行`./pureftpd.sh`,出现下图提示,按**回车**确认安装。 ![][16] 2. 出现下图即为安装成功,提示用 `lnmp ftp {add|list|del|show}` 命令进行操作。现在先不管,后面添加虚拟主机时一起添加。 ![][17] ---------- ## 添加虚拟主机 ## 1. 运行命令 `lnmp vhost add`,输入**你的域名** ![][18] 2. 提示是否添加其他域名,如果有其他前缀的域名同样需要解析到这里,就输入该域名、回车,如果没有,则**直接回车**。 ![][19] 3. 确认站点目录,没有特殊要求的话直接**回车**确认。 ![][20] 4. 是否需要重写规则,输入**y** , **回车**。 ![][21] 5. 选择重写规则,输入**typecho** , **回车**。 ![][22] 6. 添加PHP Pathinfo,输入**y** , **回车**。 ![][23] 7. 日志记录,呃,这个没有经验的话,开不开无所谓,看不懂的话开了也没用。**y**或者**n**都可以。**回车**确认。如果选择**开启**,则会提示输入日志文件名称,直接**回车**选择默认的就好。 ![][24] 8. 是否使用相同的名字创建数据库和MySQL用户,**y** , **回车** ![][25] 9. 要求输入数据库root账户密码,输入上面安装lnmp时第5条设置的root密码。这里输入密码时是**不会显示字符**的,直接输完**回车**就好。 ![][26] 10. 输入要创建的数据库名,因为我们这里是搭建博客,我这里输入blog。 ![][27] 11. 给同名用户blog设置密码,**输入新密码**,**回车**确认。如果输错,使用 **CTRL + Backspace**键进行删除 ![][28] 12. 是否创建ftp用户,**y**,**回车** ![][29] 13. 输入ftp**用户名**,我这里依然用blog ![][30] 14. 设置ftp用户密码,**输入密码**,**回车确认**。 ![][31] 15. 是否添加**ssl证书**,建议添加,**y**,**回车确认**。(lnmp提供了证书自动申请、自动延期,证书提供商是Let'sEncrypt。)这一步务必需要**注意**的是,如果此时**域名尚未解析到当前服务器**,则**无法成功**添加证书。 ![][32] 16. 输入2,使用免费SSL证书提供商Letsencrypt的证书,自动生成SSL证书等信息 ![][33] 17. 需要输入一个邮箱,回车确认。 ![][34] 18. 提示 Press any key to start create virtul host... 后,**回车确认**便会开始创建虚拟主机。添加成功会提示添加的域名、目录、伪静态、日志、数据库、FTP等相关信息,如下图 ![][35] ---------- 到这里,整个虚拟站点添加就完成了。请牢记刚刚设置的数据库用户名,数据库密码,ftp用户名,ftp密码,后面会使用到。 ---------- ## 上传代码 ## 1. 从 [typecho][36] 的官网下载源码 2. 使用ftp客户端软件连接服务器,xftp为例,设置流程为:文件->新建->填写**站点名称**,主机项填写**服务器地址**,用户名填写刚刚设置的**ftp用户名**,密码处填写**ftp密码**;**选项->取消勾选被动模式** * ![][37] * ![][38] 3. 将下载的typecho源码解压,上传。**注意**:源码解压后是build文件夹,上传时为上传**build文件夹内的所有文件**,build文件夹**本身不要上传**。 ![][39] ---------- 代码上传完成。如果ftp一直连接不上,请在云服务提供商处检查 **服务器安全组设置** ,是否允许**21端口**连接。 ---------- ## Typecho安装 ## 1. 浏览器访问你的博客域名。 2. 开始配置 ![][40] 3. 初始化配置中需要修改: * **数据库用户名** 修改为添加站点时设置的**数据库用户名** * **数据库密码** 修改为添加站点时设置的**数据库密码** * **数据库名** 因为我们之前创建了跟用户名同名的数据库,所以这里一样修改为**数据库用户名** * **网站地址** 将**http**修改为**https** * **用户名** 在博客上创建一个**管理账号**,页面、文章等需要通过该账号处理。 * **登录密码** 为管理账号设置**密码** * **邮件地址** 你的邮箱地址 4. 点击 **确认,开始安装后** ,完成博客安装。 ---------- **`至此,博客搭建完成。`** ---------- ## 301重定向 ## 好吧,搭建是搭建完了,可是令人十分郁闷的是,如果在浏览器直接输入域名,默认会按http进行访问。以我的博客为例,直接访问`www.sunyyl.com`会转跳到`http://www.sunyyl.com`,ssl证书岂不是白装了? 所以我们需要更改nginx的conf文件,将所有80端口的访问都重定向到443端口。 流程如下: 1. 用ssh客户端工具登录到云服务器。 2. 执行命令 `cd /usr/local/nginx/conf/vhost/` 3. 查看当前配置文件名 `ls` 4. 编辑该配置文件,以我的为例,配置文件为 `www.sunyyl.com.conf` ,执行命令 `vi www.sunyyl.com.conf` 5. 将**第一个server{}**中的自**root**这一行往下的所有代码删除,然后添加`return 301 https://$server_name$request_uri;`,效果如图: ![][41] 6. **务必**不要改动第二个**server{}**中的代码。 7. 重启nginx服务器,执行 `lnmp nginx reload` 强制https访问就完成了。现在访问`www.sunyyl.com`就会转跳到`https://www.sunyyl.com`。 到此,全部流程结束,希望可以帮到需要的朋友~ [1]: https://wanwang.aliyun.com/ [2]: https://www.aliyun.com/ [3]: https://cloud.tencent.com/ [4]: https://www.linode.com/ [5]: https://www.vultr.com/ [6]: https://aws.amazon.com [7]: https://lnmp.org/ [8]: https://www.sunyyl.com/usr/uploads/2018/04/3260871378.png [9]: https://www.sunyyl.com/usr/uploads/2018/04/238484376.png [10]: https://www.sunyyl.com/usr/uploads/2018/04/917236245.png [11]: https://www.sunyyl.com/usr/uploads/2018/04/2181823028.png [12]: https://www.sunyyl.com/usr/uploads/2018/04/297456307.png [13]: https://www.sunyyl.com/usr/uploads/2018/04/1221841275.png [14]: https://www.sunyyl.com/usr/uploads/2018/04/3999860721.png [15]: https://www.sunyyl.com/usr/uploads/2018/04/1826426390.png [16]: https://www.sunyyl.com/usr/uploads/2018/04/2462795722.png [17]: https://www.sunyyl.com/usr/uploads/2018/04/2280110165.png [18]: https://www.sunyyl.com/usr/uploads/2018/04/4228363403.png [19]: https://www.sunyyl.com/usr/uploads/2018/04/1996273060.png [20]: https://www.sunyyl.com/usr/uploads/2018/04/1958679068.png [21]: https://www.sunyyl.com/usr/uploads/2018/04/3118744935.png [22]: https://www.sunyyl.com/usr/uploads/2018/04/3257710004.png [23]: https://www.sunyyl.com/usr/uploads/2018/04/2053517649.png [24]: https://www.sunyyl.com/usr/uploads/2018/04/1312124065.png [25]: https://www.sunyyl.com/usr/uploads/2018/04/1343247588.png [26]: https://www.sunyyl.com/usr/uploads/2018/04/1178709567.png [27]: https://www.sunyyl.com/usr/uploads/2018/04/1808622590.png [28]: https://www.sunyyl.com/usr/uploads/2018/04/1917505896.png [29]: https://www.sunyyl.com/usr/uploads/2018/04/1412249476.png [30]: https://www.sunyyl.com/usr/uploads/2018/04/547474465.png [31]: https://www.sunyyl.com/usr/uploads/2018/04/3240954280.png [32]: https://www.sunyyl.com/usr/uploads/2018/04/1531821180.png [33]: https://www.sunyyl.com/usr/uploads/2018/04/2554390924.png [34]: https://www.sunyyl.com/usr/uploads/2018/04/2953598880.png [35]: https://www.sunyyl.com/usr/uploads/2018/04/4083770766.png [36]: http://typecho.org/ [37]: https://www.sunyyl.com/usr/uploads/2018/04/176578228.png [38]: https://www.sunyyl.com/usr/uploads/2018/04/1782114130.png [39]: https://www.sunyyl.com/usr/uploads/2018/04/3555165783.png [40]: https://www.sunyyl.com/usr/uploads/2018/04/104432796.png [41]: https://www.sunyyl.com/usr/uploads/2018/04/2660748637.png