1.1. 简介
- 执行命令,建议手敲,复制命令可能不能识别
- 支持备份(包含本地、远程、OSS、COS、七牛云、upyun)等功能
- 未经容许,禁止盗用图片,文档和代码不能复制传播
- 快速部署PHP网站:《如何部署一个PHP网站?》
- 注意:安全组端口(80、443、21、20000~30000)是否打开,参考:《云主机安全组端口开放教程》
[!WARNING] 腾讯云Ubuntu服务器默认ssh账号
ubuntu
,必须sudo su -
命令切换至root
,脚本位置:/root/oneinstack
1.2. 镜像说明
1.2.1. 版本说明
软件版本详细:
- Apache2.4.41
- PHP7.4.0、7.3.12、7.2.25、7.1.33、7.0.33、5.6.40、5.5.38、5.4.45、5.3.29
- MySQL5.7.28
- Redis5.0.7
- Memcached1.5.20
- Jemalloc5.2.1
- Pure-FTPd1.0.49
- phpMyAdmin4.4.15.10
功能亮点:
- 基于系统源码编译安装,细节安全优化,纯命令行,占用系统资源低
- Jemalloc优化MySQL内存管理
- 支持PHP7.4、7.3、7.2、7.1、7.0、5.6、5.5、5.4、5.3版本自由切换
- 交互添加Apache虚拟主机,方便快捷,支持Let's Encrypt一键设置
- 菜单式FTP账号管理脚本,轻松建立ftp虚拟用户
- 提供在线Apache、MySQL、PHP、Redis、Memcached、phpMyAdmin升级脚本
- 提供本地备份和远程备份(服务器之间rsync)、OSS、COS、UPYUN备份功能
1.2.2. 目录说明
源码安装目录:
- 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/xprober.php
1.2.3. 参数优化
由于镜像制作是下1核1G内存配置完成,MySQL、PHP参数还是该配置的参数,强烈建议如果不是这个配置,请执行下面优化脚本:
cd /root/oneinstack #必须进入oneinstack目录下执行
./optimize.sh #请勿bash ./optimize.sh(或者sh)这样执行
[!WARNING]
- 可能需要等待1分钟,请勿中断
- 此脚本会根据系统配置,自动优化MySQL、PHP等参数
如下图:
1.3. php版本切换
cd /root/oneinstack
./change_php_version.sh
如下图:
1.4. 将网站数据迁移至数据云盘
[!WARNING] 如果您购买了数据云盘(脚本仅支持未本地挂载磁盘),建议先挂载数据云盘,将网站内容、数据库放在数据云盘中,未购买数据云盘请忽略该教程!
cd /root/oneinstack
./move_auto_fdisk.sh
如下图:
1.5. 数据库管理
1.5.1. 数据库默认root密码
显示数据库默认root密码,命令如下:
cd /root/oneinstack
grep dbrootpwd options.conf
如下图:
1.5.2. 重置数据库root密码
cd /root/oneinstack
./reset_db_root_password.sh
如下图:
1.5.3. 创建一个数据库
创建数据库有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
[!WARNING] 浏览器建议用谷歌或火狐,否则可能会报错,注意phpMyAdmin大小写
如下图:
2). 按照下图创建数据库
如下图:
1.5.4. 删除一个数据库
删除数据库同样有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
[!WARNING] 浏览器建议用谷歌或火狐,否则可能会报错,注意phpMyAdmin大小写
如下图:
2). 按照下图创建数据库
如下图:
1.5.5. 创建数据库用户
[!WARNING] 为了安全我们通常给每一个网站程序建立唯一的数据库连接帐号(建议帐号名不要为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; #退出数据库控制台,特别注意有分号
如下图:
1.5.6. 如何配置数据库远程连接
为了安全考虑,OneinStack仅允许云主机本机(localhost
)连接数据库,如果需要远程连接数据库,需要如下操作:
[!WARNING] 云主机安全组端口(如云厂商控制台)、iptables(部分云主机没有启用iptables,可跳过)、grant授权用户,缺一不可。
1. 云主机安全组端口开放3306端口
参考文档:《云主机安全组端口开放教程》
2. 打开iptables 3306端口
[!WARNING] 镜像V2.0以上版本,未开启iptables,请忽略此步骤2
如果您的操作系统为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规则
如下图:
3. 数据库授权
[!WARNING] 远程连接新建一个帐号(帐号名不能为
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; #退出数据库控制台,特别注意有分号
如下图:
1.6. 如何管理虚拟主机
1.6.1. 添加虚拟主机
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
1.6.2. 删除虚拟主机
cd /root/oneinstack
./vhost.sh --del
如下图:
1.7. 如何管理ftp账号
cd /root/oneinstack
./pureftpd_vhost.sh
如下图:
1.8. 如何备份
设置备份参数
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
如下图:
如果设置远程云存储备份,查看某云存储
登陆某云管理控制台
如下图:
1.9. 如何管理服务
[!WARNING] 如果操作系统有systemd,执行service重启,会跳转systemd直接,看到如下提示请忽略,已经重启
Redirecting to /bin/systemctl restart example.service
Apache:
service httpd {start|stop|status|restart|reload|configtest}
PHP:
service php-fpm {start|stop|restart|reload|status}
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}
1.10. 如何升级版本
cd /root/oneinstack
./upgrade.sh
如下图:
1.11. 如何添加扩展组件
1.11.1. 添加php扩展
如新增swoole扩展,如下命令:
cd /root/oneinstack
./install.sh --php_extensions swoole #可执行./install.sh --help查看支持哪些扩展
1.11.2. 添加系统组件
cd /root/oneinstack
./addons.sh
[!WARNING] 支持安装、卸载功能
如下图:
1.12. 如何卸载
[!WARNING] 可单独卸载某些项,如数据库用某云厂商RDS,可单独卸载数据库
cd /root/oneinstack
./uninstall.sh
[!WARNING] 注意备份数据
如下图:
1.13. 更多
1.13.1. 如何部署一个php网站
[!WARNING] 通过ftp上传代码不需要修改权限,默认已经是www;在服务器里面下载代码必须修改网站根目录及子、目录文件权限都为www;如网站权限出现问题,请参考《关于网站根目录权限》
如下wget下载代码部署一个wordpress,如下图:
访问http://demo.oneinstack.com
,输入数据库地址(localhost
), 用户名(root
),密码(数据库root密码
),完成。
如下图:
1.13.2. 关于php缓存opcache
默认情况下,为了减少PHP编译时间,提高性能(生产环境强烈开启Opcache),微柳提供的PHP环境默认加载了Opcache模块(PHP5.5及以上版本),关于原理请参考:《深入理解PHP Opcode缓存原理》
但是这样会出现PHP代码更新后,需要2~3分钟才能生效,这样影响工作效率,在网站调试阶段建议您关闭或者每次有代码更新刷新缓存,推荐方法二
方法一:卸载Opcache
cd /root/oneinstack
./addons.sh
如下图:
方法二:刷新php缓存
访问http://公网IP/ocp.php
,或者直接访问http://公网IP/ocp.php?RESET=1
如下图:
1.13.3. 关于网站根目录权限
网站根目录权限遵循:
文件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 {} \;
1.13.4. 关于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 #重启生效
1.13.5. 关于iptables防火墙
默认情况下开通22(ssh)80、443(Apache) 21、20000:30000(FTP)
[!WARNING] 镜像V2.0以上版本,未开启iptables
其它端口都拒绝,如下需要允许其它端口,如开启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规则
如下图: