常见问题

LAMP

如果你在使用 LAMP 的过程中也遇到了问题,请参考此文。
已经列出了常见的问题和解答,希望能对你有所帮助。

为什么选择 LAMP 一键安装脚本?
LAMP 是经典的建站环境,尤其适用于个人站长。
本脚本的软件版本更新及时,支持 PHP 及数据库自选安装。支持 PHP 和数据库程序自助升级。
安装方便,支持众多 PHP 插件,实际上是 2013 年开始为安装 Moodle 而量身打造的 LAMP 环境。
安装建议:根据自己的 CMS 建站系统要求,选择合适的软件版本安装即可。

更新时间:2022 年 02 月 19 日

程序目录:

  • MySQL 安装目录: /usr/local/mysql
  • MySQL 数据库目录: /usr/local/mysql/data(默认路径,安装时可更改)
  • MariaDB 安装目录: /usr/local/mariadb
  • MariaDB 数据库目录: /usr/local/mariadb/data(默认路径,安装时可更改)
  • PHP 安装目录: /usr/local/php
  • Apache 安装目录: /usr/local/apache
  • phpMyAdmin 安装目录: /data/www/default/phpmyadmin
  • Adminer 安装路径: /data/www/default/adminer.php
  • KodExplorer 安装目录: /data/www/default/kod

网站目录:

  • 默认的网站根目录: /data/www/default
  • 默认页位置: /data/www/default/index.html
  • 新建网站默认目录: /data/www/网站域名
  • phpmyadmin 后台地址: http://网站域名或IP/phpmyadmin/
  • phpmyadmin 默认用户名:root 默认密码:lamp.sh
    注:此密码为 MySQL 的 root 密码。在安装时会要求输入,如不输入则为默认密码 lamp.sh

配置文件:

  • Apache 日志目录: /usr/local/apache/logs
  • 新建网站日志目录: /data/wwwlog/网站域名
  • Apache 默认 SSL 配置文件: /usr/local/apache/conf/extra/httpd-ssl.conf
  • 新建网站配置文件: /usr/local/apache/conf/vhost/网站域名.conf
  • 新建网站 SSL 文件目录: /usr/local/apache/conf/ssl/网站域名
  • PHP 配置文件: /usr/local/php/etc/php.ini
  • PHP 所有扩展配置文件目录: /usr/local/php/php.d/
  • MySQL 配置文件: /etc/my.cnf

命令一览:

  • MySQL/MariaDB 命令:
/etc/init.d/mysqld (start|stop|restart|status)
  • Apache 命令:
/etc/init.d/httpd (start|stop|restart|status)
  • Memcached 命令(可选安装)
/etc/init.d/memcached (start|stop|restart|status)
  • Redis 命令(可选安装)
/etc/init.d/redis-server (start|stop|restart|status)

安装LAMP及建站简单流程:

  1. 安装 LAMP 环境
  2. 添加虚拟主机。运行命令:lamp add
    (如果只建一个站,则可以直接将网站程序上传至 /data/www/default 目录下即可)
  3. 上传并解压网站程序到网站目录,默认位置为:/data/www/网站域名/
  4. 更改网站目录权限。以 root 用户登录,运行:chown -R apache.apache /data/www/网站域名/
  5. 运行网站安装程序完成网站安装

注意:在安装过程的交互中,当发现输错选项需要更正时,可以按下 Ctrl 键,同时再按退格(Backspace)键,即可消除。或者同时按下 Ctrl + u 即可全部清除,重新输入。

常见问题
Q1:安装完网站程序,升级或安装插件等报错,如何更改网站目录权限?
以 root 登录后,运行:chown -R apache:apache /data/www/网站域名/

Q2:安装时因内存不足报错,不能完成安装?
当 RAM + Swap 的容量小于 480MB 时,直接退出脚本运行;小于 1025MB 时,新增 PHP 编译选项 –disable-fileinfo 。
同时还优化了安装过程中对内存的占用。
备注:为什么写成 480 MB?
这是因为基于 Xen 或者 KVM 虚拟的 VPS,内存容量一般会低于标注容量。一般说是 512MB,但实际也就只有 480MB 左右。
小于 512M 的 VPS 建议并开启 Swap,如何开启 Swap ,可以参考《如何在CentOS中添加Swap》一文。

Q3:域名跟 IP 地址都显示相同的网页,如何设置?
这是因为域名没与你的 VPS 公网的 IP 绑定。
修改配置文件 /usr/local/apache/conf/extra/httpd-vhosts.conf
在此文件的第 1 行开始,追加以下虚拟主机的配置:


