Toggle navigation

LAMP环境镜像使用手册

Version 1.6.2

《LAMP环境镜像使用手册》

版本说明

软件版本详细:

  • Apache2.4.26
  • PHP5.3.29、PHP5.4.45、PHP5.5.38、PHP5.6.30、PHP7.0.20、PHP7.1.6
  • MySQL5.6.36
  • Redis3.2.9
  • Memcached1.4.38
  • Jemalloc4.5.0
  • Pure-FTPd1.0.46
  • phpMyAdmin4.4.15.10

功能亮点:

  1. 基于系统源码编译安装,细节安全优化,纯命令行,占用系统资源低
  2. Jemalloc优化MySQL内存管理
  3. 支持PHP5.3、5.4、5.5、5.6、PHP7.0、PHP7.1版本自由切换
  4. 交互添加Apache虚拟主机,方便快捷,支持Let’s Encrypt一键设置
  5. 菜单式FTP账号管理脚本,轻松建立ftp虚拟用户
  6. 提供在线MySQL、PHP、Redis、Memcached、phpMyAdmin升级脚本
  7. 提供本地备份和远程备份(服务器之间rsync)、内网阿里云OSS备份功能

目录说明

源码安装目录:
Apache:/usr/local/apache
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

数据存储目录:
数据库(MySQL):/data/mysql
网站根目录:/data/wwwroot/www.example.com  #添加虚拟主机会自动创建这个目录
Web访问日志:/data/wwwlogs

默认ip直接访问内容对应根目录:/data/wwwroot/default,该目录包含首页demo、Opcache缓存管理、phpinfo、phpmyadmin、探针等文件,目录里面文件可删除,目录不能删除。

首页demo:http://公网IP
PHPINFO地址:http://公网IP/phpinfo.php
Opcache地址:http://公网IP/ocp.php
phpmyadmin管理地址:http://公网IP/phpMyAdmin  #建议用chrome浏览器,访问注意大小写,为了安全建议重命名或者删除
PHP运行环境探针地址:http://公网IP/tz.php

参数优化

由于镜像制作是下1核1G内存配置完成,MySQL、PHP参数还是该配置的参数,强烈建议如果不是这个配置,请执行下面优化脚本:

cd /root/oneinstack  #必须进入oneinstack目录下执行
./optimize.sh      #请勿bash ./optimize.sh(或者sh)执行

⚠️注意:

  1. 可能需要等待1分钟,请勿中断
  2. 此脚本会根据系统配置,自动优化MySQL、PHP等参数

如下图:

cd /root/oneinstack
./change_php_version.sh

如下图:

⚠️注意:如果您购买了数据云盘(脚本仅支持未本地挂载磁盘),建议先挂载数据云盘,将网站内容、数据库放在数据云盘中,未购买数据云盘请忽略该教程!

cd /root/oneinstack
./move_auto_fdisk.sh #挂载数据盘,并迁移数据

如下图:

注:也可以通过phpMyAdmin来管理数据库

数据库默认root密码

cd  /root/oneinstack
grep dbrootpwd options.conf  #显示数据库root密码

如下图:

重置数据库root密码

cd /root/oneinstack  #必须进入oneinstack目录下执行
./reset_db_root_password.sh

如下图:

创建一个数据库

创建数据库有2种方法
方法一:命令行创建
如:创建oneinstack的数据库(举例)
# mysql -uroot –p #进入数据库控制台
Enter password: #数据库root密码,⚠️输入密码不显示在屏幕上
MySQL [(none)]> create database oneinstack; #特别注意有分号
MySQL [(none)]> show databases; #查看数据库,除oneinstack数据库,其它3个为系统默认库,不能删除
MySQL [(none)]> exit; #退出数据库控制台,特别注意有分号
如下图:

方法二:phpMyAdmin创建
1. 浏览器输入http://公网IP/phpMyAdmin
⚠️浏览器建议用谷歌或火狐,否则可能会报错,注意phpMyAdmin大小写

2. 按照下图创建数据库

删除一个数据库

删除数据库同样有2种方法
方法一:命令行删除

如:删除oneinstack的数据库(举例)
# mysql -uroot –p #进入数据库控制台
Enter password: #数据库root密码,⚠️输入密码不显示在屏幕上
MySQL [(none)]> drop database oneinstack;
MySQL [(none)]> show databases; #查看数据库
MySQL [(none)]> exit; #退出数据库控制台,特别注意有分号

方法二:phpMyAdmin删除
1. 浏览器输入http://公网IP/phpMyAdmin
⚠️浏览器建议用谷歌或火狐,否则可能会报错,注意phpMyAdmin大小写

