又:兔子有另外一种解法,安装一个模块https://github.com/odoomrp/odoomrp-wip/tree/8.0/product_variant_default_code专门解决这个变体数量太多的问题。

前些天兔子在群里发了张老模连体拉丝布料的产品表,有黑白杏紫艳梅红海军兰6种颜色和10个尺寸(32B、34B、36B、38B、40B、42B、34C、36C、38C、40C、42C),共60种产品变体属性。

01.jpg

一开始完全没想明白,按6色和10尺码来创建变体居然做到10000多个变体,

阿里云单核的ECS+1G内存+1M带宽,
耗时20多分钟才创建完毕,
也是自己埋自己了,后来才理清楚的(水平有限哟)~

02.png
03.jpg
04.png

从odoo产品导出,
看到有N长的列表想死的心都有了

05.png

06.png
07.png
08.png
09.png
10.jpg
11.png

附加一篇文章:
http://blog.sina.cn/dpool/blog/s/blog_7cb52fa80102w2dm.html?vt=4
产品和产品规格(产品变量)自动生成SKU的需求解决思路
2016-03-04 19:30阅读:904
产品和产品规格(产品变量)自动生成SKU的需求解决思路
原文地址:http://shine-it.net/index.php/topic,17490.msg31959.html#msg31959
不知道你们有没有碰到过这样的问题,就是当产品上的属性比较多的时候,这种理论上的产品变体就会产生很多。比如:
同一款式(SPU)的服装,有XS, S, M,L, XL,XXL 6种,颜色有10种,如果再有个面料2种,那么可能的组合就会有6X10X2=120种
一款服装就生成120种变体是很难维护的,而且大部分的组合应该都不会有真实的SKU。
如果有这样的问题,可以参考一下这个odoomrp项目下的:https://github.com/odoomrp/odoomrp-wip
product_variants_no_automatic_creation 模块和
sale_product_variants 模块,以及我们贡献的: product_variant_default_code 模块
这些https://github.com/odoomrp/odoomrp-wip/tree/8.0/sale_product_variants模块的设计思路就是,不是在产品模版上定义产品属性时就生成产品变体,而是在销售订单上通过产品配置器,由用户选择产品属性,然后动态生成产品变体。
这样系统中存在的产品变体的数量与实际的业务完全一致。
以上供您参考。

product_variant_default_code.png

今早Odoo-应用群(群号212904)有宁波群友问到,不同产品设置不同的货币单位,怎么设置 ,正好闲着,于是在8.0的版本试玩一下。

先说结论:采购或销售的不同产品设置不同货币单位,都可以通过价格表来预设定。
截图如下:
1.png

22.png

采购呢,比如我采购日本的东西,采购德国东西 不是货物单位不一样,难道每个都换算成人民币吗

33.png

需要声明一点:截图中的日元符号,国际标准化组织ISO 4217设定,日元货币符号为“¥”,“¥”上是两横,与人民币的符号相同,没有区别。截图中的日元符号 円 是我自行修改为了区分¥符号的。

今天群里有朋友问了很久,正好闲下来了,试玩了一下:
操作步骤:
1、【设置】->【用户界面】->【菜单项目】,创建:
【菜单】输入【友情链接】四个字;
【动作】第一个空选择【ir.actions.act_url】第二个空输入【友情链接】四个字这里右边有一个小图标点之后弹出窗框,
【打开: Referenced Document】,

【动作目标】选择【新窗口】,
【动作 URL】输入一个友链网址如【http://duuge.com】,
【动作名称】为【友情链接】,
【动作类型】为【ir.actions.act_url】。

其他不管。点【保存】。
最后在用户的个人资料设置界面,把菜单定制的主页动作里选择【友情链接】这个刚才设定好的菜单。
66.png
44.png
55.png

要在内网搭个IT资产管理系统,选了centos7最新版,在exsi6.0上开始的。
首先安装centos7,最小安装之后安装openssh过程略。
之后putty远程连进centos7,安装apache和php和sqlite。
Apache软件的软件包名称叫做httpd,因此,要安装Apache软件,就使用下述命令:

[root@localhost ~]# yum install httpd

安装完成后,Apache是以httpd服务的形式存在的。因此,要启动Apache并将其设置为开机启动,就使用命令:

[root@localhost ~]# systemctl start httpd.service
[root@localhost ~]# systemctl enable httpd.service

然后,检查httpd服务状态:

[root@localhost ~]# systemctl status httpd.service

