感觉还是自己搭个服务器比较好。之前是大一下学期就想搭了的,只是当时好像已经开始实行了域名备案措施,江苏备案还要暂住证,就没去弄了,感觉自己用ip弄博客太傻了,所以还是一直用之前在某个博客系统上的博客。那个博客也有很多自己写的东西,而且有些还见不得人的东西->_->
所以这篇就用来记录一下就搭建服务器的一些坑
服务器用的是的vultr提供的,域名godaddy。系统centos 7.2
0x0
一开始Vultr选好服务器以后,会有个Startup Script
的选项,这个选项是可以执行一些服务器建好以后运行的脚本
|
|
这是Vultr给的示例脚本示例。这样子的话,每次建服务器只需要你写好脚本就可以配置好一些通用的组件了,例如Nginx、php等。
我自己写的脚本不是很好,就不放出来了。
0x1
然后就是先开始配置nginx了
1.添加Nginx到YUM源
添加CentOS 7 Nginx yum资源库,打开终端,使用以下命令:
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
然后为了是最新稳定的Nginx,又特地去修改了yum的nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1
按照官方文档来修改
2.开始安装Nginx
在你的CentOS 7 服务器中使用yum
命令从Nginx源服务器中获取来安装Nginx:
sudo yum install -y nginx
3.启动Nginx
刚安装的Nginx不会自行启动。运行Nginx:
sudo systemctl start nginx.service
然后可以通过
curl localshost
来查看Nginx是否启动成功
4.CentOS 7 开机启动Nginx
sudo systemctl enable nginx.service
5.一些Nginx的常用目录
网站文件存放默认目录:
/usr/share/nginx/html
网站默认站点配置:
/etc/nginx/conf.d/default.conf
自定义Nginx站点配置文件存放目录:
/etc/nginx/conf.d/
Nginx全局配置
/etc/nginx/nginx.conf
6.注意事项
比较坑的是一开始我只想配个Nginx然后配域名试试能不能访问,结果配好Nginx之后直接访问ip发现无法访问。然后考虑ip被墙了,但是吧,ping了ip还是能ping通的,但是无论挂不挂代理都还是不能访问。这就比较郁闷了。
后来经过提醒,用 ss -tan
查看了一下端口,发现80已经是处于监听状态了,这就比较奇怪了,再去扫了一下服务器的端口,这时候发现80端口是关闭的。
百思不得其解,难道Vultr也有阿里云的那种安全防护,得手动打开?
然后问了一下大佬,就可能是防火墙的问题了。
Centos是自带的firewall
,iptables
,但是iptables
还得配置,我们就不用iptables
了,就用自带的firewalld
了
开始排查防火墙
先看看80是否开启
firewall-cmd --query-port=80/tcp
显示
no
果然是因为防火墙屏蔽了80端口,然后我们通过
firewall-cmd --zone=public --add-port=80/tcp --permanent
打开80端口, 显示
success
即可开启80端口,然后重启防火墙
systemctl [start|stop|restart] firewalld.service
终于可以看到熟悉的Nginx界面了。
0x2
接着就是MariaDB
1.安装:
yum install mariadb mariadb-server
2.启动
systemctl start mariadb
3.开机启动
systemctl enable mariadb
4.配置MariaDB
mysql_secure_installation
5.测试
mysql -u root -p
0x3
再装php
Vultr有比较详细的安装教程,我就贴出来了。这里装的是php7.1
然后再安装个php-fpm
yum install php71w-fpm
这里注意的是php7.1是php71w的前缀
接下来进入Nginx的目录配置nginx.conf或者是/conf.d/default.d,一般目录是在/etc/nginx/
,把下面这段注释取消就好了。
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
值得一提的是,我在配阿里云都没出现在过什么问题,但是就是配Vultr就出现了一些坑
首先是出现了
connect() failed (111: Connection refused) while connecting to upstream, server: localhost, request: "GET /xxx.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000"
这个就是php-fpm忘记开了
然后又碰到了File Not Found
的错误,cat
了error.log
看一下:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, server: localhost, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000"
这就比较郁闷了,不过Google还是能找到的,反正就是说File Not Found
,看了一下原来是location的root
配置问题,
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /$document_root$fastcgi_script_name;
include fastcgi_params;
}
特别要注意root指向的位置,这又是比较坑的东西。
然后就是安装typecho的坑了。
0x4
这里就简单提提typecho的坑。
第一个就是与nginx的配置,这个还好有文档,但是只能解决我的
无法登录后台,点击前台链接或者后台登录时出现"404, not found"
这个问题
还有出现的一个问题就是typecho的登录302的问题。
还好有大佬直接给了我解决方案:
在config.inc.php加入define('__TYPECHO_SECURE__',1);
后来查了一下发现这个是用来开启https访问typecho的设置
/** 开启HTTPS */
define('__TYPECHO_SECURE__',true);
具体可以参照一下这篇文章
还有typecho点击评论确无法评论的问题,只要在typecho管理员控制台中在永久链接中把自定义文章路径
默认是
默认风格 /archives/{cid}/
改成
wordpress风格 /archives/{slug}.html
具体原因没查,我猜也是nginx与typecho的pathinfo问题
0x5
这篇文章主要就到这吧,后续会增加一些自己以后遇到的问题