平常服务器如果有异常,需要重装系统,下面做一个记录,也方便以后更换新服务器时配置。本着极简的方式,安装和配置的越少越好,达到快速迁移快速部署的目的,一劳永逸最好,精力要放到写博客上面。

首先要备份

首先要进行备份,主要有博客所有文件夹、数据库导出、Nginx配置文件、MySQL配置文件、GoAccess配置文件、计划任务相关脚本等等。

以下为重新安装步骤:

一、安装Linux面板

虽然在服务器上部署的东西不多,用终端命令也能实现,但对于不懂编程的人来说,还是不太方便,直接用现成的面板体验会更好一些,比如 宝塔1panel

最开始用的是1panel,开源的用着也比较放心,但由于该面板安装应用都是基与docker容器,不太会用,面板操作逻辑不太理解,搭建好tycho博客后,访问总是找不到文件,有时候能访问到博客页面,但css样式又不显示了,总有奇奇怪怪的问题。而且占用内存还比较高,只是安装好博客相关的应用后,内存就已经到1G多了,里面MySQL占用最多,大概500兆左右。

同样的在宝塔里面安装好博客相关的环境和应用后,内存大概在500兆左右,整体比1panel少了一半,而且搭建博客也比较简单,对于从来没接触过服务器的人来说很容易上手。虽然宝塔不是开源的,里面的广告也多,不过没关系,好用不容易出错就行。

总体来说,用哪个都行,看个人喜好吧。

注意:安装好之后,记得先在服务器安全组开放宝塔对应的端口。

二、搭建博客

Nginx、PHP:我一般安装当前次新的版本,因为占用内存也不大,能用新的就用新的,为了稳定,选择次新。

Mysql:一般安装5.7版本的,占用内存比较少一些。

在宝塔后台添加站点,数据库和FTP都不选,后续根据需要单独创建,比较灵活。注意:在添加站点过程中如果创建数据库,数据库名称和用户名是相同的,感觉这样不太安全。

站点和数据库都创建好后,把之前导出的站点文件夹和数据库文件导出,一般情况,直接访问域名就会成功,和之前网站一模一样,安装配置过程都不用。

三、博客设置

1.开启Typecho伪静态

Nginx伪静态

在宝塔站点设置里有相关配置,直接选typecho就行。如果没有就把以下代码保存为typecho.conf文件,然后在网站配置文件调用,由于Nginx安装路径不同等影响,实际请以当前Web环境设置为准。

if (!-e $request_filename) {
    rewrite ^(.*)$ /index.php$1 last;
}

如果上面代码不管用,就用下面这个,

if (-f $request_filename/index.html){
    rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
    rewrite (.*) $1/index.php;
}
if (!-e $request_filename){
    rewrite (.*) /index.php;
}

Apache伪静态

Apache 服务器网站伪静态是通过网站根目录的.htaccess文件来实现的,复制粘贴下面伪静态规则,保存到.htaccess文件中,并将.htaccess上传到网站根目录即可。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
注意:如果在Typecho后台开启伪静态,但没在Nginx或Apache里设置好相应的规则就容易出现异常,比如,网站只能访问首页,点任何链接都是404的情况。

2.网站文件缓存设置

在网站Nginx配置文件相应位置填写如下内容

add_header Cache-Control "public, max-age=31536000, must-revalidate";

如果开启防盗链,需要在防盗链位置再次设置。

3.增加网站安全(按需写)

在网站Nginx配置文件相应位置填写如下内容

add_header Content-Security-Policy "default-src 'self' *.wangrufei.com;";
或
add_header Content-Security-Policy "default-src 'none'; script-src 'unsafe-inline' 'unsafe-eval' https:; img-src data: https:; style-src 'unsafe-inline' https:; child-src https:; connect-src 'self' https://*.wangrufei.com   ; manifest-src 'self';";

add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "DENY";
add_header X-XSS-Protection "1; mode=block";

4.禁止ip访问

在网站Nginx配置文件相应位置填写如下内容

    if ($host ~* ^\d+\.\d+\.\d+\.\d+$) {
        return 403;
    }

5.开启https

如果是在阿里云生成的证书,根据web服务器类型,选择下载相应的证书文件,比如Nginx的为pem/key两个格式的文件,Apache的为crt/key两个格式的文件,下载后,用记事本打开,复制里面的内容到宝塔就能开启https访问了,记得提前在安全组或者防火墙开放80和443端口。

6.设置HTTP/3

之前在博客写过相关文章 博客网站启用 HTTP/3,设置后可提高网站访问速度。

7.修改404页面