ServerName 公网IP地址
Redirect 301 / 完整网址(如:https://teddysun.com
</virtualhost>

注意,格式是301+空格+斜杠+空格+完整网址。
然后保存并重启 Apache 即可。

Q4:将 MySQL 换成 MariaDB ,应该怎么做?

  1. 备份所有数据库,执行命令:/usr/local/mysql/bin/mysqldump -uroot -p你设定的root密码 –all-databases > /root/mysql.dump
  2. 卸载 LAMP,命令:lamp uninstall
  3. 重新安装 LAMP,选择 MariaDB
  4. 安装完成后,恢复数据库,命令:/usr/local/mariadb/bin/mysql -u root -p你设定的root密码 < /root/mysql.dump

卸载 LAMP 时,是不会删除 /data/www/default 的,也就是说不会删除网站数据。但数据库会被删掉,因此需要备份。
注意,考虑到程序兼容性问题,不建议这么做(生产环境换数据库程序不妥,应该事先就规划好用哪种数据库),除非你知道如何备份和恢复你的数据库。

Q5:如何更改网站的默认目录?
修改配置文件 /usr/local/apache/conf/vhost/default.conf 里的 DocmentRoot 目录以及下面的 Directory ,再重启 Apache 即可。

Q6:全新安装后,无法引用 /data/www/ 之外的目录,如 /home/data/,如何解决?
这是因为出于安全考虑,做了目录权限的 open_basedir 限制。
如何添加比如 /home/data 目录呢?修改 /usr/local/apache/conf/extra/httpd-vhosts.conf 中的 php_admin_value open_basedir 后的值,将 /home/data 添加到最后,注意要用冒号分割。再重启 Apache 即可。

Q7:请问如果网站是 www.ccc.com, 如何让 ccc.com 跳转到 www.ccc.com?
既可以在域名解析的时候设置域名跳转(比如 Dnspod 就可以),也可以通过 Apache 的 ServerAlias 设置多个域名。
比如 www.ccc.com 的配置文件是 /usr/local/apache/conf/vhost/www.ccc.com.conf ,在 ServerName 后新增一行 ServerAlias ccc.com 即可。
修改示例:
ServerName www.ccc.com
ServerAlias ccc.com

Q8:安装时自定义 MySQL 或 MariaDB 的路径,系统自动初始化数据库时会出错。然后会提示启动失败?
自定义 MySQL 的数据库路径时,如果目录不存在的话 MySQL 或 MariaDB 会尝试创建该目录,但一般会由于权限不足而创建失败。
MySQL 编译安装后会将 /usr/local/mysql 目录的 user:group 设为 mysql:mysql,所以默认目录 /usr/local/mysql/data 是没有问题的。
因此自定义路径时,最好事先创建好该目录,并把目录 user:group 变更为 mysql:mysql,比如更改目录为 /home/mysql/data
当然,在还没有安装 LAMP 之前,系统不一定有 mysql 的用户和用户组。执行以下命令可以创建:

/usr/sbin/groupadd mysql
/usr/sbin/useradd -s /sbin/nologin -M -g mysql mysql

然后,在 root 用户下执行:

chown -R mysql:mysql /home/mysql/data

Q9:LAMP 能配合什么 Web 面板管理呢?

Webmin 免费面板。参考《使用webmin管理PPTP VPN Server》一文,有在 CentOS 下如何快速安装 webmin 的教程。

Q10:程序只能支持到PHP 5.3,不支持PHP 5.4,请问具体如何降级到PHP 5.3呢?是否可以直接卸载 PHP 然后单独重新安装PHP 5.3 ?

可以是可以,不过比较麻烦,你要自己重新编译 PHP 5.3.29。
删除已有的 PHP 步骤:
rm -rf /etc/php.ini /usr/bin/php* /usr/local/php
编译 PHP 5.3.29 有几点需要注意的。你需要把环境里的 Apache, MySQL 或 MariaDB 配置一并 configure 好才行。
当然还有一种办法就是备份好数据,卸载 LAMP 后再次安装时选择 PHP 5.3 版本即可。

Q11:安装以后要如何关闭日志功能?

修改 Apache 的配置文件 /usr/local/apache/conf/httpd.conf ,
搜索关键字 CustomLog (第300行),在前面加一个“#”注释掉后再重启 Apache 后就不再产生访问日志了。

Q12:FTP 安装使用是怎样的?

注意:2016 年 4 月 9 日更新,不再支持安装 pureftp,请使用 SFTP 替代之。推荐一个客户端软件:WinScp

Q13:Apache 的 SSL 如何设置?

一般设置 /usr/local/apache/conf/extra/httpd-ssl.conf 就够了。
还需要在 /usr/local/apache/conf/httpd.conf 中开启 Include conf/extra/httpd-ssl.conf ,也就是将前面的 “#” 去掉。
可以参考《Apache下部署ssl教程》一文。

Q14:安装 PHP 时出现以下错误,怎么处理?

cc: Internal error: Killed (program cc1)
Please submit a full bug report.
See for instructions.
make: * [ext/fileinfo/libmagic/apprentice.lo] Error 1
Installing PHP failed, Please visit http://teddysun.com/lamp and contact.

内存不足,安装进程被 kill了。
内存低于 512MB 的又没有 Swap 的话就会如此。如何开启 Swap ,可以参考《如何在CentOS中添加Swap》一文。
更多错误信息查询,参考《PHP编译安装常见错误总结》一文。

Q15:请问如何卸载 PHP 组件?

删掉对应的 .so 文件及配置文件再重启 Apache 即可。
比如安装了 PHP 5.4 的话:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xcache.so
/usr/local/php/php.d/xcache.ini

各个 PHP 扩展的安装目录一般可使用如下命令查询:

/usr/local/php/bin/php-config --extension-dir

Q16:如何卸载 phpMyAdmin?

phpMyAdmin 如果不需要的话,直接删除其目录就 OK 了。
默认安装位置是 /data/www/default/phpmyadmin/

Q17:多个 IP 的 VPS 如何设置一个 IP 对应一个域名呢?

按照以下步骤:

  1. 创建虚拟主机,以域名命名;
  2. 修改配置文件/usr/local/apache/conf/vhost/域名.conf
    将其中的第一行的 virtualhost *:80修改为 virtualhost IP:80;
  3. 解析对应的域名到第二步设定好的的 IP ,重启 Apache 即可。

Q18:PHP 7 下安装可选组件失败?

这是因为目前很多组件还不支持 PHP 7 导致的,比如 XCache、ZendGuardLoader 等。
等这些组件的作者更新支持后,本脚本会及时跟进更新。

Q19:运行 php -v 查看 PHP 版本时出现以下错误提示时怎么办?

PHP Warning: Cannot load module 'imagick' because conflicting module 'gmagick' is already loaded in Unknown on line 0

这是因为 PHP 扩展 imagickgmagick 都属于处理图像的扩展,两者同时加载则会出现冲突。因此,最好不要同时安装。
个人建议一般情况下,安装 imagick 即可。

Q20:LAMP 一键安装脚本,开始启用 acme.sh 作为签发 SSL 证书的工具,而不再是 certbot-auto。

原因见此:https://community.letsencrypt.org/t/certbot-auto-no-longer-works-on-debian-based-systems/139702/7

如果你之前已经安装过 LAMP 脚本并使用了 certbot 签发过证书。
建议你按照如下步骤删除 certbot 及其旧证书,并更新 /usr/bin/lamp 命令到最新版,重新新建虚拟主机并签发证书。

  1. 删除旧的 cron 任务

    crontab -e

编辑 cron 任务,删除如下这行
0 3 /7 * /bin/certbot renew --disable-hook-validation --renew-hook "/etc/init.d/httpd restart"

  1. 如果你之前开启过强制 http 转 https 功能,则需要移动网站根目录下的 .htaccess 文件。
    注意:.htaccess 文件有可能已经被诸如 WordPress 等程序改动过。所以最好是移动该文件到别处,重建虚拟主机后再移动回来。
  2. 删除 certbot
rm -fv /usr/bin/certbot
  1. 升级 /usr/bin/lamp 命令
wget -O /usr/bin/lamp https://github.com/teddysun/lamp/raw/master/conf/lamp
  1. 备份并删除旧的虚拟主机配置
cp -p /usr/local/apache/conf/vhost/你的域名.conf ~/
lamp del

按照提示,输入虚拟主机的域名。这个步骤会删除旧的虚拟主机 conf 配置,但不会删除网站根目录。

  1. 重建新的虚拟主机配置
lamp add

按照提示,输入域名,网站根目录等,跟配置旧的虚拟主机时一模一样即可。
到选择是否添加证书时(Do you want to add a SSL certificate? [y/n]),会安装 acme.sh 来创建 SSL 证书。

评论已关闭