建站
今天终于把网站搭好了,由于我的强迫症,回滚了好几次,哈哈 ( ╯□╰ )
安装
服务器用的 $ubuntu$ $20.04$,先更新下软件列表
sudo apt-get update
sudo apt-get upgrade
然后安装软件,我用的是 $LNMP$,包含 $linux+nginx+mysql+php$,算是比较流行的网站服务器架构,对应的还有一种 $LAMP$
sudo apt-get install nginx
sudo apt-get install php7.4-fpm
sudo apt-get install mysql-server php7.4-mysql
注意:$php$ 和 $mysql$ 的版本对应配置
首先配置 $php$,切换到 $php$ 安装目录,一般在
/etc
下,修改 $php.ini$ 文件,将其中某行的
;cgi.fix_pathinfo=1
修改为
cgi.fix_pathinfo=0
,据说是有安全隐患(
可以不改?),之后重启 $php$
cd /etc/php/7.4/fpm/
ls # 显示四个文件conf.d php-fpm.conf php.ini pool.d
sudo vim php.ini
:set number # 显示行号
/;cgi.fix_pathinfo=1 # 搜索
798gg # 跳转到798行
cgi.fix_pathinfo=0 # 设置为0
:wq! # 保存退出
sudo service php7.4-fpm restart # 重启php
接下来配置 $nginx$,切换到 $nginx$ 安装目录,我的在
/etc/nginx
,选择 $sites-available/default$ 目录
设置路由,修改监听端口号(默认80端口,如果要改,
记得在服务商防火墙那儿开启端口号);
修改域名(如果有的话);
设置 $root$ 资源目录,这个是之后 $typecho$ 的资源目录,$url$ 会默认到这个路径下寻找资源,其中的$index$ 是默认的 $index.php$,也可以再加上 $index.php$
cd /etc/nginx/
sudo vim /etc/nginx/sites-available/default
# 修改如下
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# 准备存放 typecho 的 root 目录
root /usr/share/nginx/html;
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
# 自己的域名
server_name xxx.com;
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_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
include fastcgi_params;
fastcgi_index index.php;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
#}
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
}
注意:上面代码的 $32$ 行,unix:/run/php/php7.4-fpm.sock
是 $unix$ 的域套接字,要和 $php$ 的配置一样,否则报 $502$ 错误。检查 $php$ 配置如下
# 切换php中的pool目录
cd /etc/php/7.4/fpm/pool.d/
ls # 显示一个文件夹 www.conf
vim www.conf # 查看
# 大约36行显示
listen = /run/php/php7.4-fpm.sock # 与 nginx 保持一致
重启 $nginx$,如果你修改了 $unix$ 套接字监听内容则要连同 $php$ 一起重启
sudo service nginx restart
安装 $phpmyadmin$,并链接到准备存放 $typecho$ 的准备存放 $typecho$ 的 $root$ 目录
sudo apt-get install phpmyadmin
# 我的路径是 /usr/share/phpmyadmin/
sudo ln -s /usr/share/phpmyadmin/ /usr/share/nginx/html/phpmyadmin
下载 Typecho
下载 $typecho$ 安装包并解压到 $nginx$ 配置的 $root$ 对应目录下
# 老版本
sudo wget http://typecho.org/downloads/1.1-17.10.30-release.tar.gz
# 新版本
# sudo wget https://github.com/typecho/typecho/releases/download/v1.2.0/typecho.zip
# 解压到对应目录, 老版本是一个 build 文件夹
sudo tar -zxvf 1.1-17.10.30-release.tar.gz -C /usr/share/nginx/html/
# 如果 nginx 目录下的 html 目录中有 index.php, 还要先删除 index.php, 避免同名冲突
# sudo rm /usr/share/nginx/html/index.php
# 把 build 文件夹下所有文件移动到当前的 html 目录里
sudo mv /usr/share/nginx/html/build/* /usr/share/nginx/html/
# 最后删除 build
sudo rm -rf /usr/share/nginx/html/build
ls # 此时有如下文件/文件夹
# admin index.php install install.php LICENSE.txt phpmyadmin usr var
创建数据库
借助了 $phpmyadmin$,可以可视化的建库
浏览器 $url$ 输入
xxx.com/phpmyadmin
或
ip/phpmyadmin
,同样的,$mysql$ 数据库 $3306$ 端口要开启
这个时候要登录 $mysql$ 数据库
# 查看在 mysql 下的默认账号和随机密码
sudo vim /etc/mysql/debian.cnf
# 进入 mysql, 注意:以下 xxx 代表自定义
mysql -u xxx -p xxx
# 进去后创建用户
create user 'xxx'@'%' identified by 'xxx';
# 授权
grant all privileges on *.* to 'xxx'@'%' with grant option;
# 刷新, 重建内存数据
flush privileges;
# 然后用上面自定义的账号密码登录 phpmyadmin
进入 $phpmyadmin$,点击左侧的新建,数据库取名
xxx_xxx
,其他的默认就行
配置 Typecho
浏览器输入自己要配置的域名或上面填写过的 $ip$,进入欢迎页面
此时填写数据库用户名、密码、数据库名、数据库前缀名,可能创建 $config.inc.php$ 会报错,需要复制代码
# 手动配置 config.inc.php
sudo vim /usr/share/nginx/html/config.inc.php
点击创建完毕,继续安装
大功告成
补充
开启地址重写
# 在 $nginx$ 的 $service$ 设置中,加入以下代码,并在 typecho 后台设置 > 永久链接设置 > 启用地址重写功能
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
# 重启 $nginx$
设置 $php$ 的
error_reporting
,$php$ 的日志文件存在
/var/log/nginx
下
cd /etc/php/7.4/fpm/
sudo vim php.ini
# 找到 error_reporting, 大约在465行, 修改为
error_reporting = E_ALL & ~E_NOTICE
# 重启php服务
sudo service php7.4-fpm restart
nginx 素质三连
sudo vim /etc/nginx/sites-available/default
sudo nginx -t
sudo systemctl reload nginx
参考