默认的太单调且没有引导访问首页,更改代码如下

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="robots" content="noindex, nofollow">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>404 - 页面未找到</title>
    <style>
        body {font-family: Arial, sans-serif;text-align: center;margin-top: 35px;}
        h1 {font-size: 24px;}
        p {font-size: 16px;}
    </style>
</head>
<body>
        <h1>404 - 页面未找到</h1>
        <p>抱歉,您访问的页面不存在或已被移除。</p>
        <p>您可以尝试返回 <a href="https://wangrufei.com">我的首页</a> 。</p>
</body>
</html>

8.MySQL优化

在博客相关环境里,MySQL是占用内存大户,一般版本越新越占用内存,优化一下让内存小一点,首先在宝塔面板MySQL设置的性能调整里根据自己的内存大小选择相应的优化方案,然后再到配置文件里添加一条指令降低MySQL的内存占用

优化方案选1-2g,其他主要参数设置:

key_buffer_size = 8M(innodb引擎,可忽略此项索引命中率)
tmp_table_size = 96M
innodb_buffer_pool_size = 512M
innodb_log_buffer_size = 16M
sort_buffer_size = 512K
read_buffer_size = 256K
join_buffer_size = 512K
thread_cache_size = 32
table_open_cache = 160
max_allowed_packet = 16M

9.设置博客目录权限

1.公共仅读744

2.目录禁止访问

    location ~* ^/usr.*.(php|jsp)$ {
        deny all;
    }

    location ~* ^/var.*.(php|jsp)$ {
        deny all;
    }
    
    location = /config.inc.php {
    deny all;
    }

10.其他安全

1.删除安装文件

安装完成后删除 install.php 文件、install文件夹

2.修改网站登录地址

1、修改admin文件夹名称
2、修改 config.inc.php 里相关的文件名称

/** 后台路径(相对路径) */
define('__TYPECHO_ADMIN_DIR__', '/刚才更改的名称/');

四、宝塔设置

1.修改设置

修改安全入口、端口、用户名、密码、ssh仅密钥登录等等。

2.防止恶意解析

宝塔-网站-默认站点。设置一个不常用或不用的站点,这样所有未绑定站点的域名访问,都会访问到这个默认站点,有效防止恶意解析。由于这个网站平常并没有什么用,可以关闭日志生成,这样以后就可以完全不用管这个网站了,在配置文件底部,写上如下命令:

access_log /dev/null;
error_log /dev/null;

3.设置计划任务

同步时间、备份网站、备份数据库、释放内存等等。

五、安装应用

1.安装Fail2ban

增加安全,网站防cc、防扫描。

规则配置如下,路径/etc/fail2ban/filter.d/

防cc

[Definition]
failregex = <HOST> .*? "HTTP/1\.[01]"
或
failregex = <HOST> -.*- .*HTTP/1.* .* .*$
ignoreregex = <HOST> .*? \b(503|429|404|403|401|400)\b

防扫描

[Definition]
failregex = <HOST> .*? \b(503|429|404|403|401|400)\b
ignoreregex =

清空fail2ban.log内容脚本

用宝塔计划任务定时清空

#!/bin/bash

LOG_FILE="/var/log/fail2ban.log"

> $LOG_FILE

echo "已清空"

2.安装GoAccess

分析日志,具体安装配置见GoAccess安装及配置

3.PHP设置

安装PHP缓存扩展,增加性能,降低高并发cpu占用。脚本缓存opcache。启动后效果显著,博客加载基本都是50ms以内,之前都80ms左右。高频刷新cpu也基本在10%以下,之前cpu基本在50%。
opcache参数设置如下

opcache.enable = 1
opcache.memory_consumption=128
opcache.interned_strings_buffer=32
opcache.max_accelerated_files=4000
opcache.revalidate_freq=30
opcache.fast_shutdown=1
opcache.enable_cli=1
opcache.jit_buffer_size=128m
opcache.jit=1205

4.安装Linux工具箱

设置Swap虚拟内存值:2048M

5.安装宝塔网站加速

在http协议层,对动态页面进行缓存,对需要实时信息及已登录的会话跳出缓存,此技术主要针对匿名访问的用户进行加速响应,以减少应用服务器和数据库的开销。相对与redis和Memcached之类的缓存配置较简单,不用在网站单独安装开启缓存的插件,在后台安装上就可以使用,开启后网页最快加载用时15ms,但不稳定。

六、服务器设置

1.关闭22端口

仅在需要的时候开启。

2.修改宝塔端口

在服务器的安全组把宝塔端口授权ip设置成自己本地的。