|
Discuz 在 Linux 上的安装,说到底就三件事:PHP 环境、MySQL 数据库、文件权限。我见过太多人卡在权限上折腾一整天,其实问题往往出在一个很蠢的地方——SELinux 没关。 先确认你的系统。CentOS 7/8、Ubuntu 20.04/22.04 都行,我用 Ubuntu 22.04 举例,别的发行版把 apt 换成 yum 或 dnf 就行。 装 PHP 和 MySQL Discuz X3.5 要求 PHP 7.4 以上,MySQL 5.7 或 MariaDB 10.3 以上。Ubuntu 下一条命令搞定: sudo apt install php php-fpm php-mysql php-gd php-xml php-mbstring php-curl php-zip mysql-server nginx -y 装完检查一下 PHP 版本:php -v。如果显示 8.1 或 8.2,没问题,Discuz 新版本已经兼容了。老版本 X3.4 在 PHP 8 下会报一堆 deprecated 警告,建议用 PHP 7.4,但 Ubuntu 22.04 默认源里没有,得加 ppa:ondrej/php,这个自己搜一下,不展开。 MySQL 装好后跑 sudo mysql_secure_installation,设 root 密码,删匿名用户,禁止远程 root 登录。然后建库: CREATE DATABASE discuz DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'discuz'@'localhost' IDENTIFIED BY '你的密码'; GRANT ALL PRIVILEGES ON discuz.* TO 'discuz'@'localhost'; FLUSH PRIVILEGES; 字符集一定用 utf8mb4,别用 utf8。MySQL 里的 utf8 是残废的,存不了 emoji,以后用户发个表情就乱码,你哭都来不及。 下载和放置文件 去 Discuz 官网或 Gitee 下载最新版,解压后把 upload 目录里的东西全部拷到网站根目录。我习惯放 /var/www/discuz。 wget https://gitee.com/Discuz/DiscuzX/releases/download/v3.5/Discuz_X3.5_SC_UTF8_20230520.zip unzip Discuz_X3.5_SC_UTF8_20230520.zip sudo mv upload /var/www/discuz 接下来是重头戏——权限。Discuz 安装时要写 config 目录,还要往 data、uc_client、uc_server 里写缓存。偷懒的做法是: sudo chown -R www-data:www-data /var/www/discuz sudo chmod -R 755 /var/www/discuz sudo chmod -R 777 /var/www/discuz/config /var/www/discuz/data /var/www/discuz/uc_client /var/www/discuz/uc_server 777 不安全,但装完可以改回 755。我一般装完就把 777 撤掉,只留 config 目录可写,其他目录让 www-data 拥有就行。 Nginx 配置 别用 Apache,Nginx 配 Discuz 更清爽。在 /etc/nginx/sites-available/discuz 写: server { listen 80; server_name your_domain.com; root /var/www/discuz; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; } location ~ /\.ht { deny all; } } 软链接到 sites-enabled,然后 nginx -t 测试,systemctl reload nginx。PHP-FPM 的 socket 路径根据你装的版本改,用 ls /run/php/ 看一眼就知道。 跑安装向导 浏览器打开你的域名,应该看到 Discuz 安装界面。如果显示 403,检查 Nginx 用户和文件权限;如果显示 502,PHP-FPM 没跑起来,systemctl status php8.1-fpm 看日志。数据库地址填 localhost,库名 discuz,用户 discuz,密码是你刚才设的。 安装过程会提示你哪些目录不可写,照着改权限就行。装完记得删掉 install 目录,不然被人重装就完蛋: sudo rm -rf /var/www/discuz/install 最后说一个坑:如果你用 CentOS,SELinux 默认开着,Nginx 读不了 /var/www 下的文件,报 403。要么 setenforce 0 临时关,要么 chcon -R -t httpd_sys_content_t /var/www/discuz 改上下文。我一般直接关 SELinux,省事,内网机器无所谓。 装完进后台改改基本设置,把伪静态规则加上,Discuz 的 SEO 会好很多。Nginx 的伪静态规则在后台能直接复制,贴到 server 块里 reload 就行。 |