PHP(LNMP LAMP LNMT LANMP)环境通用镜像手册

文档已更新版本,建议参考如下链接


新帮助文档链接(含视频教程)--点此进入

LANMP(Linux-Apache-Nginx-MySQL-PHP)网站架构是高级的Web框架之一, 该框架包括:Linux操作系统,Apache网络服务器,Nginx网络服务器,MySQL数据库, PHP编程语言,所有组成产品均是免费开源软件,这五种软件组合到一起,成为一个免费、高效的网站服务系统。

LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际上最流行的Web框架之一, 有Linux下WEB应用的黄金组合之称。该框架包括:Linux操作系统,Apache网络服务器, MySQL数据库,PHP编程语言,所有组成产品均是免费开源软件, 这四种软件组合到一起,成为一个免费、高效的网站服务系统。

LNMP(Linux-Nginx-MySQL-PHP)网站架构是目前国际上最流行的Web框架之一, 该框架包括:Linux操作系统,Nginx网络服务器,MySQL数据库,PHP编程语言, 所有组成产品均是免费开源软件,这四种软件组合到一起,成为一个免费、高效的网站服务系统。

LNMT(Linux-Nginx-Tomcat-MySQL-PHP-JAVA)网站架构是全能的Web框架, 该框架包括:Linux操作系统,Nginx网络服务器,Tomcat网络服务器,
MySQL数据库,PHP和JAVA编程语言,所有组成产品均是免费开源软件, 这些软件组合到一起,成为一个免费、高效的网站服务系统。

说明:

  1. 所有软件基于公有云源码安装,源码编译安装。
  2. 支持PHP多版本自由切换。
  3. 虚拟主机管理方便快捷。
  4. 轻松建立ftp账号。
  5. 在线升级软件版本。
  6. 本地备份和远程备份配置简单。
  7. jemalloc 优化 MySQL 内存管理。

软件版本说明

本手册支持的操作系统:CentOS5-7,Ubuntu10-14,Debian8,AliyunLinux等。

Web环境版本安装后验证方法:使用浏览器打开首页demo:http://IP地址,首页正常显示,则表示环境安装成功。

操作系统:参照云市场中的云镜像操作系统说明。

软件详细情况:通过“首页”->“探针”/“phpinfo”了解软件的版本等信息。

软件上传、下载可以下载一个WinSCP工具(百度搜索:winscp),从Linux系统上传下载文件,非常方便。

 

新版首页格式:

旧版首页格式:

Mirroring_help_ois_2

软件目录说明

Apache:/usr/local/apache        #LAMP、LANMP环境存在

Nginx:/usr/local/nginx            #LANMP、LNMT环境存在

Tomcat:/usr/local/tomcat       #LNMT环境存在,访问方式:http://ip地址:8080,一般情况下8080端口关闭状态,无法直接访问,请参考文档的“关于防火墙”一节,打开8080端口。  JAVA目录/usr/java

PHP:/usr/local/php

MySQL:/usr/local/mysql

Pureftpd:/usr/local/pureftpd

Redis:  /usr/local/redis

Memcached:/usr/local/memcached

phpMyAdmin:/data/wwwroot/default/phpMyAdmin

Jemalloc: /usr/local/Jemalloc      #CentOS6.0以上环境存在

软件安装包:/root/oneinstack/src(部分旧版本是/data/oneinstack/src),如果是web服务器需要新安装模块,可以使用。

数据存储目录

数据库(MySQL):/data/mysql

Web访问日志:/data/wwwlogs

默认 ip 直接访问内容对应根目录:/data/wwwroot/default该目录包含首页demo、Opcache  缓存管理、phpinfo、phpmyadmin、探针等文件,如果不需要默认首页,替换该目录中的index.html即可。

PHPINFO 地址:http://IP地址/phpinfo.php                     #php版本和组件信息

Opcache 地址:http://IP地址/ocp.php              

phpmyadmin 管理地址:http://IP地址/phpMyAdmin             #注意大小写,为了数据库安全建议重命名

PHP 运行环境探针地址:http://IP地址/tz.php

 

LNMT环境存在tomcat,访问:http://ip地址:8080,访问该地址对应的根目录同样是:/data/wwwroot/default

一般情况下8080端口关闭状态,无法直接访问,请参考文档的“关于防火墙”一节,打开8080端口。

服务启动停止命令

Nginx: service nginx {start|stop|status|restart|reload|configtest}

