介绍

typecho基于PHP开发,支持多种数据库,是一款内核强健、扩展方便、体验友好、运行流畅的轻量级开源博客程序。选用Typecho,搭建独一无二个人网络日志发布平台,享受创作的快乐。

安装环境要求(v1.2.0版本)

  • PHP7.2以上
  • MySQL, PostgreSQL, SQLite 任意一种数据库支持,并在 PHP 中安装了相关扩展
  • CURL 扩展支持
  • mbstring 或 iconv 扩展支持

环境搭建

安装PHP

安装阿里的 centos7 仓库

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum repolist

安装阿里的 epel 仓库(centos 7)

curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
 
yum makecache
yum repolist

安装阿里的 remi 仓库(centos 7)

yum install -y https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm
 
sed -i  's/https*:\/\/rpms.remirepo.net/https:\/\/mirrors.aliyun.com\/remi/g'  /etc/yum.repos.d/remi*
sed -i 's/#baseurl/baseurl/g' /etc/yum.repos.d/remi*
sed -i 's|^mirrorlist|#mirrorlist|' /etc/yum.repos.d/remi*
 
yum makecache
yum repolist
 
yum -y install yum-utils

安装PHP8(centos7)

yum-config-manager --enable remi-php82
 
yum install -y php82 php82-php-devel  php82-php-fpm  php82-php-mbstring php82-php-memcache php82-php-memcached php82-php-redis  php82-php-mysqlnd  php82-php-pdo  php82-php-bcmath php82-php-xml php82-php-gd php82-php-gmp php82-php-igbinary php82-php-imagick   php82-php-mcrypt  php82-php-pdo_mysql php82-php-posix php82-php-simplexml  php82-php-opcache php82-php-xsl php82-php-xmlwriter php82-php-xmlreader php82-php-swoole php82-php-zip php82-php-phalcon  php82-php-yaml php82-php-yar php82-php-yaf php82-php-uuid

安装阿里的 composer 镜像源(centos 7)

ln -s /usr/bin/php82 /usr/bin/php
 
curl -o /usr/local/bin/composer https://mirrors.aliyun.com/composer/composer.phar
 
chmod +x /usr/local/bin/composer
 
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 

使用 root 身份执行 composer 命令,会提示输入 yes ,挺麻烦,则

vim /etc/environment

输入

export COMPOSER_ALLOW_SUPERUSER=1

保持退出后

source /etc/environment

安装 nginx 并整合 php-fpm 服务

# 下面这个echo是一句命令,得一起复制
 
echo $'[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true ' > /etc/yum.repos.d/nginx.repo
 
# 上面是一条echo命令。
 
yum makecache
yum install -y nginx
systemctl enable nginx
systemctl enable php82-php-fpm
sed -i 's/user\ =\ apache/user\ =\ nginx/g' /etc/opt/remi/php82/php-fpm.d/www.conf
sed -i 's/group\ =\ apache/group\ =\ nginx/g' /etc/opt/remi/php82/php-fpm.d/www.conf
 
rm -f /etc/nginx/conf.d/default.conf
vi /etc/nginx/conf.d/default.conf

编辑 /etc/nginx/conf.d/default.conf 文件内容如下

server {
    listen       80;
    server_name  localhost;
    charset utf-8 ;
    access_log  /var/log/nginx/host.access.log  main;
    root   /usr/share/nginx/html;
    index index.php  index.html index.htm;
    error_page 404  500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $realpath_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

vi /usr/share/nginx/html/1.php添加一个 php 文件如下:

<?php
phpinfo();

启动 php-fpm 和 nginx 并验证安装正确

systemctl start nginx
systemctl start php82-php-fpm
 
curl localhost/1.php
# 如果能看到很多的大量输出,说明php和nginx正确安装了。

安装 mysql 8(centos 7)

rpm -Uvh https://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm
 
# 下面这句安装mysql服务,时间大概1到3分钟左右。
 
yum --enablerepo=mysql80-community install mysql-community-server
 
systemctl enable mysqld
systemctl start mysqld
 
# 查看初始密码:
grep 'temporary password' /var/log/mysqld.log
 
# 用查看到的密码进入mysql 的 shell
mysql -uroot -p

下面,整套设置新用户流程,先改初始,再加新用户并授权,再删除老用户

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'tb4Wn3BthR.';
flush privileges;
set global validate_password.policy=LOW;
create user 'root'@'%' identified by 'root1234'; #你也可以修改为别的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root1234';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
drop user root@localhost;
flush privileges;

输入

mysql -uroot -p
# 密码为刚设置的
root1234

# 这句话查看用户的加密方式。
select user, host, plugin from mysql.user\G;

安装 mbstring 的扩展支持

yum install php-mbstring

修改 /etc/php.ini,文件末添加

extension=mbstring.so

重启 nginx 服务

systemctl restart nginx

安装 typecho

下载 typecho 正式版

解压并上传文件至网站根目录

image-20230203190015080.png

/etc/nginx/conf.d 目录下新建自己网站配置文件

server {
    listen 80;
    server_name *.hamstertoss.xyz;
    return 301 https://$http_host$request_uri;
}
 
server {
    listen 443 ssl http2;
    server_name love.hamstertoss.xyz;
 
    port_in_redirect off;
 
    ssl_certificate /etc/ssl/love/cert.pem; # 设置你的域名证书
    ssl_certificate_key /etc/ssl/love/key.pem; # 设置你的域名证书
 
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 按照这个协议配置
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
    ssl_prefer_server_ciphers on;
 
    root /www/wwwroot/hamstertoss; # 网站根目录
    location / {
        #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
        #例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
        #root /home/www;
        index index.php index.html index.htm;
        try_files $uri $uri/ = 404;
    }
    location ~ .*\.php(\/.*)*$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

注意开放 443 端口

firewall-cmd --add-port=443/tcp --permanent
systemctl restart nginx

访问域名,开始下一步时会出现权限问题

image-20230203200543633.png

直接给 typecho 目录及子文件赋予所有权限,防止安装时出现其他问题

cd /www/wwwroot # 进入存放你的网站根目录
chmod -R 777 hamstertoss # 这里我将 typecho 重命名为了 hamstertoss

数据库用户名密码在/etc/mysql/debian.cnf文件中查看,根据数据库名需要创建typecho的数据库 登录数据库并创建数据库

mysql -u root -p
 
create database typecho;
 
quit

填入 typecho 初始化配置

image-20230203201827695.png

创建管理员账号后就可以享用啦

image-20230203201949893.png

后面我还会分享 typecho 精美主题以及优化教程,持续关注哦~