一、购买域名

我在腾讯云购买了erfty.com域名,并备案,花费23元。
双拼和四英文的.com域名几乎全部被注册,但五位英文字母组合的.com域名还有很大的余裕,我原本比较倾向ftyoo.com,最终选择了erfty.com


二、购买云服务器

11-09下午三点,我下定决心租用阿里云ecs云服务器,花费84.97元。

实例规格ecs.s6-c1m2.small
CPU&内存1 核 2 GiB
操作系统CentOS 7.4 64位
高效云盘40 GiB (2120 IOPS)

选择CentOS 7.4系统是想熟悉Linux环境,版本没有选择较新的,怕出问题无法从网上找到解决方案。
因为是做个人网站,备案很方便。9号提交备案审核,11号拿到ICP备案号。阿里云初审的时候客服打电话来核实个人信息,提醒我网站名称像人名可能通不过,可以帮我后台修改,他建议取原名的后两个字加网,特别难听,现在看来影响不大,日后重新改名备案下。


三、域名解析

把在腾讯云购买的域名DNS解析到阿里云服务器上。
我用了腾讯云的快速解析,添加@www两条A记录,把域名指向服务器主机IP,一分钟配置完成。


四、部署LNMP环境

我喜欢简洁轻快的风格,Typecho的CMS框架是我的首选。Apache和Nginx之间选择了轻量级的Nginx,确定使用LNMP开发环境,即Linux、Nginx、Mysql、PHP。看了很多部署Web服务的教程都推荐使用宝塔面板,但我个人不喜欢这种小白式的方法,于是打算手动部署。

主要教程和参考资料是阿里云建站教程的帮助文档,CentOS 7手动部署LNMP一栏,每条操作指令都写得清清楚楚。

远程连接我选用Putty,开源免费。因为Putty的远程登陆是SSH通信,需要在阿里云实例打开22端口。在安全组策略配置一条SSH(22)入规则,授权对象0.0.0.0/0,表示允许所有访问。阿里云的快速配置规则非常方便,只要勾选+确定就行。

远程连接前先重置实例的密码,然后在Putty的IP栏键入实例公网IP,默认使用22端口和SSH连接方式,实现远程登陆实例。

之后就是完全照着帮助文档敲命令,下载、安装、配置LNMP。

最后浏览器输入公网IP测试环境(服务器未完成备案,无法通过域名访问),连接超时。排除安装失败,怀疑配置有错误,一番操作后发现,原来犯了个低级错误,没有打开80(HTTP)端口。

安全组添加HTTP入规则后,成功访问到网站,CentOS的初始页面。

OK,至此建站大业已经完成大半!


五、安装Typecho

官网下载Typecho源码,上传到服务器。
上传工具本来想用8UFTP,后来看到一个老哥说WinSCP可以直接连接阿里云实例操作,不需要多余的配置,遂选择WinSCP。

输入IP用户名密码,成功连接上服务器。图形化界面操作,在本地解压Typecho源码压缩包,得到一个build文件夹,把文件夹里的所有文件上传到服务器Web目录,我的网站根目录是/usr/share/nginx/html,也就把Typecho安装到该目录下。

然后就可以浏览器访问网站安装配置Typecho了,结果当然是又报错了。

Nignx 404

访问网站显示Nginx 404的界面,看来是Nginx的配置出了问题。

vim /etc/nginx/nginx.conf打开配置文件nginx.conf研究,最后终于在网上找到了解决办法。

原代码

 #添加下列信息,配置Nginx通过fastcgi方式处理您的PHP请求。
 location ~ .php$ {
 root /usr/share/nginx/html;    #将/usr/share/nginx/html替换为您的网站根目录,本教程使用/usr/share/nginx/html作为网站根目录。
 fastcgi_pass 127.0.0.1:9000;   #Nginx通过本机的9000端口将PHP请求转发给PHP-FPM进行处理。
 fastcgi_index index.php;
 fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 include fastcgi_params;   #Nginx调用fastcgi接口处理PHP请求。
    }

网页404的原因是 /etc/nginx/conf.d/http.conf 文件的 location 设置要支持 pathinfo,即将location ~ \.php$改成 location ~ .*\.php(\/.*)*$

修改后

 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;
        }

修改完成后重启Nginx和fpm

[root@XIzhi ~]# service nginx restart
[root@XIzhi ~]# service php-fpm restart

改完代码,终于看到了Typecho配置界面,按照程序安装向导填写相关参数,创建网站管理员账户。

其间创建数据库有个小坑,默认的数据库名称typecho在服务器上是没有的,导致Typecho无法完成安装。这个问题很好解决,我在Mysql里创建了一个同名库。

[root@XIzhi ~]# mysql -u root -p;
password> 
mysql> create database typecho;

完成安装,但是发现打不开文章详细内容,页内只能跳转文章首页。

于是又去网上查解法,查到问题所在:PHP这块不支持pathinfo,将 Nginx 的 PHP 段改成如下形式:

 location ~ .*\.php(\/.*)*$ {
 root /usr/share/nginx/html;
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 fastcgi_split_path_info ^(.+?.php)(/.*)$;  #添加此段
 fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 include fastcgi_params;
        }

添加fastcgi_split_path_info ^(.+?.php)(/.*)$;由 Nginx 设置 PATH_INFO 值。
然后重启服务使配置生效。

[root@XIzhi ~]# systemctl restart nginx
[root@XIzhi ~]# systemctl restart php-fpm

六、安装SSL证书

使用SSL证书可以让网站从 http 协议升级为 https 加密协议,随着技术发展成为大势所趋。如果保持原始的 http 浏览器会把网站标识为不安全网站,因此安装SSL证书也应该视为网站搭建的必备步骤之一。

阿里云可以0元购买SSL证书,我用的是买腾讯云域名的时候附赠的SSL证书。两者都是时限一年,需要验证审批。

首先记得放开服务器的 443 端口(https默认端口),安全组添加一条443端口入规则。

在腾讯云SSL证书管理把签发好的证书文件压缩包下载到本地,解压后看到ApacheIISNginxTomcat几个不同环境对应的文件夹。我用的是nginx环境,对应的nginx文件夹里有.crt.key两个文件。把这两个文件上传到nginx的安装目录里,我的nginx安装路径是/etc/nginx

然后编辑nginx配置文件nginx.conf

server{
    listen 443 ssl;  #配置HTTPS的默认访问端口号为443
    server_name www.erfty.com;  #证书绑定的域名
    root /usr/share/nginx/html;  #网站根目录
    ssl_certificate 1_erfty.com_bundle.crt;  #证书的文件名称
    ssl_certificate_key 2_erfty.com.key;  #证书的密钥文件名称
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  #使用该协议进行配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此加密套件
    ssl_prefer_server_ciphers on;

保存修改并重启nginx服务器

:wq
[root@XIzhi ~]# systemctl restart nginx

设置自动将 HTTP 的请求重定向到 HTTPS

server {
    listen 80 default_server;
    server_name  www.erfty.com;
    return 301 https://$host$request_uri;

注意:证书安装成功后,需要在虚拟主机上配置伪静态规则,才能全站都支持HTTPS,否则只有网站的主页支持HTTPS,网站的子目录将不支持HTTPS。)

最后浏览器输入域名验证SSL证书是否安装成功,网页地址栏出现小锁标志,表示证书安装成功。

标签: 建站

添加新评论