注:如手工更改配置文件,强烈建议  reload

MySQL: service mysqld {start|stop|restart|reload|status}

PHP: service php-fpm {start|stop|restart|reload|status}    #apache服务器中只需要启动Apache服务

Pure-Ftpd: service pureftpd {start|stop|restart|status}

Redis: service redis-server {start|stop|status|restart|reload}

Memcached: service memcached {start|stop|status|restart|reload}

 

Apache: service httpd {start|stop|status|restart|reload}

Tomcat: service tomcat {start|stop|status|restart|reload}  #仅存在LNMT环境中

默认账号密码

MySQL数据库:root/123456         #仅基础镜像

FTP账号请参考“管理FTP账号”一节进行设置。

MySQL数据库管理

注:也可以通过 phpMyAdmin来管理数据库,本文中主要是命令行方式描述,更多数据库命令请参考:http://www.websoft9.com/wp-content/plugins/documente/documentations/mysql_manager_help_v_1_0_0/index.html

cd   /root/oneinstack                         #注意:部分早期版本安装的目录是:/data/oneinstack

grep dbrootpwd options.conf         #显示数据库root用户的默认密码,出于安全考虑,建议修改密码

MySQL数据库账户/密码:root/123456      

 

更改数据库 root 密码

cd   /root/oneinstack                    #注意:部分早期版本安装目录:/data/oneinstack

./reset_db_root_password.sh

如下图:

Mirroring_help_ois_4

创建一个数据库

如:创建一个数据库(举例)

mysql -uroot  –p密码                                            #进入数据库控制台

MySQL [(none)]> create database 数据库名称;      #特别注意有分号

MySQL [(none)]>  show  databases;                    #查看数据库,除 oneinstack  数据库,其它 3  个为系统默认库,不能删除

MySQL [(none)]>  exit;                                      #退出数据库控制台,特别注意有分号

如下图:

Mirroring_help_ois_5

删除一个数据库

MySQL [(none)]> drop database 数据库名称;            #删除数据库

MySQL [(none)]> exit;                                           #退出数据库控制台,特别注意有分号

创建数据库用户

为了安全我们通常给每一个网站站点/程序建立唯一的数据库连接帐号(帐号名不为root)。

如:添加一个用户名为db_user,密码为123456,授权为本机localhost  对

wordpress数据库所有权限,先登录数据库,然后命令如下

MySQL  [(none)]> grant all privileges on wordpress.* to db_user@'localhost'  identified by '123456';         #授权语句,特别注意有分号

MySQL [(none)]> flush privileges;               #权限立即生效

MySQL [(none)]> exit;                               #退出数据库控制台,特别注意有分号

如下图:

Mirroring_help_ois_6

配置 MySQL 远程连接?

注意:安全考虑,不建议配置。

为了安全考虑,默认只允许云主机本机(localhost)连接数据库,如果需要远程连接数据库,需要如下操作:

1、注意云管理控制台上的安全组端口开放 3306端口

2、开放数据库远程访问:http://bbs.websoft9.com/forum.php?mod=viewthread&tid=360

 

出现首页访问不了或502错误

环境安装后,如果出现首页访问不了或502错误,请按如下方法解决:

1、远程登录到服务器;

2、进行命令操作,见红色命令:
[root@iZ94bojtvkpZ ~]# service httpd restart
(20014)Internal error (specific information not available): AH00058: Error retrieving pid file logs/httpd.pid
AH00059: Remove it before continuing if it is corrupted.    #提示出现这个错误,按照下面的步骤操作
[root@iZ94bojtvkpZ logs]# cd /usr/local/apache/logs
[root@iZ94bojtvkpZ logs]# ls
access_log  error_log  httpd.pid
[root@iZ94bojtvkpZ logs]# mv httpd.pid httpd.pid.bak
[root@iZ94bojtvkpZ logs]# service httpd start

现在,可以正常使用浏览器访问了。

增加/删除虚拟主机(配置域名)

添加虚拟主机

cd   /root/oneinstack              #注意:部分早期安装目录:/data/oneinstack

./vhost.sh                              #注意:如输入错误,请按 Ctrl +删除键

如下图(Nginx环境为例,Apache往下继续看):

Mirroring_help_ois_9

上图中 directory 为网站根目录,脚本执行后会自动创建,部署网站时请将代码上传到该目

录(目录、子目录和文件权限都为:www),对应 Nginx  配置文件路径为:

