今天干完这活发现自己频频踩坑,心中愤懑难平,作文以记之。 ——题记
假如你有一个域名,有一个服务器,又刚刚做好了一个静态网站(或者用相应框架生成了一个)。那还有什么理由不把这网站发布给全世界呢?说到底,这就是互联网这一人类最伟大的发明最令人激动的部分。 本文首先介绍如何(在你的域名服务提供商那里)配置域名解析,然后介绍如何使用Nginx将你的网站部署到服务器上,最后还有配置HTTPS连接的简短介绍。 本教程使用腾讯云CentOS 7的服务器。操作时间请看博文发布时间。所有涉及域名的地方,皆假设你持有的域名是example.com
,请自行修改为你自己的域名。
域名解析
当互联网用户输入你的域名,你的域名会被解析成你服务器的IP地址。要让这一过程发生,你需要进行适当的配置。 打开你的域名服务提供商的域名解析页面,你需要至少添加下面两条记录:
主机记录 | 记录类型 | 记录值 | TTL(秒) |
---|---|---|---|
@ | A | 0.0.0.0 | 600 |
www | A | 0.0.0.0 | 600 |
记录的其他参数保持默认即可。注意其中0.0.0.0
应该替换成你的服务器的IP地址。 假如你的域名是example.com
,上面两条记录表示对example.com
以及www.example.com
都解析到你的服务器的IP地址。 保存设置。 如果你需要进行邮箱解析或者其他操作,请查搜索引擎。
安装Nginx
在CentOS上,只需
1 | sudo yum install nginx |
即可完成安装。 启动Nginx:
1 | sudo systemctl start nginx |
要让Nginx自动启动,请用:
1 | sudo systemctl enable nginx |
查看状态:
1 | sudo systemctl status nginx |
以及还有stop
等用法。
防火墙设置
有可能你的服务器上有防火墙服务在运行。常见的防火墙服务有ufw
, firewalld
和iptables
。请留意这三个服务在你的服务器上的运行状况。本文简要介绍前两个服务的必要配置。
ufw
查看状态:
1 | ufw status |
如果是不活跃的状态,可以忽略ufw
这一节。 如果是运行中的状态,那么需要允许Nginx通过防火墙:
1 | ufw allow 'Nginx Full' |
如果没有报错,那就可以了。 如果报错,请查看可用的应用列表:
1 | ufw app list |
(正常情况下,如果正常安装了Nginx,这个列表中会有Nginx Full
等应用。如果缺失,请自行查错。)
firewalld
查看状态:
1 | firewall-cmd --state |
如果在运行,查看开放的端口:
1 | firewall-cmd --list-all |
其中public
下ports
一项表明开放的端口。确保80和443端口有开放。如果没有,自行添加:
1 | firewall-cmd --permanent --add-port=80/tcp |
重启服务:
1 | firewall-cmd --reload |
其他操作,可参考此文(非官方文档,不保证准确性)。 附注: 如果你是刚刚才开始启用firewalld
服务,那么你一定需要添加你的SSH服务端口,否则你将无法通过SSH远程连接到你的服务器。如果必要,同时需要添加其他服务所需的接口,例如mysqld
。要查看所有端口使用情况,请用:
1 | netstat -ltnp |
添加新的端口后记得重启服务。
上传静态网站
可以利用git
或者sftp
等工具把你本地的静态网站上传到你的服务器。具体使用方法在此不作详细阐述。提示:在sftp
中用put
命令可以上传文件或目录(需要-r
)。 上传后的静态网站一般放在/www/example.com/
或者/var/www/example.com/
目录下。当然,理论上来说,你放哪都行。下面本文假设放在/www/example.com/
目录下。
Nginx 配置
你需要告诉Nginx加载你的网站。转到相关目录:
1 | cd /etc/nginx |
你可以在nginx.conf
文件中直接修改,但这一般不太好。更好的风格是在当前目录的conf.d
目录下新建一个.conf
文件,文件名随意,只要能区分是你的网站即可。比如:
1 | sudo vim example-com.conf |
在文件中添加内容:
1 | server { |
注意把server_name
后面改成你的域名,以及root
后面改成你的静态网站存放的目录。 重启Nginx服务:
1 | sudo nginx -s reload |
然后访问http://example.com
(当然改成你的域名),看看能否正常访问了。注意这里是http
访问,而非https
。 附注: 如果你的网站打开是Welcome to CentOS
,而不是你自己的网站,那是因为Nginx加载了它的默认网站。如果是这样,那么你需要检查/etc/nginx/nginx.conf
文件中的http
的server
部分。那里一定设置了指向一个默认网站的配置。最简单的方法就是把相关设置改成你自己的网站。如果那样成功,你可以再相关的设置剪切出去,到conf.d
目录下的一个.conf
文件中(和上文说的一样)。 如果出现80端口冲突,也需要检查上面的默认网站设置。
配置HTTPS连接(可选)
我们用Let’s Encrypt的免费加密服务配置HTTPS的网站连接。 安装certbot-nginx
:
1 | sudo yum install certbot-nginx |
开始运行配置程序:
1 | sudo certbot --nginx -d example.com -d www.example.com |
然后根据屏幕上的提示来就可以了。具体配置的选择看个人需求及喜好。 注意这一步完成后,你的nginx
的配置文件会被自动修改。
结语
本文可能出现叙述上或操作上的错误,如有发现,请联系作者。本文出现的一切用法都可能因为程序的更新而不再有效,因此只能提供主要的思路。如果遇到问题,请不要气馁,查阅相关资料解决。 如果一切进展顺利,那么你已经成功将你的网站发布在互联网上了。恭喜你。