搭建个人博客的23事 - Cl的Library


搭建个人博客的23事

作为一只菜鸡,随便搭个个人博客也花了一整天时间...

0x00 -> 服务器选择:

如果你只打算拿服务器搭建一个个人博客,建议将你的服务器设置在内地以外。可以避免一系列麻烦的手续问题。
腾讯云:网站备案流程
如果你的服务器有服务小程序的需要,请乖乖在内地建站。
在境外设置服务器无需备案也无法在中国政府备案,但是一些服务商或热点地区有被魔法封锁的危险。
Github Page似乎是一个不错的选择,但是由于众所周知或有所不知的原因,内地github使用体验逐年下降。
如果你想用自己的电脑建立服务器,请自行上网查找更多细节,水平有限在此不讨论。

0x01 -> 平台选择:

  • django
    django是一个基于python的网站框架,特点是功能强大,配置简单。本菜鸡程序设计实践课使用的即是django框架进行网站搭建。
    就网站开发而言:
    优点如下:

    1. 基于python,开发速度快,生态完善,参考资料多。
    2. 自带模型层,屏蔽数据库细节,提高了开发效率与复用性。
    3. 信息安全性高,在后台看见一群人用php的一句话木马笑出了声。(不是)
    4. 一站式解决问题,极端情况下只需要配置python环境即可使用。

    坑点:

    1. 我使用的mysql做数据库,python有关mysql的库安装起来比较坑新
    2. 静态文件是个大坑,在[调试模式](注1.)的时候,静态文件的路径需要通过settings.py进行配置(这里不再赘述);正式运行的时候,django不会再为你处理静态文件(除非你使用nginx或者apache等处理静态文件或者使用如下命令)
#确保你在项目的主目录下
python manage.py runserver --insecure
#拷贝之前请思考这玩应有没有错误,谢谢(ˉ▽ˉ;)...

django拿到手里还是一个裸的框架,具体还是需要你自己去开发搭建。如果喜欢动手大可一试。
推荐使用JB家的pycharm专业版,网站开发几乎是一站式的。

  • LNMP或LAMP
    LNMP指linux+nginx+Mysql(或者MongoDB)+PHP; LAMP则指Linux+Apache+Mysql(或mongoDB)+PHP.
    优点:

    1. 业界多年的使用,带来了无数的解决方案和垃圾,很多刁钻的问题只需要输入搜素引擎即可得到大把的解决方案或者10+错误位置一模一样的水文
    2. 基于此环境的简单而完善的博客系统很多,比如常用的wordpress,以及我目前在使用的typecho。适合不想自己开发的懒狗。

    缺点:

    1. 知识点比较多,好像做得都蛮对的,结果还是有bug,为什么,为什么会这样啊。
    2. 知识点比较多,代码复制过来了,解决了bug,可是为什么,为什么会这样啊。

0x02 -> 踩过的坑与鸡毛蒜皮的小问题:

我使用的是LAMP环境。Ubuntu+Apache2+Mysql+PHP。
使用的是Ubuntu令我对随处可见的yum视而不见,这个世界上用ubunt建站的奇葩还是少数。

MySQL

看了推荐去使用宝塔面板,然而导致了不少问题。
可以肯定的是宝塔确实是一个不错的好产品,但是它无法识别我服务器上已经有的MySql。我以为安装会自动把原本的MySql覆盖,无关心地接受了宝塔的一键安装LNMP服务,选择编译安装后开始摸鱼。
屑菲尔德wdnmd

查水表不成被谢菲尔德阴了,差MySql还没装好,继续摸;
刺杀谢菲尔德.png

总算把谢菲尔德扬了,回来一看,MySql瘫痪了。
ERROR:2002(HY000),似乎是MySQL的本地socket出了点问题。

什么嘛,我环境配得还挺稳的嘛

上网找到吐血随手翻了一下日志,没看出个什么玩意来。

重装MySQL是不是可以解决问题?

事实证明我还是too naive。
首先尝试利用apt-get进行卸载

apt-get autoremove mysql-client
apt-get autoremove mysql-server

执行结果:zsh曰:"善".
再次重装:

apt-get install mysql-client
apt-get install mysql-server

执行登录mysql -u root -p
ERROR:2002(HY000)
上stackoverflow找外国佬的完全删除MySQL的代码。
删了一遍,重装了一遍。
还是ERROR2002(HY000)