/usr/local/nginx/conf/vhost/www.oneinstack.com.conf (www.oneinstack.com  为绑定的域名)

注意:国内服务器须先完成域名备案

 

Apache环境配置:

                   

 

 删除虚拟主机

cd   /root/oneinstack          #注意:部分早期镜像目录:/data/oneinstack

./vhost.sh del

如下图:

Mirroring_help_ois_18

如何部署一个网站?

  1. 创建该网站所需的数据库,参考章节: MySQL数据库管理
  2. 添加虚拟主机,参考章节:增加/删除虚拟主机
  3. 创建 FTP 账号,参考章节:管理FTP账号             #远程上传文件建议安装图形化工具:WinSCP
  4. 部署代码到域名指向的目录,并必须修改网站根目录及子、目录文件权限都为 www;如网站权限出现问题,请参考章节:关于网站根目录权限

如下 wget 下载代码部署一个 wordpress,如下图:

Mirroring_help_ois_14

访问  http://www.oneinstack.com前提:已经是配置好了域名解析;注意:国内服务器需要做域名备案),输入数据库地址( localhost),  用户名(root),密码(数据库 root  密码),完成。如下图:

Mirroring_help_ois_15

关于网站根目录权限

网站根目录权限遵循:

文件 644, 文件夹 755 ,权限用户和用户组www

如出现文件权限问题时,请执行下面 3  条命令:

chown -R www.www /data/wwwroot/

find /data/wwwroot/ -type d -exec chmod 755 {} \;

find /data/wwwroot/ -type f -exec chmod 644 {} \;

 

FAQ:对于phpMyAdmin的配置文件权限过大问题,也可通过修改phpMyAdmin配置文件解决:

找到phpMyAdmin目录/libraries/config.default.php文件,把$cfg['CheckConfigurationPermissions'] 的值从true修改为false。

FAQ:V

修改默认根目录的方法

以apache举例:

1、修改配置文件;

cd   /usr/local/apache/conf/vhost           

 vi 0.conf                          #修改默认的配置文件,将里面的目录修改成您需要的目录,如果文件里面的IP不是您的IP,将里面的IP修改为您的公网IP

修改完成后保存。

2、重新启动apache服务。

 

 

Nginx类似,不再赘述。

切换/升级软件小版本、卸载

cd /root/oneinstack                          #注意:部分早期安装目录:/data/oneinstack

./upgrade.sh

如下图:

Mirroring_help_ois_12

 

如何卸载

可单独卸载某些项,如用云数据库,可单独卸载数据库

cd   /root/oneinstack                   #注意:部分早期镜像目录:/data/oneinstack

./uninstall.sh                                 #注意备份数据

如下图:

Mirroring_help_ois_13

 

 

升级、降级PHP大版本

灵活运用前面一节中的安装、卸载特性可以升级、降级软件大版本,操作方法如下

cd /root/oneinstack                          #进入安装目录。注意:部分早期镜像安装目录:/data/oneinstack  

./uninstall.sh php                             #以PHP举例,也可以不加PHP,然后选择你要升级的软件进行卸载

./install.sh

php选择y,其余选择n,即可。

管理FTP账号

cd /root/oneinstack                  #注意:部分早期安装目录:/data/oneinstack

./pureftpd_vhost.sh                 #请勿 bash ./pureftpd_vhost.sh(或者 sh)这样执行

注意:windows CMD客户端连接FTP方法参考链接。因pureftp默认不支持主动模式(只开启了被动链接方式),有些ftp客户端工具采用的是ftp主动模式,那么这类客户端工具会无法连接ftp服务器端。如需要开启被动模式,请获取相关专业服务。

除此之外,建议用户可以选择winscp工具上传下载方法,无须创建FTP用户,直接使用root用户即可操作,参考链接

如下图:

Mirroring_help_ois_10

关于防火墙(iptables)

特别注意:云服务器所在的安全组端口是否开放

默认情况下开通 22(ssh)80、443(Nginx)  21、20000:30000(FTP)

其它端口都拒绝,如下需要允许其它端口,请如下操作(如开启 8080  端口)

# iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 8080  -j ACCEPT        #允许 8080  端口

# service iptables save                                       #保存 iptables  规则

如下图:

Mirroring_help_ois_17

关于PHP 缓存(Opcache)

