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等参数

如下图:

alt optimize

1.3. php版本切换

cd /root/oneinstack
./change_php_version.sh

如下图:

alt change_php_version_cn

1.4. 将网站数据迁移至数据云盘

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

cd /root/oneinstack
./move_auto_fdisk.sh

如下图:

alt move_auto_fdisk

1.5. 数据库管理

1.5.1. 数据库默认root密码

显示数据库默认root密码,命令如下:

cd /root/oneinstack
grep dbrootpwd options.conf

如下图:

alt dbrootpwd

1.5.2. 重置数据库root密码

cd /root/oneinstack
./reset_db_root_password.sh

如下图:

alt reset_db_root_password_cn

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; #退出数据库控制台,特别注意有分号

如下图:

alt createdb_cn

方法二:phpMyAdmin创建

1). 浏览器输入 http://公网IP/phpMyAdmin

[!WARNING] 浏览器建议用谷歌或火狐,否则可能会报错,注意phpMyAdmin大小写

如下图:

alt phpmyadminlogin_cn

2). 按照下图创建数据库

如下图:

alt phpmyadmincreatedb_cn

1.5.4. 删除一个数据库

删除数据库同样有2种方法

方法一:命令行删除

举例如:删除oneinstack的数据库

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

如下图:

alt dropdb_cn

方法二:phpMyAdmin删除

1). 浏览器输入 http://公网IP/phpMyAdmin

[!WARNING] 浏览器建议用谷歌或火狐,否则可能会报错,注意phpMyAdmin大小写

如下图:

alt phpmyadminlogin_cn

2). 按照下图创建数据库

如下图:

alt phpmyadmindropdb_cn

1.5.5. 创建数据库用户

[!WARNING] 为了安全我们通常给每一个网站程序建立唯一的数据库连接帐号(建议帐号名不要为root)

如:添加一个用户名为db_user,密码为db_pass,授权为本机localhostdb_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; #退出数据库控制台,特别注意有分号

如下图:

alt createuser_cn

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规则

如下图:

alt centos_iptables3306_cn

如果您的操作系统为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规则

如下图:

alt ubuntu_debian_iptables3306_cn

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; #退出数据库控制台,特别注意有分号

如下图:

alt createuserall_cn

1.6. 如何管理虚拟主机

1.6.1. 添加虚拟主机

cd /root/oneinstack
./vhost.sh

如下图: alt lampvhost_cn

图中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

如下图: alt vhostdel_cn

1.7. 如何管理ftp账号

cd /root/oneinstack
./pureftpd_vhost.sh

如下图: alt pureftpd_cn

1.8. 如何备份

设置备份参数

cd /root/oneinstack
./backup_setup.sh

如下图: alt backup_setup

立即备份

cd /root/oneinstack
./backup.sh

设置计划任务自动定时备份

如:每天凌晨一点备份,注:下面命令请勿重复执行

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

查看本地备份

ls -l /data/backup

如下图: alt backup_local

如果设置远程云存储备份,查看某云存储

登陆某云管理控制台

如下图: alt backup_oss

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

如下图: alt upgrade_cn

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] 支持安装、卸载功能

如下图: alt addons

1.12. 如何卸载

[!WARNING] 可单独卸载某些项,如数据库用某云厂商RDS,可单独卸载数据库

cd /root/oneinstack
./uninstall.sh

[!WARNING] 注意备份数据

如下图: alt uninstall_cn

1.13. 更多

1.13.1. 如何部署一个php网站

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

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

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

如下图: alt wordpress_dbinfo_cn

1.13.2. 关于php缓存opcache

默认情况下,为了减少PHP编译时间,提高性能(生产环境强烈开启Opcache),微柳提供的PHP环境默认加载了Opcache模块(PHP5.5及以上版本),关于原理请参考:《深入理解PHP Opcode缓存原理》

但是这样会出现PHP代码更新后,需要2~3分钟才能生效,这样影响工作效率,在网站调试阶段建议您关闭或者每次有代码更新刷新缓存,推荐方法二

方法一:卸载Opcache

cd /root/oneinstack
./addons.sh

如下图: alt uninstallopcache_cn

方法二:刷新php缓存

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

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规则

如下图: alt centos_iptables8080_cn

如果您的操作系统为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规则

如下图: alt ubuntu_debian_iptables8080_cn

Copyright © OneinStack 2021 all right reserved,powered by Gitbook修订时间: 2020-12-20 20:16:31

results matching ""

    No results matching ""