此篇文章旨在记录自己纯手工安装Typecho博客程序的过程,如今各种傻瓜式建站脚本层出不穷,无论你是虚拟主机还是有终端操作权限的主机都有各种各样的套件安装方法。如果你在寻找更简单更易于管理的http套件的安装方法,不妨试试安装宝塔面板或者使用github上的套件安装脚本。

关键词:ubuntu nginx php postgresql typecho

系统环境
腾讯云轻量云服务器
Ubuntu20.04

一、环境安装

1.nginx服务器

1).安装

使用以下命令安装nginx服务器

sudo apt install nginx

启动服务并且开机自启

sudo systemctl start nginx
sudo systemctl enable nginx

查看运行状态和端口监听状态

sudo systemctl status nginx
sudo netstat -ltpn4 | grep nginx

2).测试

在确保nginx服务器已经启动和成功监听80端口的情况下,使用浏览器访问服务器ip地址即可看到nginx示例html

welcome-to-nginx.png

2.postgresql服务器

1).安装

使用以下命令安装postgresql服务器

sudo apt install postgresql

启动服务并且开机自启

sudo systemctl start postgresql
sudo systemctl enable postgresql

查看运行状态和端口监听状态

sudo systemctl status postgresql
sudo netstat -ltpn4 | grep postgres

netstat-postgres.png

若能正常显示如上结果即表明数据库已经成功绑定5432端口

3.php7.4

1).安装

sudo apt install php7.4 php7.4-fpm php7.4-pgsql php7.4-mbstring php7.4-curl

其中比较重要的是php7.4-fpm,这个php模块会将php和nginx连接起来,让nginx在收到php请求时将其移交至php来解析处理

另一个是php7.4-pgsql,这个php模块能让php来对postgresql数据库进行操作

2).测试

测试到目前为止其上安装的内容工作是否正常,我们的目的是能够让服务器解析php内容。

首先进入/etc/nginx/sites-available/ 目录,将default配置文件拷贝一份,然后进行编辑

cd /etc/nginx/sites-available/
sudo cp default php-default
sudo vim php-default

可以参照以下我的配置文件

server {
        listen 80;
        root /var/www/html;
        index index.html index.htm index.nginx-debian.html index.php;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
               include snippets/fastcgi-php.conf;
               # With php-fpm (or other unix sockets):
               fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
}

配置文件编辑完成后将available文件夹下的php-default配置文件软连接至enabled文件夹,重载nginx服务即可使新配置文件生效

sudo rm /etc/nginx/sites-enabled/default
#删除默认启用的配置文件
sudo ln -s /etc/nginx/sites-available/php-default /etc/nginx/sites-enabled/php-default
#将编辑好的配置文件启用
sudo systemctl reload nginx
#重启服务让新配置文件生效
sudo systemctl status nginx
#查看nginx服务是否成功重载

接下来只需要向/var/www/html目录中添加一个index.php文件,即可通过访问它来测试php是否正常

sudo vim /var/www/html/index.php

向其中添加以下内容

<?php

phpinfo();

?>

保存退出后即可通过在浏览器中访问以下链接,如果能正常出现php信息页面即标识你的php,nginx环境已经成功安装

[服务器ip]/index.php

php-test.png

二、数据库设置

typecho使用数据库来存储你的网站设置和所有内容,你会在第三章对typecho进行初始设置时遇到数据库连接页面

在本教程中使用postgresql作为博客数据库,但是使用mysql,mariadb等数据库也是没有任何问题的,但是相应的你需要安装对应数据库的php模块,以便php可以连接数据库

在你安装完pgsql后其会自动为你创建一个系统用户名为postgres的用户,这个用户对pgsql有全部操作权限,相当于linux的root账户,所以接下来的操作需要你在数据库中创建一个typecho数据库,然后将其授权给一个新的用户

1.前期准备

首先来新建一个系统用户,这个用户可以用来单独管理typecho数据库

sudo adduser typecho
sudo passwd typecho

2.登录数据库

sudo su - postgres -c psql

登录成功后显示如下

psql-login.png

3.为postgres用户重置密码

\password postgres

4.创建数据库用户typecho(刚才创建的是Linux系统用户),并设置密码

CREATE USER typecho WITH PASSWORD 'password';

5.创建用户数据库,这里为typechodb,并指定所有者为typecho

CREATE DATABASE typechodb OWNER typecho;

6.将typecho数据库的所有权限都赋予typecho

GRANT ALL PRIVILEGES ON DATABASE typechodb to typecho;

最后退出psql

\q

三、Typecho安装

1.nginx配置文件

还记得之前为了测试php是否正常时写的nginx配置文件吗?

在安装typecho之前你需要完善这个配置文件,如果你有域名而且计划为你的网站部署SSL证书,或者需要配置伪静态,访问控制等,那你就有必要好好了解如何编写配置文件

如下是我的示例配置文件

server{
        #监听HTTPS端口
        listen 443 ssl http2;
        #网站根目录
        root /var/www/typecho;
        #网站域名
        server_name blog.awolon.me;
        index index.php;

        #伪静态
        location / {
                if (-f $request_filename/index.html){
                rewrite (.*) $1/index.html break;
                }
                if (-f $request_filename/index.php){
                rewrite (.*) $1/index.php;
                }
                if (!-f $request_filename){
                rewrite (.*) /index.php;
                }
                try_files $uri $uri/ =404;
        }

        #php7.4-fpm
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }

        #SSL证书设置内容
        ssl_certificate /etc/letsencrypt/live/awolon.me/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/awolon.me/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

# 301 Redirect
# Forbidden Non-SSL Access
server
{
        if ($host = blog.awolon.me) {
                return 301 https://$host$request_uri;
        } # managed by Certbot

        listen 80;
        server_name blog.awolon.me;
        return 404; # managed by Certbot
}

2.typecho程序上传

从Typecho官网或者GitHub上下载typecho程序至服务器

将程序解压到网站根目录下,即可完成操作

Typecho官网下载页面

GitHub:A PHP Blogging Platform. Simple and Powerful.

3.执行typecho安装程序

直接访问服务器ip地址或者域名即可进入typecho安装程序

修改 /usr/uploads 目录的权限设置为可写然后继续升级

cd /var/www/typecho
chmod 756  usr/uploads

接下来进入数据库配置页面

typecho-initial-config.png

使用第二章数据库设置中配置好的内容填写

需要注意以下几点

  1. 数据库适配器可以使用原生函数适配器,
  2. 数据库前缀可以自己指定,这个选项主要为了区分多站点
  3. 数据库地址不要更改,当前参数默认连接本地数据库
  4. 数据库端口不要更改

以下是我创建的数据库内容

数据库用户名数据库密码数据库名
typecho先前设置的用户密码typechodb

此时下一步会报错,这个问题还是因为web用户没有对typecho程序根目录的写入权限,具体解决思路可以参考我的这一篇文章Typecho 上传附件时提示上传失败,这里我们直接按照指示将框中内容写入指定文件即可

sudo vim /var/www/typecho/config.inc.php

接下来就可以正常创建用户了,尽情享受博客吧

文章作者:四文鱼Max

本文链接:https://blog.awolon.fun/archives/deploy-typecho.html

许可协议:CC BY-SA 4.0

标签: postgresql, typecho, nginx, php

添加新评论