LAMP一键安装脚本使用说明

技术 秋水逸冰 89276浏览 58评论

LAMP shell

LAMP 一键安装脚本持续更新很长一段时间了。在这期间,经常被问到很多问题,回答的比较零散,因此有必要在这里归纳总结一下。
如果你在使用 LAMP 的过程中也遇到了问题,请参考此文,已经列出了常见的问题和解答,希望能对你有所帮助。

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

更新时间:2015 年 08 月 28 日

程序目录:
MySQL 安装目录: /usr/local/mysql
MySQL 数据库目录: /usr/local/mysql/data(默认,安装时可更改路径,参考问题 8 如何更改)
MariaDB 安装目录: /usr/local/mariadb
MariaDB 数据库目录: /usr/local/mariadb/data(默认,安装时可更改路径,参考问题 8 如何更改)
PHP 安装目录: /usr/local/php
Apache 安装目录: /usr/local/apache
phpMyAdmin 安装目录: /data/www/default/phpmyadmin(安装完成后出于安全,建议将此目录改名,比如改为 /data/www/default/admin_8989)

网站目录:
默认的网站根目录: /data/www/default
默认页位置: /data/www/default/index.html
新建站点默认目录: /data/www/域名/web
phpmyadmin 后台地址: http://域名或ip/phpmyadmin/(若目录已改名,此处应为改名后的地址,比如 http://域名或ip/admin_8989/)
phpmyadmin 默认用户名:root 密码:root(此密码即 MySQL 的 root 密码。在安装时会要求输入,如不输入则为默认值)
xcache 后台地址: http://域名或ip/xcache/ 
xcache 默认用户名:admin 密码:123456(用户名和密码在配置文件 /usr/local/php/php.d/xcache.ini 中定义)

配置文件:
Apache 日志目录: /usr/local/apache/logs
Apache SSL 配置文件: /usr/local/apache/conf/extra/httpd-ssl.conf
新建站点配置文件: /usr/local/apache/conf/vhost/域名.conf
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)

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

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

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

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

<virtualhost *:80>
ServerName  公网 IP
Redirect 301 / 完整网址(如:http://teddysun.com)
</virtualhost>

注意,格式是301+空格+斜杠+空格+完整网址
此处是用到了 301 永久重定向来达到目的。
然后保存并重启 Apache,命令:/etc/init.d/httpd restart

问4:将 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 的,也就是说不会删除网站数据。但数据库会被删掉,因此需要备份。
注意,考虑到程序兼容性问题,不建议这么做(生产环境换数据库程序不妥,应该事先就规划好用哪种数据库),除非你知道如何备份和恢复你的数据库。

问5:如何更改网站的默认目录?
答:修改配置文件 /etc/httpd/conf/extra/httpd-vhosts.conf 里的 DocmentRoot 目录以及下面的 Directory ,再重启 apache 即可

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

问7:请问如果网站是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

问8:安装时自定义 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
更新(2015 年 08 月 28 日):本次更新优化了 MySQL 的安装过程,脚本会检测自定义路径是否存在,如果不存在会自行创建目录并改变其 owner 和 group,无需在此之前手动创建了。

问9:LAMP 能配合什么 Web 面板管理呢?
答:Webmin 免费面板。参考《使用webmin管理PPTP VPN Server》一文,有在 CentOS 下如何快速安装 webmin 的教程。

问10:请问 xcache 的后台怎么进去?
答:http://域名或IP/xcache/
用户名:admin
密码:123456
前提是你安装了 xcache 后才能进入该后台。

问11:如何修改 xcache 的后台用户名和密码?
答:修改 /usr/local/php/php.d/xcache.ini 中对应的 xcache.admin.user 和 xcache.admin.pass 的值。
注意 xcache.admin.pass 的值是密码 md5 后的值。
然后重启 Apache 即可。

问12:程序只能支持到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.sh 脚本里的 install_php 函数。

当然还有一种办法就是备份好数据,卸载 LAMP 后再次安装时选择 PHP 5.3 版本即可。

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

问14:FTP 安装使用是怎样的?
答:1、安装 LAMP 环境;
2、运行 pureftpd.sh 安装 pureftpd 软件(pureftpd 相关命令:service pure-ftpd start/stop/restart);
3、运行 lamp ftp add 命令新增 ftp 用户并根据提示绑定该用户的根目录(例:/data/www/default);
4、运行 lamp ftp del 命令删除 ftp 用户,但并不会删除数据;
5、运行 lamp ftp list 命令查看已有的 ftp 用户一览。
敬请注意:安装 FTP 会遇到各种权限问题,会和已有的 apache 用户和用户组产生冲突,导致通过 FTP 上传的文件在程序里不可用。
因此,不推荐使用。目前 SFTP 已经全面替代 FTP 了。你可以用 winscp 客户端 root 连接后上传文件,然后再改下用户和用户组权限为 apache 即可,简单方便。

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

问16:安装 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 https://teddysun.com/lamp and contact.

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

问17:请问如何卸载组件呢,比如 xcache memcached?
答:删掉对应的 .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

问18:怎么卸载 phpMyAdmin?
答:phpMyAdmin 如果不需要的话,直接删除其目录就OK了。
默认安装位置是 /data/www/default/phpmyadmin/

问19:多个IP的VPS如何设置一个IP对应一个域名呢?
答:按照以下步骤:
1、创建虚拟主机,以域名命名;
2、修改配置文件/usr/local/apache/conf/vhost/域名.conf,将其中的第一行的 virtualhost *:80修改为 virtualhost IP:80;
3、解析对应的域名到第二步设定好的的 IP ,重启 Apache。

感谢 lxrmyc 以评论为基础的整理。
本文在原来的评论的基础上作了更为详细的说明,将会不定时更新。

转载请注明:秋水逸冰 » LAMP一键安装脚本使用说明

发表我的评论
取消评论

请输入正确答案后提交评论 *超出时限。 请再次填写验证码。

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (58)

  1. 你好,我想问一下lamp一键安装里面的 Mod Security等组件如何添加规则
    江霁月4年前(2019-11-07)回复
  2. Starting to install development tools... Starting to install package gcc E: Unable to locate package 1 +------------------+ | ERROR DETECTED | +------------------+ Installation package gcc failed. The Full Log is available at /lamp/lamp.log Please visit website: https://lamp.sh/faq.html for help 安装出现了以下错误,请问丢失了什么文件吗,谢谢
    Air5年前(2019-10-07)回复
    • 这是在安装 gcc 时出错了,请检查是否已经正确配置好系统的 repository
      秋水逸冰5年前(2019-10-07)回复
      • 您是说源有问题吗? 更换了系统中/etc/apt/sources.list中的地址,添加了deb http://ftp.jp.debian.org/debian/ stretch main non-free contrib(AWS JP) 执行apt update之后,再运行脚本仍然是发生这个错误 如果是gcc的话,尝试手动安装gcc,即sudo apt-get install gcc得到以下结果 Reading package lists... Done Building dependency tree Reading state information... Done gcc is already the newest version. The following package was automatically installed and is no longer required: g++-4.9 Use 'apt-get autoremove' to remove it. 0 upgraded, 0 newly installed, 0 to remove and 34 似乎已经安装好了 实在是还没找出来问题所在,还请您进行指导,谢谢
        Air5年前(2019-10-08)回复
        • 我也遇到了相同的问题
          DU WENKE5年前(2019-10-12)回复