2. 按照下图创建数据库

创建数据库用户

为了安全我们通常给每一个网站程序建立唯一的数据库连接帐号(帐号名不能为root)。
如:添加一个用户名为db_user,密码为db_pass,授权为本机localhost对db_name数据库所有权限,命令如下
# mysql -uroot –p
Enter password: #输入数据库的root密码,默认不显示密码
MySQL [(none)]> grant all privileges on db_name.* to db_user@’localhost’ identified by ‘db_pass’; #授权语句,特别注意有分号
MySQL [(none)]> flush privileges; #权限立即生效
MySQL [(none)]> exit; #退出数据库控制台,特别注意有分号
如下图:

如何配置MySQL远程连接

为了安全考虑,OneinStack仅允许云主机本机(localhost)连接数据库,如果需要远程连接数据库,需要如下操作(缺一不可):
1. 打开iptables 3306端口
如果您的操作系统为CentOS系列:

iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
service iptables save #保存iptables规则

如下图:

如果您的操作系统为Ubuntu/Debian系列:

iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
iptables-save > /etc/iptables.up.rules  #保存iptables规则

如下图:

2. 数据库授权
远程连接新建一个帐号(帐号名不能为root)。
如:添加一个用户名为db_user,密码为db_pass,授权为% (%表示所有外围IP能连接)对db_name数据库所有权限,命令如下
# mysql -uroot -p
MySQL [(none)]> grant all privileges on db_name.* to db_user@’%’ identified by ‘db_pass’; #授权语句,特别注意有分号
MySQL [(none)]> flush privileges;
MySQL [(none)]> exit; #退出数据库控制台,特别注意有分号
如下图:

添加虚拟主机

cd /root/oneinstack
./vhost.sh

如下图:

上图中directory为网站根目录,脚本执行后会自动创建,部署网站时请将代码上传到该目录(目录、子目录和文件权限都为:www),对应Apache配置文件路径为:
/usr/local/apache/conf/vhost/demo.oneinstack.com.conf (demo.oneinstack.com为绑定的域名)
伪静态:请将.htaccess放到网站根目录(/data/wwwroot/demo.oneinstack/)

删除虚拟主机

cd /root/oneinstack
./vhost.sh del

如下图:

cd /root/oneinstack
./pureftpd_vhost.sh

如下图:

设置备份参数

cd /root/oneinstack
./backup_setup.sh

如下图:

立即备份

cd /root/oneinstack
./backup.sh

设置计划任务自动定时备份
如:每天凌晨一点备份,注:下面命令请勿重复执行

echo '0 1 * * * cd ~/oneinstack;./backup.sh > /dev/null 2>&1 & ' >> /var/spool/cron/root

查看本地备份

ls -l /data/backup

如下图:

查看阿里云OSS
登陆阿里云管理控制台,地址问:https://oss.console.aliyun.com/index
如下图:

Apache:

service httpd {start|stop|status|restart}

MySQL:

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

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}
cd /root/oneinstack
./upgrade.sh

如下图:

cd /root/oneinstack
./addons.sh   #注:支持安装、卸载功能

如下图:

⚠️可单独卸载某些项,如数据库用RDS,可单独卸载数据库

cd /root/oneinstack
./uninstall.sh   #特别注意备份数据

如下图:

如何部署一个PHP网站

  1. 创建该网站所需的数据库,参考《创建一个数据库
  2. 添加虚拟主机,参考《如何添加虚拟主机
  3. 创建FTP账号,参考《如何管理FTP账号
  4. 部署代码到网站根目录

注意:通过ftp上传代码不需要修改权限,默认已经是www;在服务器里面下载代码必须修改网站根目录及子、目录文件权限都为www;如网站权限出现问题,请参考《关于网站根目录权限

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

访问http://demo.oneinstack.com,输入数据库地址(localhost), 用户名(root),密码(数据库root密码),完成。
如下图:

关于PHP缓存(Opcache)

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

方法二:刷新PHP缓存
访问http://公网IP/ocp.php,或者直接访问http://公网IP/ocp.php?RESET=1
如下图:

关于网站根目录权限

网站根目录权限遵循:
文件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 {} \;

关于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  #重启生效

关于iptables防火墙

默认情况下开通22(ssh)80、443(Nginx) 21、20000:30000(FTP)
其它端口都拒绝,如下需要允许其它端口,请如下操作(如开启8080端口)
如果您的操作系统为CentOS系列:

iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
service iptables save #保存iptables规则

如下图:

如果您的操作系统为Ubuntu/Debian系列:

iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
iptables-save > /etc/iptables.up.rules  #保存iptables规则

如下图: