今天突然想做一个自助建站系统,就是可以让用户简单填写一个表单输入站点信息,然后自动创建一个网站,搞了半天踩了很多坑终于实现了一个小demo
这次是用的typecho做实验,使用bash脚本编写,当然搞了半天主要不是脚本的问题,而是环境的问题,先来看看脚本,是比较简单的。
#!/bin/bash
# 设置变量
domain="test.oi.ink" # 替换为你的域名
nginx_conf="/etc/nginx/sites-available/${domain}" # Nginx 配置文件路径
nginx_link="/etc/nginx/sites-enabled/${domain}" # Nginx 软链接路径
webroot="/var/www/${domain}" # 网站根目录
typecho_file="typecho.zip" # Typecho 压缩包文件名
# 创建网站目录
echo "正在创建网站目录..."
sudo mkdir -p "${webroot}"
# 解压 Typecho 到网站目录
echo "正在解压 Typecho..."
sudo unzip -d "${webroot}" "${typecho_file}"
# 修改文件权限
echo "正在设置文件权限..."
sudo chown -R www-data:www-data "${webroot}"
sudo chmod -R 755 "${webroot}"
# 创建 Nginx 配置文件
echo "正在创建 Nginx 配置文件..."
sudo bash -c "cat > ${nginx_conf}" <<EOL
server {
listen 80;
server_name ${domain};
root ${webroot};
index index.php index.html index.htm;
location / {
try_files \$uri \$uri/ /index.php\$is_args\$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据你的 PHP 版本进行调整
}
}
EOL
# 创建 Nginx 软链接
echo "正在创建 Nginx 软链接..."
sudo ln -s "${nginx_conf}" "${nginx_link}"
# 重启 Nginx
echo "正在重启 Nginx..."
sudo service nginx restart
# 创建数据库
dbname="test"
dbuser="test"
dbpass="asdasdasdg"
mysql -u root -p -e "CREATE DATABASE $dbname"
# 创建用户并授权
mysql -u root -p -e "CREATE USER '$dbuser'@'localhost' IDENTIFIED BY '$dbpass'"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON $dbname.* TO '$dbuser'@'localhost'"
echo "数据库 '$dbname' 已成功创建,并授权用户 '$dbuser' 可访问。"
echo "完成!Typecho 站点已成功创建。"
echo "数据库信息:"
echo "数据库名:$dbname"
echo "数据库用户:$dbuser"
echo "数据库密码:$dbpass"
然后我是在本地的WSL子系统中测试的,在配置环境时出现了很多坑
首先是数据库,安装了N次MySql都不可以,每次都会有ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/tmp/mysql.sock‘ (2)的错误提示,在网上找了很多资料和解决方案全试了还是有问题,应该是WSL的锅,最后换了Mariadb,一次完美装上,丝滑。
然后是PHP的坑,最后莫名其妙的好了,配置Nginx的站点的时候整合PHP,每次网站都无法访问,最后怎么好了的我也没搞明白,配置文件总感觉没有问题~~~
然后!下面就是脚本执行成功后正常打开啦网站,这里对typecho的安装文件进行一些修改,打开数据库配置那步的页面时会自动获取本次创建的数据库来继续安装。
发表回复