服务器需要安装和配置的东西
平常服务器如果有异常,需要重装系统,下面做一个记录,也方便以后更换新服务器时配置。本着极简的方式,安装和配置的越少越好,达到快速迁移快速部署的目的,一劳永逸最好,精力要放到写博客上面。
首先要备份
首先要进行备份,主要有博客所有文件夹、数据库导出、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设置成自己本地的。