其中,“enabled”表示httpd服务已设为开机启动,“active(running)”则表示httpd服务正在运行中。
这样的话,HTTP协议就已被启动起来了,由于HTTP协议使用到tcp端口80,因此防火墙要放通tcp端口80:

[root@localhost ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent

重启防火墙以让更改立刻生效:

[root@localhost ~]# firewall-cmd --reload

使用以下命令检查配置是否成功:

[root@localhost ~]# firewall-cmd --list-all

其中,,tcp端口80已放行通过了。
然后这个时候,就可以在物理机上使用浏览器来访问刚刚搭建的web服务器了。不过,因为这个时候还未创建任何页面,所以它显示的是Apache软件自带的测试页面。
设置Apache配置文件
Apache软件的主配置文件为/etc/httpd/conf/httpd.conf。关于Apache 2.4版软件的详细说明文档,可在网页http://httpd.apache.org/docs/2.4/en/中查阅到。特别是,关于主配置文件httpd.conf中各指令的详细说明,可在网页http://httpd.apache.org/docs/2.4/mod/directives.html中查阅到。
关于Apache 2.4版软件的详细说明文档,也可以将它安装在本地Linux主机上面,使用命令yum install httpd-manual即可安装它。安装完成后,重启httpd服务。在web服务运行正常的情况下,可在本地Linux主机上面使用网址http://localhost/manual/来访问它。在其它设备上面,则使用相应的网址即可,如在本实例中,我可以在物理机上使用网址http://172.31.2.2/manual/来访问它。
另外还需要知道:/etc/httpd/conf.d目录下以.conf结尾的配置文件也会被读取;可加载模块(如PHP)的配置文件应放置在/etc/httpd/conf.modules.d目录下,并且也以.conf结尾。

下面介绍一下httpd.conf这个配置文件的内容(少量配置有修改):

ServerRoot "/etc/httpd"                      //服务器根目录:本配置文件中没有使用绝对路径的地方,都认为是在该目录下              
Listen 80                                    //侦听80端口                                                                                                            
                                                                                                                                                                               
Include conf.modules.d/*.conf                                                                                                                                    
//该设定让/etc/httpd/conf.modules.d目录下以.conf结尾的配置文件也会被读取进来。DSO对象的配置文件应放置在此目录下       
                                                                                                                                                                               
User apache                                                                                                                                                             
Groupapache                                                                                                                                                           
//当你使用浏览器访问web服务器时,会产生相应的httpd进程,该进程所属的用户和组就由这里设定。                                       
                                                                                                                                                                               
//从这里开始,下面的设定适用于“主”服务器,与虚拟主机区别开来。但如果<VirtualHost>部分未设定这些值,也会使用这些值  
                                                                                                                                                                               
ServerAdmin root@localhost                 //系统管理员的邮箱。改成自己的邮箱即可。                                                         
ServerName www.speedsnail.com            //设置主机名。生产环境中,该主机名应该是能被正确解析成这台服务器的IP的。       
                                                                                                                                                                               
<Directory />                                                                                                                                                           
   AllowOverride none                                                                                                                                               
   Require all denied                                                                                                                                                  
</Directory>                                                                                                                                                            
//<Directory 目录路径>和</Directory>:用于设定指定目录(这里是系统根目录)的访问权限。目录路径那里可以使用绝对         
//路径和相对路径,还可以搭配使用通配符和正则表达式。                                                                                                  
//AllowOverride:如果指定目录下(这里是系统根目录)存在一个.htaccess文件,那么AllowOverride设定的是,该文件里面的     
//设置是否能够覆盖<Directory>这部分的设置,或该文件里面的设置可以覆盖的是<Directory>这部分的哪些设置。none表示不    
//允许进行覆盖。                                                                                                                                                        
//Require:设定哪些用户可以访问该目录(这里是系统根目录)。all denied表示不允许访问该目录。                                       
                                                                                                                                                                               
DocumentRoot "/var/www/html"                                                                                                                                 
//设定网页存放目录。比如说,访问http://host/index.html实际上就是访问这个host的/var/www/html/index.html这个文档。         
                                                                                                                                                                                
<Directory "/var/www">                                                                                                                                             
   AllowOverride None                                                                                                                                                
   Require all granted                        //all granted表示可无条件访问该目录。                                                                   
</Directory>                                                                                                                                                             
                                                                                                                                                                                
<Directory"/var/www/html">                                                                                                                                       
   Options FollowSymLinks                                                                                                                                          
   AllowOverride None                                                                                                                                                
   Require all granted                                                                                                                                                 
</Directory>                                                                                                                                                             
//Options:用于设定在该目录中哪些特性可用。FollowSymLinks,让该目录下的符号链接可以生效。默认这里还有个Indexes选     
//项,建议拿掉。它的作用是,当浏览器访问该目录(而非该目录下的某一个档案)时,如果该目录下没有默认网页(如index.html),
//那么此时就会返回该目录下的文件名列表。                                                                                                                    
                                                                                                                                                                                
<IfModule dir_module>                                                                                                                                             
   DirectoryIndex index.html                                                                                                                                        
</IfModule>                                                                                                                                                             
//<IfModule 模块>和</IfModule>:如果Apache有加载这里指定的模块,那么Apache就会对它们之间的语句进行处理。            
//也可以使用<IfModule!模块>和</IfModule>,那么就表示没有加载指定的模块时才进行处理。                                              
//这里的模块可以是模块ID(如rewrite_module),也可以是模块文件名(如mod_rewrite.c)。                                               
//DirectoryIndex:这就是设置默认网页的,即当浏览器访问某一个目录时,会返回该目录下的index.html文件(如果存在的话)。   
//也可以接多个档名,如DirectoryIndexindex.html index.htm index.cgi index.pl,这样就会返回找到的第一个文件。                   
                                                                                                                                                                                
<Files ".ht*">                                                                                                                                                             
   Require all denied                                                                                                                                                   
</Files>                                                                                                                                                                    
//<Files 文件名>和</Files>:对指定文件名的文件应用这里指定的语句。                                                                              
//这里的语句的意思是:任意目录下,文件名符合.ht*的文件都会被禁止访问。                                                                         
                                                                                                                                                                                
ErrorLog "logs/error_log"                           //错误日志所在文档为/etc/httpd/logs/error_log                                             
LogLevel warn                                     //设置日志记录级别                                                                                            
                                                                                                                                                                                
<IfModule log_config_module>                                                                                                                                  
   LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\"" combined                                               
   LogFormat "%h %l %u %t \"%r\" %>s %b" common                                                                                                  
   <IfModule logio_module>                                                                                                                                       
     LogFormat "%h %l %u %t \"%r\" %>s %b\"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio                               
   </IfModule>                                                                                                                                                          
   CustomLog "logs/access_log" combined        //客户端访问服务器的日志会记在/etc/httpd/logs/access_log                       
</IfModule>                                                                                                                                                             
                                                                                                                                                                                
<IfModule alias_module>                                                                                                                                           
   ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"                                                                                                                   
</IfModule>                                                                                                                                                             
//ScriptAlias会将URL路径映射到指定目录,并且让该目录具有CGI脚本执行权限(因此CGI脚本都可放置在该目录下)。                
//以这里的设定举个例子,假如在浏览器中输入http://example.com/cgi-bin/foo,此时就会执行/var/www/cgi-bin/foo这个         
//CGI脚本。                                                                                                                                                               
                                                                                                                                                                                
<Directory"/var/www/cgi-bin">                                                                                                                                   
   AllowOverride None                                                                                                                                                
   Options None                                                                                                                                                         
   Require all granted                                                                                                                                                 
</Directory>                                                                                                                                                             
                                                                                                                                                                                
<IfModule mime_module>                             //这部分是关于MIME的                                                                            
   TypesConfig /etc/mime.types                                                                                                                                   
   AddType application/x-compress .Z                                                                                                                         
   AddType application/x-gzip .gz .tgz                                                                                                                          
   AddType text/html .shtml                                                                                                                                         
   AddOutputFilter INCLUDES .shtml                                                                                                                             
</IfModule>                                                                                                                                                             
                                                                                                                                                                                
AddDefaultCharset Off                                                                                                                                               
//AddDefaultCharset会强制客户端浏览器使用指定的字符集编码方式。这可能会有问题,所以要将它关闭。实际上,所使用的编     
//码方式在网页里有声明。                                                                                                                                            
                                                                                                                                                                                
<IfModule mime_magic_module>                                                                                                                               
   MIMEMagicFile conf/magic                                                                                                                                     
</IfModule>                                                                                                                                                             
                                                                                                                                                                                
EnableSendfile on                                           //允许Apache使用系统核心支持的sendfile来传送文件给客户端                      
IncludeOptional conf.d/*.conf                          //在/etc/httpd/conf.d目录下以.conf结尾的配置文件也会被读取                      

从上面也可以知道,默认情况下,网页文档可以放置在/var/www/html目录下,CGI脚本可以放置在/var/www/cgi-bin目录下;错误日志在/etc/httpd/logs/error_log,访问日志在/etc/httpd/logs/access_log。

设定好配置文件后,要测试配置文件语法有没有问题,可使用命令:

[root@localhost ~]#apachectl configtest

然后,重启httpd服务:

[root@localhost ~]# systemctl restart httpd

安装PHP
使用以下命令安装PHP软件:

[root@localhost ~]# yum install php

安装完成后,PHP会生成配置文件/etc/httpd/conf.d/php.conf,因为该配置文件在/etc/httpd/conf.d目录下,所以它会被Apache所读取。PHP还会生成配置文件/etc/httpd/conf.modules.d/10-php.conf,该配置文件也会被Apache所读取,它的设定让Apache可以加载PHP模块。不过,PHP软件本身的配置文件其实是/etc/php.ini。

下面介绍一下配置文件/etc/httpd/conf.d/php.conf:
<FilesMatch \.php$>                                                                                                                                       
   SetHandler application/x-httpd-php                                                                                                               
</FilesMatch>                                                                                                                                                
//<FilesMatch 正则表达式>和</FilesMatch>:文件名与正则表达式相匹配的文件,将适用这里设定的语句。                   
//SetHandler:强制所有匹配的文件使用指定handler进行处理。                                                                               
                                                                                                                                                                     
AddType text/html .php                          //设定扩展名为.php的档案的类型为text/html                                            
DirectoryIndex index.php                         //默认网页档名增加index.php                                                               
php_value session.save_handler"files"                                                                                                               
php_value session.save_path    "/var/lib/php/session"                                                                                        
 
下面介绍一下配置文件/etc/httpd/conf.modules.d/10-php.conf:
<IfModule prefork.c>                                                                                                                                     
 LoadModule php5_module modules/libphp5.so                                                                                               
</IfModule>                                                                                                                                                  
//如果Apache使用的多处理模块(MPM)是prefork(默认),那么Apache就会加载LoadModule指定的模块(PHP模块)       
 
最后,来看看配置文件/etc/php.ini。在该文件的开头处,有说明针对生产环境和开发环境,有一些设定值可以进行修改,以提高PHP的效能。假设该web服务器是用于生产环境的,将下面的这些设定值改成这样(或确认这些设定值是这样的):
display_errors = Off                                       //当发生错误时,不将错误信息显示出来(到浏览器上)                          
display_startup_errors = Off                               //不将PHP启动时发生的错误信息显示出来(到浏览器上)                    
error_reporting = E_ALL &~E_DEPRECATED & ~E_STRICT   //这一项设定PHP会告知的错误或信息类型                       
html_errors = On                                         //当PHP显示或记录错误信息时,将该信息格式化成HTML格式                
log_errors = On                                           //这让PHP可以将错误信息日志记录到日志文件里                                 
ignore_repeated_errors = On                              //忽略重复的错误信息                                                               
ignore_repeated_source = On                             //当忽略重复的错误信息时忽略信息源                                          
post_max_size = 25M                                      //PHP所允许的POST数据的最大值。可按照需要进行调整                    
file_uploads = On                                          //允许文件上传,默认为On                                                             
upload_max_filesize = 20M                                 //上传文件所允许的最大值。可按照需要进行调整                            
memory_limit = 128M                                     //PHP可用的最大内存。可按照需要进行调整                                      
 

然后,重启httpd服务:

[root@localhost~]# systemctl restart httpd

为了测试Apache能不能正常调用PHP,在/var/www/html目录下新建一个phpinfo.php文档,内容如下所示:

vi /var/www/html/phpinfo.php
<?php phpinfo(); ?>

其中的<?php ?>是PHP程序的语法,phpinfo ();则是PHP程序提供的一个函式库,该函式库可以显示出你这个web服务器的相关信息。然后,使用浏览器来访问服务器的这个文件,看看页面能不能正常打开。

安装sqlite

yum install sqlite*
yum install php-sqlite*

会自动匹配安装包。
重启一次apache的httpd服务:

systemctl restart httpd.service

完毕。

参考自简书的大作:http://www.jianshu.com/p/a2798b1ac8a4
仅供自己备忘。

基于ubuntu 16 64bit
winscp+putty登陆ecs后,

1. 安装 Docker 与 Compose
1.1. 配置 Docker 镜像源
1.2. 部署 NextCloud(阿里云ECS单核单1G内存1MB带宽耗时约
2. 配置 NextCloud
2.1. 客户端安装与使用

正面开始:
说明:Nextcloud 和 Owncloud 的界面非常相似,Owncloud并没有停止开发,而是由原来的德国团队接手了。

  1. 安装 Docker 与 Compose

安装 Docker

curl -sSL https://get.docker.com/ | sh

安装 Compose

curl -L https://github.com/docker/compose/releases/download/1.10.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

以上搭好了基础软件环境。

1.1. 配置 Docker 镜像源
接下来我们会拉取几个镜像,默认的镜像仓库在海外,速度不理想,所以我们使用国内的镜像源,这里以中科大的为例:
首先编辑文件 /etc/docker/daemon.json,在该配置文件中加入下面内容(没有该文件的话建一个):

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

保存之后最好重启一下 Docker 服务,这样就可以使用国内镜像源拉取镜像了:

service docker restart

1.2. 部署 NextCloud

首先为Nextcloud建立一个独立的容器网络:

docker network create nextcloud

接下来在当前目前下新建一个文件夹cloud,然后在cloud文件夹里面新建一个文件Caddyfile,在文件Caddyfile写入以下内容(您自己的域名example.com和IP233.233.233.233和端口2333自己改一下哦):

example.com {
  proxy / 233.233.233.233:2333 {
      proxy_header Host {host}
      proxy_header X-Real-IP {remote}
      proxy_header X-Forwarded-Proto {scheme}
  }
  log /var/log/caddy.log
  gzip
}

接下来再在当前目录cloud下新建一个文件,名为docker-compose.yml,文件的内容如下,注意修改以下内容中的MYSQL_ROOT_PASSWORD行的密码为您自己的MYSQL数据库密码:

version: '2'
services:
  db:
    container_name: cloud_db
    image: mysql
    volumes:
      - "./data/cloud/mysql:/var/lib/mysql"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 这里填写你的密码
      MYSQL_DATABASE: nextcloud
  app:
    container_name: cloud_app
    depends_on:
      - db
    image: nextcloud
    volumes:
      - ./data/cloud/config:/var/www/html/config
      - ./data/cloud/data:/var/www/html/data
      - ./data/cloud/apps:/var/www/html/apps
    links:
      - db
    ports:
      - "2333:80"
    restart: always
  cron:
    container_name: cloud_cron
    image: nextcloud
    links:
      - db
    volumes_from:
      - app
    user: www-data
    entrypoint: |
      bash -c 'bash -s <<EOF
      trap "break;exit" SIGHUP SIGINT SIGTERM
      while /bin/true; do
        /usr/local/bin/php /var/www/html/cron.php
        sleep 900
      done
      EOF'
    restart: always
  web:
    container_name: cloud_web
    image: abiosoft/caddy
    volumes:
      - ./Caddyfile:/etc/Caddyfile
      - ~/.caddy:/root/.caddy
    ports:
      - 80:80
      - 443:443
    restart: always
networks:
  default:
    external:
      name: nextcloud

保存后在当前目录cloud下输入以下命令:

docker-compose up -d

然后就是漫长的等待(视ECS配置高低和带宽大小而定等待时长)~~~
最后打开上边配置文件中的域名example.com(您自己的域名自己改一下哦)即可看到NextCloud安装界面了,跟其他web系统没什么两样的。数据库的选择您随意就好。mysql或sqlite都随意了。

你的用户名就是 root,数据库地址是 db,不是 localhost。

  1. 配置 NextCloud

安装完成还要做两件事,当然不是必须的,但是为了安全起见,最好再折腾一下。

2.1. 配置两步验证

两步验证可以防暴力入侵什么的,建议使用。首先在后台启用两步验证,然后手机安装下面的应用:
https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2
登录时需要手机上的离线验证码验证,安全有了多一层保障。

2.2. 客户端安装与使用

首先客户端几乎是全平台的,地址在下面:
https://nextcloud.com/install/#install-clients
因为开启了二步验证,在客户端直接使用帐号密码肯定无法登录了,所以需要在后台设置应用密码,地址格式:
http://你的地址/index.php/settings/personal#apppasswords
在设置中设置应用一次性密码,使用随机密码登录客户端即可。

作者:左蓝
链接:http://www.jianshu.com/p/a2798b1ac8a4
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。