默认情况下,为了减少PHP编译时间,提高性能(生产环境强烈开启Opcache),PHP 环境默认加载了 Opcache 模块(PHP5.5、5.6、7.0),关于原理请参考:《深入理解 PHP Opcode 缓存原理》但是这样会出现 PHP 代码更新后,需2~3  分钟才能生效,这样影响工作效率,在网站调试阶段建议您关闭或者每次有代码更新刷新缓存(推荐方法二

方法一:关闭  Opcache

/usr/local/php/etc/php.ini  和 /usr/local/php/etc/php.d目录中相关文件

注销 opcache 相关参数(搜索opcache,前面加分号;),并重启php-fpm或apache服务

方法二:刷新 PHP  缓存

访问 http://公网IP/ocp.php,或者直接访问 http://公网 IP/ocp.php?RESET=1

如下图:

Mirroring_help_ois_16

PHP安装新模块

以安装 IMAP扩展 为例   
[root@iZ94bojtvkpZ /]# yum -y install krb5-devel libc-client libc-client-devel
[root@iZ94bojtvkpZ /]# ln -sv /usr/lib64/libc-client.so /usr/lib/libc-client.so
进入原始目录,找到PHP源代码包解压缩:
[root@iZ94bojtvkpZ /]# cd /root/oneinstack/src/
[root@iZ94bojtvkpZ /]# tar -zxvf php-5.5.36.tar.gz
进入PHP软件扩展目录
[
root@iZ94bojtvkpZ /]# cd /root/oneinstack/src/php-5.5.36/ext/imap
[root@iZ94bojtvkpZ imap]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20121113
Zend Module Api No:      20121212
Zend Extension Api No:   220121212
[root@iZ94bojtvkpZ imap]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-imap=/usr/lib64 --with-imap-ssl --with-kerberos     

[
root@iZ94bojtvkpZ imap]# make;make install
[root@iZ94bojtvkpZ etc]# cd /usr/local/php/etc/php.d

[root@iZ94bojtvkpZ etc]# vi imap.ini                                                          #新建imap.ini文件,内容如下
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/imap.so
[root@www imap]#
service httpd restart                  #重启apache服务

这时候再次通过phpinfo查看php信息,可以看到已经有了imap模块信息:
<ignore_js_op>

PHP如何支持fileinfo?

cd /root/oneinstack/src
tar zxvf php-5.6.21.tar.gz # 解压已经安装的php版本
cd php-5.6.21/ext/fileinfo
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
cd /usr/local/php/lib/php/extensions
ls #看到no-debug-non-zts-20131226类似文件夹
cd no-debug-zts-20131226
ls #查看有没有 fileinfo.so,如果有,证明编译成功
echo 'extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/fileinfo.so' > /usr/local/php/etc/php.d/ext-fileinfo.ini #加载fileinfo

如何挂载云数据盘

wget http://mirrors.linuxeye.com/scripts/auto_fdisk.sh
chmod +x ./auto_fdisk.sh
./auto_fdisk.sh

显示如下图表示挂载成功:
挂载数据盘

备份

设置备份参数:
cd /root/oneinstack               #注意:部分早期安装目录:/data/oneinstack
./backup_setup.sh                #设置备份参数
如下图:

Mirroring_help_ois_11

立即备份
cd /root/oneinstack      #注意:部分早期镜像目录:/data/oneinstack
./backup.sh                     #立即备份

设置计划任务自动定时备份:
如:每天凌晨一点备份,注:下面命令请勿重复执行
# echo '0 1 * * * cd ~/oneinstack;./backup.sh > /dev/null 2>&1 & ' >> /var/spool/cron/root

查看是否备份
查看本地备份:
ls -l /data/backup/

PHP多版本共存方法

关于 Redis、Memcached

Redis 默认端口:6379

Memcached 默认端口:11211

默认监听地址:127.0.0.1

 

如果增加 Redis  最大内存大小?

vi   /usr/local/redis/etc/redis.conf

maxmemory 1024000000                    #单位字节,默认 1G,可调整

service redis-server restart                     #重启生效

 

如果增加 Memcached  最大内存大小?

vi   /etc/init.d/memcached

CACHESIZE=256                       #单位 M,默认 256M,可调整

service memcached restart          #重启生效

更改监听端口

Redis

vi   /usr/local/redis/etc/redis.conf

bind 127.0.0.1   #改成 bind 0.0.0.0,保存

service redis-server restart            #重启生效

Memcached

vi /etc/init.d/memcached

OPTIONS="-l 127.0.0.1"  改成 OPTIONS="",保存

service memcached restart           #重启生效

编译云锁Nginx防护插件