Loading... ## 引言 截止至 `2024年3月27日 10:23:48`,当前最新的稳定版本是 `v1.2.1` 这里要安装的是当前稳定版本 `v1.2.1`,适用于 `php7`及以上版本,但 `php8`暂不支持,如果需要高版本的支持,请前往 `github`上下载最新开发版本。 首先明确,`typecho`开源博客,是一个软件,也就是 `php`代码和 `html`、`css`、`js`代码的集合,是属于软件包,不是一个支持环境,所以需要你自行安装好相关支持环境,可以参见我其他的博客内容。 官方说法是需要有以下的支持条件的: * PHP 7.2 以上 * MySQL, PostgreSQL, SQLite 任意一种数据库支持,并在 PHP 中安装了相关扩展 * CURL 扩展支持 * mbstring 或 iconv 扩展支持 ### 传送门 * 高版本的 `php`需要前往 `github`下载最新开发包进行安装。 ```shell # 安装依赖 sudo yum -y install unzip # 下载包 wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip # 解压到指定目录 unzip typecho.zip -d /server/package/typecho-1.2.1 ``` ### 准备的信息 我这里需要提前准备(想)好一些存放的信息,下面你如果跟我不一致,需要进行修改: | 项目 | 值 | | --------------------------- | --------------------------------------------- | | 博客网站域名 | typecho.hw13.cn | | 网站源码下载目录 | /server/package/typecho-1.2.1 | | 网站运行(安装)目录 | /server/web/typecho | | 网站`Nginx`配置文件存放位置 | /server/nginx/conf/vhost/typecho.hw13.cn.conf | ## 下载软件包 ### 官网下载 打开 `typecho`的官网地址(如下): [https://typecho.org](https://typecho.org)  找到下载按钮,点击进去。  你这里有两种方式可选择: 1. 点击直接下载到你电脑上,然后通过 `ftp`或 `scp`命令上传到服务器上(可参见我另一篇博客) 2. 通过服务器上的 `wget`命令,直接从 `typecho`官网拉取软件包  我这里选用的是第二种,直接复制下面这个下载链接(或者从官网复制): ``` https://github.com/typecho/typecho/releases/latest/download/typecho.zip ``` ### 服务器直接下载 登录进服务器,使用 `wget`命令进行下载  下载完成后,需要解压这个压缩包。 首先,你需要确定一个包的解压位置,比如我,我提前准备好了这个路径: `/server/package/typecho-1.2.1` 那么你就可以用 `unzip`命令进行解压了(如果你是选用第一种办法,先下载到你电脑上,那可以先解压再传上来) 使用命令: ```shell unzip typecho.zip -d /server/package/typecho-1.2.1 ``` 进行解压。 **注意,如果你不加 `-d`参数的话,会直接解压到当前目录中,造成跟其他的源码包混在一起** (我已经踩过坑了……你要是想再踩一次,我也不反对)  这个时候,如果你跟我一样,提示没有安装 `unzip`包的话,,那就去安装依赖吧。 使用命令:`sudo yum -y install unzip` 这里是需要全局权限进行安装的。  安装完成后再次调用解压命令,这时候就可以正常解压了。  你可以看到你的目录下多了一个 `typecho-1.2.1`的目录。 里面就是这个 `typecho`开源博客的源码了。  ## 安装 ### 源码迁移到项目目录 接下来我们将这个解压后的文件夹(`typecho`源码目录)移动到你的项目目录下 ``` mv /server/package/typecho-1.2.1 /server/web/ ```  然后我们进到项目目录下,发现已经存在这个博客项目了。 ### 进行 `Nginx`的解析配置 在你的 `Nginx`配置下,找到你的多站点配置目录。 > 下面内容如果看不懂站点域名配置的,可以移步另一篇博客查看 > > <div class="preview"> <div class="post-inser post box-shadow-wrap-normal"> <a href="https://hw13.cn/298.html" target="_blank" class="post_inser_a no-external-link no-underline-link"> <div class="inner-image bg" style="background-image: url(https://aliyun-yuesha-public-oss.oss-cn-zhangjiakou.aliyuncs.com/usr/uploads/2023/12/365133895.png);background-size: cover;"></div> <div class="inner-content" > <p class="inser-title">使用Nginx在一台Linux服务器上部署多个站点域名</p> <div class="inster-summary text-muted"> 引言恩……这篇文章的起因嘛,主要还是贫穷。唉,哪有后端不想一个项目一台服务器的呢?无奈之举而已实现方法1. 有Ng... </div> </div> </a> <!-- .inner-content #####--> </div> <!-- .post-inser ####--> </div> 或者看你的 `Nginx`配置情况,放到指定位置。  在这里,我创建了一个 `域名.conf`的配置文件(只是为了方便管理,没有特殊含义,只要是 `.conf`后缀即可) 然后编写里面的内容,使用 `vim`命令打开这个文件  下面,我给出我的文件信息仅供大家参考: ```nginx # 网站 http 访问 server{ listen 80; server_name 域名; root 项目目录; index index.php index.html index.htm; # 所有请求全部重定向到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; } } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME 项目目录$fastcgi_script_name; include fastcgi_params; } } ```  我给的代码当中增加了几条 `location / {}`语句 另外将 `PHP`执行脚本的解析转发给 `9000`端口,这个端口是我这个环境的 `php-fpm`进程监听的,请求会由 `fpm`进程处理完成返还给 `Nginx`,然后再响应给客户端。 接下来我们保存并退出(输入 `:wq`) 回到命令行里,这时候进行配置的检查命令: `nginx -t`  发现是正常的,显示 `syntax is ok`和 `test is successful`,表示测试都通过了。 这时候我们就可以进行服务的重启,让我们的配置生效了。 ``` nginx -s reload ``` 这是一种较为平稳的重启命令 执行后没有报错,就代表重启成功了。 ### 确定服务器的公网 `ip`(阿里云) 首先要确定服务器所在的 `ip`,我这里是阿里云购买的 `ECS`服务器,打开阿里云的控制台。  点击打开这个控制台后,找到你购买的实例。  注意,这里要复制的是公网地址,如果是私网地址(内网)会解析失败的。 ### 配置域名解析(阿里云) 接下来我们要进行域名解析相关的配置,这里我是在阿里云万网购买的域名,如果你是在别的平台购买的域名或找别人要的二级域名,就需要参考别的方式了。  首先登录到阿里云平台 1. 点击左上角橙色菜单下 2. 找到“云解析DNS”菜单(可通过搜索栏搜索) 3. 找到你上面配置好,要解析到这台服务器的域名 4. 点击“解析设置”按钮  然后进入到解析设置里,我们点击“添加记录”按钮,增加一条域名解析的 `DNS`记录  选择解析方式是 `A解析-域名指向一个ip地址` 主机记录填写为上面获取的 `公网ip地址`,`ttl`选择默认即可  设置完成后,点击右下角的确定即可 ### 检测解析结果是否符合预期 设置完成后,可以使用当前电脑的 `ping`命令,进行域名解析检测 在你的 `cmd`窗口中,输入 `ping 你的博客域名`,查看返回的ip地址,是否是你的服务器地址。  ### 运行 `typecho`网站安装程序 首先,你在你的电脑浏览器上输入你的博客网站域名。 网站打开后,会自动跳转到下列地址。  如果见不到这个页面,可以去检查之前的步骤是否正常完成了。 或者也可以关注我们公众号,给我发消息。 我们开始点击下一步  这时候会出现这里有个写入失败的报错,我们按照提示内容,对指定目录进行权限设置。 **注意,这里是要在 网站运行(安装)目录 下的这个`uploads`进行权限设置,不要搞错了** 这里找到这个目录,使用`cd`命令进入,可以看到这个目录权限为: `rwxr-xr-x`,我们给进行权限的提升。  根据你服务器上的具体信息进行权限提升。 **我看到网上有很多说法是直接设置成777权限的,我并不提倡,最好是按照你的`nginx`访问者,和`php-fpm`访问者的权限进行划分,这样更安全** 我这里做了个所属者的修改,改为`Nginx`访问者作为所有者。  这里我为了以后方便,还可以把整个`usr`目录都修改所属者信息,方便以后进行插件和主题的修改。  然后回到网页,再点击下一步,就可以正常进入下一个页面了。 这里会出现一个数据库信息的填写界面,你需要填写一些你数据库的账号、密码、端口、前缀等等。 如果数据库服务未安装,那就需要先进行安装或配置。 当然,你有钱的话,可以额外购置一台`RDB`数据库服务器,我就不再多说了。 这里的数据库适配器选择,我选择了`PDO`适配,因为我安装过`php`的`pdo`依赖,也可以选择其他的方式,只是你需要去配置一些依赖了。  填写完成后,点击下面的“确认”按钮 由于我们一开始只给了`usr/`目录修改了所属者和权限,根目录并没有给权限,所以这里会出现一个报错(不用担心,是故意的) 提示创建配置文件失败,我们复制这个配置文件的内容。 根据这个提示的文件路径,去到根目录创建一个`config.ini.php`文件,这个文件最好不要让程序自动创建,这样对于权限来说更安全。  这里我们来到根目录,使用`vim`命令创建这个配置文件 ```shell vim config.inc.php ```  文件内容就从这个网站显示的内容来复制过去。  粘贴完成后,点击键盘的`Esc`按钮,之后输入`:wq`进行保存并退出  我们再点击这个网页上的按钮。 这里就进入了下一步了,我们输入自己要设置的管理员账密,和邮箱(用来找回密码的),然后点击下一步。  如果你看到这样的画面,就代表你的安装已经基本完成了,它会再把你输入的账密提示出来,你需要保存或者记录下来。 可以打开你的网站欣赏单纯的`typecho`网站了,当然也可以直接进入后台管理,发布你的第一篇博客。  ## 正常访问网站 如下图,代表安装已经全部完成了  ## 额外注意 如果你的网站打开第二个页面(比如文章详情页,后台登录后的管理页面)发现打不开,或者出现`404 not found`的情况,可以跟着我配置下面的一些东西 ### 配置`Nginx`重写配置 找到之前我们的`Nginx`配置文件,加上几行代码 ```nginx location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?query=$1 last; } } ``` 这样就可以实现重写的部分了。  ### 开启后台的地址重写功能 我们可以在后台开启地址重写,便于搜索引擎收录,具体方式是: 在顶上的配置菜单中,打开开关,然后进行保存。  欢迎关注拓行公众号,分享各种技术博客文章拓行——奋勇进取,开拓未来,砥砺前行 最后修改:2024 年 04 月 25 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果您对各种技术博客文章感兴趣,欢迎关注拓行公众号,分享各种专业技术知识~