重启下?

连接ssh似乎一切正常,接着尝试连接MySQL。
ERROR:2002(HY000)
而且一看errorlog,错误原因变成了服务器重启导致的pid file error错误。
当时我就吟了两句诗:

野火烧不尽,春风吹又生

俗话说得好:

重启解决90%的问题,重装解决99%的问题,重买解决99%的问题

重启解决不了,重买也没钱,只好翻出了劳动节时分的镜像。仔细一闻,似乎还有晚春的气息。那是一片泫然欲泣的天空

结局:使用重装强行解决了MySQL的问题


重装完之后,发现系统自带了apache2的程序(使用内地提供商的vps还是很香的)
安装环境:

sudo -i
apt-get install mysql-client mysql-server php php-mysql
exit

使用了上述的LAMP作为网站运行环境。

0x03 -> 搭建Apache2服务器中的坑

服务器真踏马好搭嗷

在安装typecho之前...

配置数据库:

首先用管理员账户登录你的数据库。
接着创建数据库。

mysql -u <输入管理员的名字> -p #带-p表示密码登录
#接着输入管理员密码

你要问用户直接上root可不可以,确实是可以的...
又不是不能用.jpg

但是本着专用的原则,我还是单独创建了一个用户交给typecho来访问存储网站数据。

create database if not exists Typecho
character set utf8mb4    # 建议使用utf8mb4,可以支持emoji
collate utf8mb4_general_ci; # 校对规则
# 创建一个名为Typecho,使用utf8mb4编码的数据库

关于字符编码问题又可以写一篇博文...只改这些远远不够的

create user <用户名> indentified by '<密码字符串>';
grant all privileges on <之前创建的数据库名> to <之前创建的用户名> with grant option;
#授权该用户在该数据库上的所有权限
#等到搭网站了把数据库账户密码填上去即可

如果你记性跟我一样差,忘了密码或者输错密码了

alter user <用户名> identified by '<新密码>';#密码修改
delete user <用户名>;#不玩了,我要删号

安装PHP和启用有关插件

直接把typecho丢进apache2的网站目录下面还是会出问题,表现为数据库选择下拉框失灵。
这往往是PHP的数据库插件没有安装或者安装后没有启用的缘故。
首先安装有关的PHP库
之后需要编辑php.ini以启用各类插件,在此不多赘述

使用Typecho

更改默认主页

我使用的是apache2,奈何网上只给我推apache的解决方案,我无了...
如果你的typecho放在跟原本项目一个文件夹以内,可以考虑直接删除Index.html以强制apache2显示Index.php作为主页。

禁止文件列出

发现apache2把文件夹下的啥玩意都给你列出来
你列出来就算了,还什么人都可以下载???
开网站不是请客吃饭,请修改apache2.conf进行禁止。

设置https

这个网上都有...不多说(敷衍)

自定义Typecho

你是不是心痒痒想要装插件了?

权限问题

直接使用ftp向服务器的/var/www/usr/plugins或/var/www/usr/themes或其他目录传东西可能会出现无法传输的错误。
你大可以老老实实先传到一个低权限的文件夹然后再利用如下命令拷贝:

sudo cp -r <你的文件夹路径> <目的路径>

但是最舒服的莫过于直接更改网站usr目录的权限

sudo chmod -R 755 /var/www/usr
#更改usr所有目录的权限

好了现在可以愉快使用图形化ftp软件,自由拖拽上传了。

插件命名问题

许多插件往往托管在github,下载下来的名字里往往带着一个master啥的(话说master也要被政治正确了),直接启动会给你一个看不懂的报错

server error
#服务器出错了,看见了
#可是为什么,为什么会这样啊

要想正常使用,请将文件夹名更改成插件管理器中的插件名一致。

应该更完了???

博客算搭完了,虽然还是改变不了我菜的事实。
大二了,大家都或多或少地找到了自己的目标,副社@lzx也依旧很努力,我也要加把劲才行呢。
啊,是的,我一直以来的积累,还算没有全部木大。
只要我不停下来,前方就会有路。


注:

  1. 在settings.py内可以看见一行debug = True. 说明是调试模式。正式部署建议关闭。

本文链接:

https://clslaid.xyz/index.php/archives/13.html
1 + 9 =
快来做第一个评论的人吧~