说明
推荐一个常用的 Linux 环境搭建利器 Oneinstack,支持可视化选项,可通过一行命令搭建环境,大大降低 Linux 系统环境搭建的复杂度,告别了繁琐的配置,也提高了环境搭建的复用性,进一步提高我们的工作效率。
概述
官网地址: https://oneinstack.com/
Oneinstack
是一个自动化部署 Linux
环境的工具,它可以帮助用户快速搭建和配置服务器,以便运行 Web
应用程序。支持主流 Linux
发行版系统,并集成了 Nginx
、Apache
、MySQL
和 PHP
等常用的服务器软件。用户可以通过简单的命令或图形界面来安装和管理这些软件。
快捷组合
支持 LNMP
、LAMP
、LNMPA
、LNMT
、LNPP
、LAPP
等环境组合快速选择,明细如下:
支持系统
- CentOS 7~9( 包括redhat、AlmaLinux、Rocky、Anolis )
- Debian 9、10、11、12
- Ubuntu 16、18、22、24
- Fedora 27+
- Deepin
- openEuler、EulerOS
- Kylin
- Amazon Linux 2
- Aliyun Linux 2~3、TencentOS 2~3
特性
- 持续不断更新,支持交互、无人值守安装
- 源码编译安装,大多数源码是最新stable版,并从官方网址下载
- 提供多个数据库及版本 ( MySQL、 MariaDB、Percona、PostgreSQL、MongoDB )
- 提供多个 PHP 版本
- 提供 Nginx、Tengine、OpenResty、Apache 和 nginx waf 功能
- 提供多个 Tomcat 版本
- 提供多个 JDK 版本
- 根据自己需求安装 PHP 缓存加速器,提供ZendOPcache、xcache、apcu、eAccelerator。及php加解密工具ionCube、ZendGuardLoader
- 根据自己需求安装 Nodejs、Pureftpd、phpMyAdmin
- 根据自己需求安装 Memcached、Redis
- jemalloc 优化 MySQL、Nginx
- 提供添加虚拟主机脚本
- 提供 Nginx / Tengine / OpenResty / Apache、PHP、Redis、Memcached、phpMyAdmin 升级脚本
- 提供本地备、远程(rsync)、阿里云 OSS、腾讯云 COS、又拍云、七牛云、亚马逊 S3 和 Dropbox 备份脚本
功能描述
自动安装 推荐
如下可视化选项页面,按需选择环境,支持 快捷组合 选择,也可以自定义搭配,页面将选项反向解析成安装命令,复制并执行安装命令,脚本会解析命令参数自动完成安装。
因选项不同,生成命令有所差异,这里仅做示例,命令参数说明如下:
命令参数 | 描述 |
---|---|
--nginx_option [1-3] | 指定 Nginx 安装版本 : 1: Nginx 2: Tengine 3: OpenResty |
--apache | 安装 Apache |
--apache_mode_option [1-2] | Apache + PHP 模式: 1: php-fpm :使用 FastCGI,PHP 和 Apache 分离2: mod_php :PHP 作为 Apache 的一个内置模块 |
--apache_mpm_option [1-3] | Apache 工作模式: 1: event 2: prefork 3: worker |
--php_option [1-12] | 指定 PHP 安装版本 |
--phpcache_option [1-4] | PHP 缓存选项: 1: OPcache 2: APCU 3: XCache 4: eAccelerator |
--php_extensions [ext name] | PHP 扩展 |
--tomcat_option [1-4] | 指定 Tomcat 安装版本 |
--jdk_option [1-3] | 指定 JDK 安装版本 |
--db_option [1-14] | 指定数据库安装版本 |
--dbinstallmethod [1-2] | 数据库安装方式: 1:二进制安装 2:源码编译安装 |
--dbrootpwd [password] | 数据库密码 |
--nodejs | 安装 Node.js |
--pureftpd | 安装 FTP 工具 Pure-Ftpd |
--redis | 安装 Redis |
--memcached | 安装 Memcached |
--phpmyadmin | 安装 phpMyAdmin |
--pyhton | 安装 Python (PATH: ${python_install_dir}) |
--iptables | 开启 iptables |
--ssh_port [22] | SSH 端口 |
--reboot | 安装后重启 |
最终安装命令示例如下:
sh
# 安装命令示例
wget -c http://mirrors.oneinstack.com/oneinstack-full.tar.gz && \
tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh \
--nginx_option 1 --jdk_option 3 --db_option 1 \
--dbinstallmethod 1 --dbrootpwd oneinstack --nodejs \
--pureftpd --redis --memcached --iptables --reboot
交互安装
- 执行安装脚本,根据命令步骤手动选择安装选项来实现安装,具体步骤如下:
sh
# 1. 安装所需工具
yum -y install wget screen # CentOS/Redhat 执行
# apt-get -y install wget screen # Debian/Ubuntu 执行
# 2. 下载安装包(包含源码,国内外均可下载)
wget http://mirrors.linuxeye.com/oneinstack-full.tar.gz
# 3. 解压安装包
tar xzf oneinstack-full.tar.gz
# 4. 进入目录,如需修改目录(安装、数据存储、Nginx日志),可修改 options.conf 文件
cd oneinstack
screen -S oneinstack
# 5. 如果出现网络中断,可执行如下命令
# screen -R oneinstack
# 6. 执行安装脚本
./install.sh
./install.sh
安装脚本执行后,会进入如下命令界面,根据提示选择即可,步骤说明如下:
sh
Please input SSH port(Default: 22): 22 # 指定 SSH 端口
Do you want to enable firewall? [y/n]: y # 是否开启防火墙
Do you want to install Web server? [y/n]: y # 是否安装 Web 服务器
Please select Nginx server: # Nginx 安装选项
1. Install Nginx
2. Install Tengine
3. Install OpenResty
4. Do not install
Please input a number:(Default 1 press Enter) 1 # 安装 Nginx
Do you want to install Apache? [y/n]: n # 是否安装 Apache
Please select tomcat server: # Tomcat 安装选项
1. Install Tomcat-10
2. Install Tomcat-9
3. Install Tomcat-8
4. Install Tomcat-7
5. Do not install
Please input a number:(Default 5 press Enter) # 不安装 Tomcat
Do you want to install Database? [y/n]: y # 是否安装数据库
Please input the root password of MySQL(default: HWr85M4F): password # 数据库 root 密码
Please select a version of the Database: # 数据库安装选项
1. Install MySQL-8.0
2. Install MySQL-5.7
3. Install MySQL-5.6
4. Install MySQL-5.5
5. Install MariaDB-10.11
6. Install MariaDB-10.5
7. Install MariaDB-10.4
8. Install MariaDB-5.5
9. Install Percona-8.0
10. Install Percona-5.7
11. Install Percona-5.6
12. Install Percona-5.5
13. Install PostgreSQL
14. Install MongoDB
Please input a number:(Default 2 press Enter) 1 # 选择安装 MySQL 8.0
Please choose installation of the database: # 数据库安装方式选择
1. Install database from binary package.
2. Install database from source package.
Please input a number:(Default 1 press Enter) # 1.二进制安装 2.源码编译安装
Do you want to install PHP? [y/n]: n # 是否安装 PHP
Do you want to install Nodejs? [y/n]: n # 是否安装 Node.js
Do you want to install Pure-FTPd? [y/n]: y # 是否安装 FTP 工具
Do you want to install redis-server? [y/n]: y # 是否安装 Redis
Do you want to install memcached-server? [y/n]: n # 是否安装 Memcached
# 如上选择步骤完成后会进入自动安装流程,耐心等待安装完成,完成后会打印如下:
####################Congratulations########################
Total OneinStack Install Time: 4 minutes
Nginx install dir: /usr/local/nginx # Nginx 安装路径
Database install dir: /usr/local/mysql # MySQL 安装路径
Database data dir: /data/mysql # MySQL 数据存储路径
Database user: root # MySQL 默认账户
Database password: password # MySQL root 账户密码
Pure-FTPd install dir: /usr/local/pureftpd # FTP 工具安装路径
Create FTP virtual script: ./pureftpd_vhost.sh # FTP 命令脚本
redis install dir: /usr/local/redis # redis 安装路径
Index URL: http://xxx.xx.xx.xx/ # 默认访问地址
Please restart the server and see if the services start up fine.
Do you want to restart OS ? [y/n]: y # 重启系统
虚拟主机管理
提示
vhost.sh 脚本集成 acme.sh 工具,可以自动申请免费 SSL 域名证书,使用参考:acme.sh 使用说明 ,更多用法参考:https://wiki.acme.sh/说明
添加 vhost
sh
# 运行 vhost.sh 脚本
~/oneinstack/vhost.sh
# 会出现如下命令界面
What Are You Doing?
1. Use HTTP Only # 仅配置 HTTP
2. Use your own SSL Certificate and Key # 自购 SSL 证书,自动配置 HTTP、HTTPS
3. Use Let's Encrypt to Create SSL Certificate and Key # Let's Encrypt 免费证书申请
q. Exit
Please input the correct option: 3 # 如果有购买证书自行替换选择2,无证书的话选择3,后面也可替换
Please input domain(example: www.example.com): dodoo.co # 这里以 dodoo.co 域名为例
Please input the directory for the domain:dodoo.co :
(Default directory: /data/wwwroot/dodoo.co): # 虚拟主机根路径,默认即可
Virtual Host Directory=/data/wwwroot/dodoo.co
Create Virtul Host directory......
set permissions of Virtual Host directory......
Do you want to add more domain name? [y/n]: n # 是否添加更多域名
Do you want to redirect all HTTP requests to HTTPS? [y/n]: y # 强制 HTTP 跳转 HTTPS
Please select domain cert key length.
Enter one of 2048, 3072, 4096, 8192 will issue a RSA cert.
Enter one of ec-256, ec-384, ec-521 will issue a ECC cert.
Please enter your cert key length (default 2048): # 指定证书秘钥长度
Please enter your email: xx@dodoo.co # 指定邮箱地址,用于申请 SSL 证书
# 接下来会自动申请证书,耐心等待...
[Wed Aug 23 11:49:26 CST 2023] Using CA: https://acme.zerossl.com/v2/DV90
[Wed Aug 23 11:49:26 CST 2023] Creating domain key
[Wed Aug 23 11:49:26 CST 2023] The domain key is here: /root/.acme.sh/dodoo.co/dodoo.co.key
[Wed Aug 23 11:49:26 CST 2023] Single domain='dodoo.co'
[Wed Aug 23 11:49:26 CST 2023] Getting domain auth token for each domain
[Wed Aug 23 11:49:34 CST 2023] Getting webroot for domain='dodoo.co'
[Wed Aug 23 11:49:34 CST 2023] Verifying: dodoo.co
[Wed Aug 23 11:49:38 CST 2023] Processing, The CA is processing your order, please just wait. (1/30)
[Wed Aug 23 11:49:43 CST 2023] Success
[Wed Aug 23 11:49:43 CST 2023] Verify finished, start to sign.
[Wed Aug 23 11:49:43 CST 2023] Lets finalize the order.
[Wed Aug 23 11:49:43 CST 2023] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/xxxx/finalize'
[Wed Aug 23 11:49:45 CST 2023] Order status is processing, lets sleep and retry.
[Wed Aug 23 11:49:45 CST 2023] Retry after: 15
[Wed Aug 23 11:50:02 CST 2023] Polling order status: https://acme.zerossl.com/v2/DV90/order/xxxx
[Wed Aug 23 11:50:04 CST 2023] Downloading cert.
[Wed Aug 23 11:50:04 CST 2023] Le_LinkCert='https://acme.zerossl.com/v2/DV90/cert/xxxx'
[Wed Aug 23 11:50:06 CST 2023] Cert success.
-----BEGIN CERTIFICATE-----
*****************************************
-----END CERTIFICATE-----
# 如下打印,说明证书申请成功...
[Wed Aug 23 11:50:06 CST 2023] Your cert is in: /root/.acme.sh/dodoo.co/dodoo.co.cer
[Wed Aug 23 11:50:06 CST 2023] Your cert key is in: /root/.acme.sh/dodoo.co/dodoo.co.key
[Wed Aug 23 11:50:06 CST 2023] The intermediate CA cert is in: /root/.acme.sh/dodoo.co/ca.cer
[Wed Aug 23 11:50:06 CST 2023] And the full chain certs is there: /root/.acme.sh/dodoo.co/fullchain.cer
Do you want to add hotlink protection? [y/n]: y # 是否设置防盗链
Allow Rewrite rule? [y/n]: y # 是否允许重写规则
Please input the rewrite of programme :
wordpress,opencart,magento2,drupal,joomla,codeigniter,laravel
thinkphp,pathinfo,discuz,typecho,ecshop,nextcloud,zblog,whmcs rewrite was exist.
(Default rewrite: other): # 默认 other
Allow Nginx/Tengine/OpenResty access_log? [y/n]: n # 是否允许保存请求日志
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Reload Nginx......
# 打印如下,说明配置完成
Your domain: dodoo.co
Virtualhost conf: /usr/local/nginx/conf/vhost/dodoo.co.conf
Directory of: /data/wwwroot/dodoo.co
Rewrite rule: /usr/local/nginx/conf/rewrite/other.conf
Let's Encrypt SSL Certificate:/usr/local/nginx/conf/ssl/dodoo.co.crt
SSL Private Key: /usr/local/nginx/conf/ssl/dodoo.co.key
删除 vhost
提醒
虚拟主机删除时会一并删除虚拟主机根目录,建议做好备份,删除步骤说明如下:
sh
# 运行 vhost.sh 脚本
~/oneinstack/vhost.sh --del
# 会出现如下命令界面
Virtualhost list: # 虚拟主机列表
dodoo.co
Please input a domain you want to delete: dodoo.co # 输入要删除的虚拟主机
Do you want to delete Virtul Host directory? [y/n]: y # 删除确认,选择是
Press Ctrl+c to cancel or Press any key to continue... # 按任意键确认
# 打印如下,说明删除完成。
Domain: dodoo.co has been deleted.
FTP 账号管理
提醒
需要安装 Pure-FTPd ,才可以进行如下操作,否则会提示 FTP server does not exist!
:
sh
# 运行 pureftpd_vhost.sh 脚本
~/oneinstack/pureftpd_vhost.sh
# 会出现如下命令界面
What Are You Doing?
1. UserAdd # 创建账号
2. UserMod # 更改目录
3. UserPasswd # 更改密码
4. UserDel # 删除账号
5. ListAllUser # 列出所有账号
6. ShowUser # 显示某个账号详情
q. Exit
Please input the correct option: 1 # 选择创建账号
Please input a username: user # 指定用户名
Please input the password: password # 指定密码
Please input the directory(Default directory: /data/wwwroot): # FTP 根目录,建议默认
Password:
Enter it again:
#####################################
# 打印如下,说明创建成功
[user] create successful!
You user name is : user
You Password is : password
You directory is : /data/wwwroot
数据备份
sh
# 运行 backup_setup.sh 脚本
~/oneinstack/backup_setup.sh
# 会出现如下命令界面
Please select your backup destination:
1. Localhost # 本地备份
2. Remote host # 远程备份(SSH)
3. Aliyun OSS # 阿里云 OSS 备份
4. Qcloud COS # 腾讯云 COS 备份
5. UPYUN # 又拍云备份
6. QINIU # 七牛云备份
7. Amazon S3 # 亚马逊 S3 备份
8. Dropbox # Dropbox 备份
Please input numbers:(Default 1 press Enter) 1 # 建议选择云存储备份,也支持组合选择如 13
Please select your backup content:
1. Only Database # 数据库
2. Only Website # 网站
3. Database and Website # 数据库和网站
Please input a number:(Default 1 press Enter) 1 # 选择备份内容
Please enter the directory for save the backup file:
(Default directory: /data/backup): # 备份存储目录
Please enter a valid backup number of days:
(Default days: 5): 10 # 备份保留天数
mysql: [Warning] Using a password on the command line interface can be insecure.
Please enter one or more name for database, separate multiple database names with commas:
(Default database: example) example # 备份数据库名称,多个逗号隔开
# 打印如下,说明备份完成。
You have to backup the content:
Database: example
更新版本
sh
# 运行 upgrade.sh 脚本
~/oneinstack/upgrade.sh
# 会出现如下命令界面
What Are You Doing?
1. Upgrade Nginx/Tengine/OpenResty # 升级 Nginx、Tengine、OpenResty
2. Upgrade Apache # 升级 Apache
3. Upgrade Tomcat # 升级 Tomcat
4. Upgrade MySQL/MariaDB/Percona # 升级 MySQL、MariaDB、Percona
5. Upgrade PHP # 升级 PHP
6. Upgrade Redis # 升级 Redis
7. Upgrade Memcached # 升级 Memcached
8. Upgrade phpMyAdmin # 升级 phpMyAdmin
9. Upgrade OneinStack latest # 升级 Oneinstack (不影响现有运行版本)
10. Upgrade acme.sh latest # 升级 acme.sh
q. Exit
Please input the correct option: 1 # 选择升级项,以 Nginx 升级为例。
Current Nginx Version: 1.22.1
Please input upgrade Nginx Version(default: 1.24.0): 1.24.0 # 输入升级版本
卸载 Oneinstack
sh
# 运行 uninstall.sh 脚本
~/oneinstack/uninstall.sh
# 会出现如下命令界面
What Are You Doing?
0. Uninstall All # 卸载所有
1. Uninstall Nginx/Tengine/OpenResty/Apache/Tomcat # 卸载 Web 服务器
2. Uninstall MySQL/MariaDB/Percona # 卸载 MySQL
3. Uninstall PostgreSQL # 卸载 PostgreSQL
4. Uninstall MongoDB # 卸载 MongoDB
5. Uninstall all PHP # 卸载 PHP
6. Uninstall PHP opcode cache # 卸载 PHP 缓存
7. Uninstall PHP extensions # 卸载 PHP 扩展
8. Uninstall PureFtpd # 卸载 FTP 工具
9. Uninstall Redis # 卸载 Redis
10. Uninstall Memcached # 卸载 Memcached
11. Uninstall phpMyAdmin # 卸载 phpmyAdmin
12. Uninstall Nodejs (PATH: /usr/local/node) # 卸载 Node.js
q. Exit
Please input the correct option: 0 # 选择卸载选项
You will uninstall OneinStack, Please backup your configure files and DB data!
/usr/local/nginx
/lib/systemd/system/nginx.service
/etc/logrotate.d/nginx
/usr/local/mysql
/etc/init.d/mysqld
/etc/my.cnf
/usr/local/pureftpd
/lib/systemd/system/pureftpd.service
/usr/local/redis
/lib/systemd/system/redis-server.service
Do you want to uninstall? [y/n]: y # 卸载确认
# 打印如下,说明卸载完成。
Nginx uninstall completed!
MySQL uninstall completed!
Pureftpd uninstall completed!
Redis uninstall completed!