Toggle navigation

多语言环境镜像使用手册

Version 1.6.1

版本说明

软件版本详细:

  • Nginx1.12.0
  • Tomcat7.0.77或8.5.14
  • PHP5.3.29、PHP5.4.45、PHP5.5.38、PHP5.6.30、PHP7.0.18、PHP7.1.4
  • MySQL5.6.36或5.7.18
  • Redis3.2.8
  • Memcached1.4.36
  • Jemalloc4.5.0
  • Pure-FTPd1.0.45
  • phpMyAdmin4.4.15.10

功能亮点:

  1. 基于源码编译安装,细节安全优化,纯命令行,占用系统资源低
  2. Jemalloc优化MySQL、Nginx内存管理
  3. PHP环境:Nginx+php-fpm的组合(即LNMP)
  4. JAVA环境:Nginx+Tomcat的组合,动静分离,性能更加高效,适用于对访问量要求较高的站点; Tomcat以一般用户运行、隐藏版本号等,增强安全性,Tomcat以apr模式运行,大幅度的提高性能
  5. 交互添加Nginx、Tomcat虚拟主机,提供java、php选项一键创建虚拟主机,支持Let’s Encrypt一键设置
  6. 菜单式FTP账号管理脚本,轻松建立ftp虚拟用户
  7. 提供在线Nginx、PHP、MySQL、Redis、Memcached、phpMyAdmin升级脚本
  8. 提供本地备份和远程备份(服务器之间rsync)、内网阿里云OSS备份功能

 

目录说明

源码安装目录:
Nginx:/usr/local/nginx
Tomcat:/usr/local/tomcat
JDK: /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

数据存储目录:
数据库(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内存配置完成,Nginx、MySQL、PHP、JVM参数还是该配置的参数,强烈建议如果不是这个配置,请执行下面优化脚本:

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

⚠️注意:

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

如下图:

PHP版本切换

cd /root/oneinstack
./change_php_version.sh

如下图:

JDK版本切换

cd /root/oneinstack
./change_jdk_version.sh

如下图:

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

cd /root/oneinstack
./move_auto_fdisk.sh

如下图:

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

数据库默认root密码

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

如下图:

重置数据库root密码

cd /root/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

创建PHP环境如下图:

创建JAVA环境如下图:

图中directory为网站根目录,脚本执行后会自动创建,部署网站时请将代码上传到该目录(目录、子目录和文件权限都为:www)
对应Nginx配置文件路径:
/usr/local/nginx/conf/vhost/demo.oneinstack.com.conf
伪静态(只有LNMP环境才会出现伪静态选项):/usr/local/nginx/conf/rewrite/wordpress.conf
对应Tomcat配置文件路径:
/usr/local/tomcat/conf/vhost/demo.oneinstack.com.xml

删除虚拟主机

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
如下图:

Nginx:

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

⚠️:更改Nginx配置文件,强烈建议reload
Tomcat:

service tomcat {start|stop|restart|status}

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

如下图:

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

如下图:

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

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

如下图:

如何部署一PHP网站

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

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

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

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

如何部署一个JAVA网站

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

注意:

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

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

JAVA应用部署说明
默认镜像是做了动静分离,即nginx处理静态资源(jss、ccc、图片等),其余的交给tomcat处理。
默认(未绑定域名)对应网站根目录/data/wwwroot/default(不是webapps),部署代码时建议将war包解压(比如example.war,解压命令:jar xf example.war ,注意权限必须为www),将其中代码放到对应网站根目录。
• 如果上传代码之后目录结构为:/data/wwwroot/default/WEB-INF,访问地址为:http://IP
• 如果上传代码之后目录结构为:/data/wwwroot/default/example/WEB-INF,访问网站地址为:http://IP/example。

注意:

  • war包也可以不解压即上传到对应网站根目录,但必须注意访问路径和静态资源目录问题。如果访问网站时,静态资源加载不了,可能是原因是做了动静分离静态资源直接有nginx处理,请确认nginx是否能找到相关静态资源(nginx网站根目录:/data/wwwroot/default)
  • 如果vhost.sh绑定了域名,如www.example.com,工具会自动生成对应根目录:/data/wwwroot/www.example.com ,请将代码放入此目录。
  • Tomcat参数请修改: /usr/local/tomcat/bin/setenv.sh

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

如下图: