服务器配置的那些事--基于LNMP

感觉还是自己搭个服务器比较好。之前是大一下学期就想搭了的,只是当时好像已经开始实行了域名备案措施,江苏备案还要暂住证,就没去弄了,感觉自己用ip弄博客太傻了,所以还是一直用之前在某个博客系统上的博客。那个博客也有很多自己写的东西,而且有些还见不得人的东西->_->

所以这篇就用来记录一下就搭建服务器的一些坑

服务器用的是的vultr提供的,域名godaddy。系统centos 7.2

0x0

一开始Vultr选好服务器以后,会有个Startup Script的选项,这个选项是可以执行一些服务器建好以后运行的脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/sh


# NOTE: This is an example that sets up SSH authorization. To use it, you'd need to replace "ssh-rsa AA... youremail@example.com" with your SSH public.
# You can replace this entire script with anything you'd like, there is no need to keep it


mkdir -p /root/.ssh
chmod 600 /root/.ssh
echo ssh-rsa AA... youremail@example.com > /root/.ssh/authorized_keys
chmod 700 /root/.ssh/authorized_keys

这是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的错误,caterror.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

这篇文章主要就到这吧,后续会增加一些自己以后遇到的问题

Licensed under CC BY-NC-SA 4.0

Tip

I am looking for some guys who have a strong interest in CTFs to build a team focused on international CTFs that are on the ctftime.org, if anyone is interested in this idea you can take a look at here: Advertisements

想了解更多有意思的国际赛 CTF 中 Web 知识技巧,欢迎加入我的 知识星球 ; 另外我正在召集一群小伙伴组建一支专注国际 CTF 的队伍,如果有感兴趣的小伙伴也可在 International CTF Team 查看详情

Built with Hugo
Theme Stack designed by Jimmy