การติดตั้ง Pagekit CMS บน CentOS 7
ใช้ระบบที่แตกต่างกันอย่างไร Pagekit เป็น CMS โอเพนซอร์สที่เขียนด้วย PHP ซอร์สโค้ดของ Pagekit นั้นโฮสต์บน GitHub คำแนะนำนี้จะแสดงให้คุณเห็นว่า
วิธีการดั้งเดิมในการวิเคราะห์ข้อมูลเป็นไปไม่ได้ที่จะใช้เมื่อชุดข้อมูลมีขนาดที่แน่นอน ทางเลือกที่ทันสมัยในการวิเคราะห์ชุดข้อมูลขนาดใหญ่คือการใช้วิธีการเรียนรู้ของเครื่อง การเรียนร���้ของเครื่องสามารถให้ผลลัพธ์ที่แม่นยำเมื่อใช้อัลกอริทึมที่รวดเร็วและมีประสิทธิภาพ
Apache PredictionIO เป็นเซิร์ฟเวอร์การเรียนรู้แบบโอเพ่นซอร์สที่ใช้ในการสร้างเอ็นจิ้นการทำนายสำหรับงานการเรียนรู้ของเครื่อง มันลดเวลาของแอปพลิเคชันการเรียนรู้ของเครื่องจักรจากห้องปฏิบัติการไปยังการผลิตโดยใช้เทมเพลตของเครื่องยนต์ที่ปรับแต่งได้ซึ่งสามารถสร้างและปรับใช้ได้อย่างรวดเร็ว มันมีการเก็บรวบรวมข้อมูลและการให้บริการส่วนประกอบและเทคโนโลยีพื้นฐานบทคัดย่อเพื่อเปิดเผย API ที่ช่วยให้นักพัฒนาสามารถมุ่งเน้นไปที่องค์ประกอบการแปลง เมื่อเอ็นจิ้นเซิร์ฟเวอร์ของ PredictionIO ถูกปรับใช้เป็นเว็บเซอร์วิสก็สามารถตอบสนองต่อการสืบค้นแบบไดนามิกในแบบเรียลไทม์
Apache PredictionIO ประกอบด้วยส่วนประกอบต่าง ๆ
ในบทช่วยสอนนี้เราจะใช้192.0.2.1
เป็นที่อยู่ IP สาธารณะของเซิร์ฟเวอร์ แทนที่การเกิดขึ้นทั้งหมด192.0.2.1
ด้วยที่อยู่ IP สาธารณะ Vultr ของคุณ
ปรับปรุงระบบฐานของคุณใช้คู่มือวิธีการปรับปรุง CentOS 7 เมื่อระบบของคุณอัปเดตแล้วให้ดำเนินการติดตั้ง Java
องค์ประกอบหลายอย่างของ PredictionIO ต้องการ JDK หรือ Java Development Kit เวอร์ชัน 8 เพื่อใช้งาน รองรับทั้ง OpenJDK และ Oracle Java ในบทช่วยสอนนี้เราจะติดตั้ง OpenJDK เวอร์ชั่น 8
สามารถติดตั้ง OpenJDK ได้อย่างง่ายดายเนื่องจากแพ็คเกจนี้มีอยู่ในที่เก็บ YUM เริ่มต้น
sudo yum -y install java-1.8.0-openjdk-devel
ตรวจสอบเวอร์ชันของ Java เพื่อให้แน่ใจว่าได้ติดตั้งอย่างถูกต้อง
java -version
คุณจะได้ผลลัพธ์ที่คล้ายกัน
[user@vultr ~]$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)
ก่อนที่เราจะสามารถดำเนินการต่อไปเราจะต้องตั้งค่าJAVA_HOME
และJRE_HOME
ตัวแปรสภาพแวดล้อม ค้นหาพา ธ สัมบูรณ์ของการเรียกใช้ JAVA ในระบบของคุณ
readlink -f $(which java)
คุณจะเห็นผลลัพธ์ที่คล้ายกัน
[user@vultr ~]$ readlink -f $(which java)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre/bin/java
ตอนนี้ตั้งค่าJAVA_HOME
และJRE_HOME
ตัวแปรสภาพแวดล้อมตามเส้นทางของไดเรกทอรี Java
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64" >> ~/.bash_profile
echo "export JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre" >> ~/.bash_profile
ดำเนินการbash_profile
ไฟล์
source ~/.bash_profile
ตอนนี้คุณสามารถเรียกใช้echo $JAVA_HOME
คำสั่งเพื่อตรวจสอบว่ามีการตั้งค่าตัวแปรสภาพแวดล้อม
[user@vultr ~]$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64
Apache จัดเตรียมไฟล์ต้นฉบับ PredictionIO ซึ่งสามารถดาวน์โหลดและรวบรวมไว้ในเครื่องได้ สร้างไดเรกทอรีชั่วคราวใหม่เพื่อดาวน์โหลดและรวบรวมไฟล์ต้นฉบับ
mkdir /tmp/pio_sourcefiles && cd /tmp/pio_sourcefiles
ดาวน์โหลด PredictionIO เก็บแฟ้มแหล่งที่มาใช้ใด ๆเว็บไซต์ Apache กระจก
wget http://apache.mirror.vexxhost.com/incubator/predictionio/0.12.0-incubating/apache-predictionio-0.12.0-incubating.tar.gz
แตกไฟล์เก็บถาวรและรวบรวมแหล่งที่มาเพื่อสร้างการกระจายของ PredictionIO
tar xf apache-predictionio-0.12.0-incubating.tar.gz
./make-distribution.sh
การกระจายดังกล่าวข้างต้นจะถูกสร้างขึ้นกับรุ่นเริ่มต้นของการพึ่งพาซึ่งเป็นScala 2.11.8
, Spark 2.1.1
, และHadoop 2.7.3
ElasticSearch 5.5.2
รอการสร้างให้เสร็จสิ้นจะใช้เวลาประมาณสิบนาทีจึงจะเสร็จสมบูรณ์ขึ้นอยู่กับประสิทธิภาพของระบบของคุณ
หมายเหตุ : คุณมีอิสระที่จะใช้การอ้างอิงรุ่นล่าสุดที่สนับสนุน แต่คุณอาจเห็นคำเตือนบางอย่างในระหว่างการสร้างเนื่องจากบางฟังก์ชั่นอาจเลิกใช้แล้ว เรียกใช้./make-distribution.sh -Dscala.version=2.11.11 -Dspark.version=2.1.2 -Dhadoop.version=2.7.4 -Delasticsearch.version=5.5.3
แทนที่หมายเลขเวอร์ชั่นตามที่คุณเลือก
เมื่อการสร้างเสร็จสมบูรณ์คุณจะเห็นข้อความต่อไปนี้ในตอนท้าย
...
PredictionIO-0.12.0-incubating/python/pypio/__init__.py
PredictionIO-0.12.0-incubating/python/pypio/utils.py
PredictionIO-0.12.0-incubating/python/pypio/shell.py
PredictionIO binary distribution created at PredictionIO-0.12.0-incubating.tar.gz
ไฟล์ไบนารี PredictionIO จะถูกบันทึกไว้ในPredictionIO-0.12.0-incubating.tar.gz
ไฟล์เก็บถาวร แตกไฟล์เก็บถาวรใน/opt
ไดเร็กทอรีและจัดเตรียมความเป็นเจ้าของให้กับผู้ใช้ปัจจุบัน
sudo tar xf PredictionIO-0.12.0-incubating.tar.gz -C /opt/
sudo chown -R $USER:$USER /opt/PredictionIO-0.12.0-incubating
ตั้งค่าPIO_HOME
ตัวแปรสภาพแวดล้อม
echo "export PIO_HOME=/opt/PredictionIO-0.12.0-incubating" >> ~/.bash_profile
source ~/.bash_profile
สร้างไดเรกทอรีใหม่ในการติดตั้งการอ้างอิง PredictionIO เช่นHBase
, และSpark
Elasticsearch
mkdir /opt/PredictionIO-0.12.0-incubating/vendors
ดาวน์โหลด Scala เวอร์ชั่น 2.11.8 แล้วแตกไปไว้ในvendors
สารบบ
wget https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
tar xf scala-2.11.8.tgz -C /opt/PredictionIO-0.12.0-incubating/vendors
ดาวน์โหลด Apache Hadoop เวอร์ชั่น 2.7.3 และแยกลงในvendors
ไดเรกทอรี
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
tar xf hadoop-2.7.3.tar.gz -C /opt/PredictionIO-0.12.0-incubating/vendors
Apache Spark เป็นเอ็นจิ้นการประมวลผลเริ่มต้นสำหรับ PredictionIO ดาวน์โหลด Spark เวอร์ชั่น 2.1.1 และแยกลงในvendors
สารบบ
wget https://archive.apache.org/dist/spark/spark-2.1.1/spark-2.1.1-bin-hadoop2.7.tgz
tar xf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/PredictionIO-0.12.0-incubating/vendors
ดาวน์โหลด Elasticsearch เวอร์ชั่น 5.5.2 และแยกลงในvendors
สารบบ
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.tar.gz
tar xf elasticsearch-5.5.2.tar.gz -C /opt/PredictionIO-0.12.0-incubating/vendors
ในที่สุดดาวน์โหลด HBase รุ่น 1.2.6 และแยกลงในvendors
ไดเรกทอรี
wget https://archive.apache.org/dist/hbase/stable/hbase-1.2.6-bin.tar.gz
tar xf hbase-1.2.6-bin.tar.gz -C /opt/PredictionIO-0.12.0-incubating/vendors
เปิดhbase-site.xml
ไฟล์กำหนดค่าเพื่อกำหนดค่า HBase ให้ทำงานในสภาพแวดล้อมแบบสแตนด์อโลน
nano /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/conf/hbase-site.xml
ค้นหาบล็อกการกำหนดค่าที่ว่างเปล่าและแทนที่ด้วยการกำหนดค่าต่อไปนี้
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/user/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/data</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/user/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/zookeeper</value>
</property>
</configuration>
HBase จะสร้างไดเรกทอรีข้อมูลโดยอัตโนมัติ แก้ไขไฟล์สภาพแวดล้อม HBase เพื่อกำหนดJAVA_HOME
เส้นทาง
nano /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/conf/hbase-env.sh
Uncomment หมายเลขบรรทัด 27 และตั้งค่าJAVA_HOME
เป็นพา ธ ของjre
การติดตั้ง Java ของคุณ คุณสามารถค้นหาพา ธ ไปยัง JAVA ที่ปฏิบัติการได้โดยใช้readlink -f $(which java)
คำสั่ง
# The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/jre
และใส่เครื่องหมายคอมเมนต์หมายเลข 46 และ 47 เนื่องจากไม่จำเป็นสำหรับ JAVA 8
# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
# export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
# export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
การกำหนดค่าเริ่มต้นในไฟล์สภาพแวดล้อม PredictionIO pio-env.sh
จะถือว่าเราใช้ PostgreSQL หรือ MySQL เนื่องจากเราใช้ HBase และ Elasticsearch เราจะต้องแก้ไขการกำหนดค่าเกือบทั้งหมดในไฟล์ เป็นการดีที่สุดที่จะสำรองข้อมูลของไฟล์ที่มีอยู่และสร้างไฟล์สภาพแวดล้อม PredictionIO ใหม่
mv /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh.bak
ตอนนี้สร้างไฟล์ใหม่สำหรับการกำหนดค่าสภาพแวดล้อม PredictionIO
nano /opt/PredictionIO-0.12.0-incubating/conf/pio-env.sh
เติมไฟล์ด้วยการกำหนดค่าต่อไปนี้
# PredictionIO Main Configuration
#
# This section controls core behavior of PredictionIO. It is very likely that
# you need to change these to fit your site.
# SPARK_HOME: Apache Spark is a hard dependency and must be configured.
SPARK_HOME=$PIO_HOME/vendors/spark-2.1.1-bin-hadoop2.7
# POSTGRES_JDBC_DRIVER=$PIO_HOME/lib/postgresql-42.0.0.jar
# MYSQL_JDBC_DRIVER=$PIO_HOME/lib/mysql-connector-java-5.1.41.jar
# ES_CONF_DIR: You must configure this if you have advanced configuration for
# your Elasticsearch setup.
ES_CONF_DIR=$PIO_HOME/vendors/elasticsearch-5.5.2/config
# HADOOP_CONF_DIR: You must configure this if you intend to run PredictionIO
# with Hadoop 2.
HADOOP_CONF_DIR=$PIO_HOME/vendors/spark-2.1.1-bin-hadoop2.7/conf
# HBASE_CONF_DIR: You must configure this if you intend to run PredictionIO
# with HBase on a remote cluster.
HBASE_CONF_DIR=$PIO_HOME/vendors/hbase-1.2.6/conf
# Filesystem paths where PredictionIO uses as block storage.
PIO_FS_BASEDIR=$HOME/.pio_store
PIO_FS_ENGINESDIR=$PIO_FS_BASEDIR/engines
PIO_FS_TMPDIR=$PIO_FS_BASEDIR/tmp
# PredictionIO Storage Configuration
#
# This section controls programs that make use of PredictionIO's built-in
# storage facilities. Default values are shown below.
#
# For more information on storage configuration please refer to
# http://predictionio.incubator.apache.org/system/anotherdatastore/
# Storage Repositories
# Default is to use PostgreSQL
PIO_STORAGE_REPOSITORIES_METADATA_NAME=pio_meta
PIO_STORAGE_REPOSITORIES_METADATA_SOURCE=ELASTICSEARCH
PIO_STORAGE_REPOSITORIES_EVENTDATA_NAME=pio_event
PIO_STORAGE_REPOSITORIES_EVENTDATA_SOURCE=HBASE
PIO_STORAGE_REPOSITORIES_MODELDATA_NAME=pio_model
PIO_STORAGE_REPOSITORIES_MODELDATA_SOURCE=LOCALFS
# Storage Data Sources
# PostgreSQL Default Settings
# Please change "pio" to your database name in PIO_STORAGE_SOURCES_PGSQL_URL
# Please change PIO_STORAGE_SOURCES_PGSQL_USERNAME and
# PIO_STORAGE_SOURCES_PGSQL_PASSWORD accordingly
# PIO_STORAGE_SOURCES_PGSQL_TYPE=jdbc
# PIO_STORAGE_SOURCES_PGSQL_URL=jdbc:postgresql://localhost/pio
# PIO_STORAGE_SOURCES_PGSQL_USERNAME=pio
# PIO_STORAGE_SOURCES_PGSQL_PASSWORD=pio
# MySQL Example
# PIO_STORAGE_SOURCES_MYSQL_TYPE=jdbc
# PIO_STORAGE_SOURCES_MYSQL_URL=jdbc:mysql://localhost/pio
# PIO_STORAGE_SOURCES_MYSQL_USERNAME=pio
# PIO_STORAGE_SOURCES_MYSQL_PASSWORD=pio
# Elasticsearch Example
PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch
PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost
PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9200
PIO_STORAGE_SOURCES_ELASTICSEARCH_SCHEMES=http
PIO_STORAGE_SOURCES_ELASTICSEARCH_CLUSTERNAME=pio
PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=$PIO_HOME/vendors/elasticsearch-5.5.2
# Optional basic HTTP auth
# PIO_STORAGE_SOURCES_ELASTICSEARCH_USERNAME=my-name
# PIO_STORAGE_SOURCES_ELASTICSEARCH_PASSWORD=my-secret
# Elasticsearch 1.x Example
# PIO_STORAGE_SOURCES_ELASTICSEARCH_TYPE=elasticsearch
# PIO_STORAGE_SOURCES_ELASTICSEARCH_CLUSTERNAME=<elasticsearch_cluster_name>
# PIO_STORAGE_SOURCES_ELASTICSEARCH_HOSTS=localhost
# PIO_STORAGE_SOURCES_ELASTICSEARCH_PORTS=9300
# PIO_STORAGE_SOURCES_ELASTICSEARCH_HOME=$PIO_HOME/vendors/elasticsearch-1.7.6
# Local File System Example
PIO_STORAGE_SOURCES_LOCALFS_TYPE=localfs
PIO_STORAGE_SOURCES_LOCALFS_PATH=$PIO_FS_BASEDIR/models
# HBase Example
PIO_STORAGE_SOURCES_HBASE_TYPE=hbase
PIO_STORAGE_SOURCES_HBASE_HOME=$PIO_HOME/vendors/hbase-1.2.6
# AWS S3 Example
# PIO_STORAGE_SOURCES_S3_TYPE=s3
# PIO_STORAGE_SOURCES_S3_BUCKET_NAME=pio_bucket
# PIO_STORAGE_SOURCES_S3_BASE_PATH=pio_model
บันทึกไฟล์และออกจากตัวแก้ไข
เปิดไฟล์คอนฟิกูเรชัน Elasticsearch
nano /opt/PredictionIO-0.12.0-incubating/vendors/elasticsearch-5.5.2/config/elasticsearch.yml
ยกเลิกหมายเหตุบรรทัดและตั้งชื่อคลัสเตอร์เป็นชื่อเดียวกับที่ระบุในไฟล์สภาพแวดล้อม PredictionIO ชื่อคลัสเตอร์ถูกตั้งค่าเป็นpio
ในการกำหนดค่าด้านบน
# Use a descriptive name for your cluster:
#
cluster.name: pio
ตอนนี้เพิ่ม$PIO_HOME/bin
ไดเรกทอรีลงในตัวแปร PATH เพื่อให้สามารถเรียกใช้งาน PredictionIO ได้โดยตรง
echo "export PATH=$PATH:$PIO_HOME/bin" >> ~/.bash_profile
source ~/.bash_profile
ณ จุดนี้ PredictionIO ได้รับการติดตั้งบนเซิร์ฟเวอร์ของคุณเรียบร้อยแล้ว
คุณสามารถเริ่มบริการทั้งหมดใน PredictionIO เช่น Elasticsearch, HBase และเซิร์ฟเวอร์เหตุการณ์โดยใช้คำสั่งเดียว
pio-start-all
คุณจะเห็นผลลัพธ์ต่อไปนี้
[user@vultr ~]$ pio-start-all
Starting Elasticsearch...
Starting HBase...
starting master, logging to /opt/PredictionIO-0.12.0-incubating/vendors/hbase-1.2.6/bin/../logs/hbase-user-master-vultr.guest.out
Waiting 10 seconds for Storage Repositories to fully initialize...
Starting PredictionIO Event Server...
ใช้คำสั่งต่อไปนี้เพื่อตรวจสอบสถานะของเซิร์ฟเวอร์ PredictionIO
pio status
คุณจะเห็นผลลัพธ์ต่อไปนี้
[user@vultr ~]$ pio status
[INFO] [Management$] Inspecting PredictionIO...
[INFO] [Management$] PredictionIO 0.12.0-incubating is installed at /opt/PredictionIO-0.12.0-incubating
[INFO] [Management$] Inspecting Apache Spark...
[INFO] [Management$] Apache Spark is installed at /opt/PredictionIO-0.12.0-incubating/vendors/spark-2.1.1-bin-hadoop2.7
[INFO] [Management$] Apache Spark 2.1.1 detected (meets minimum requirement of 1.3.0)
[INFO] [Management$] Inspecting storage backend connections...
[INFO] [Storage$] Verifying Meta Data Backend (Source: ELASTICSEARCH)...
[INFO] [Storage$] Verifying Model Data Backend (Source: LOCALFS)...
[INFO] [Storage$] Verifying Event Data Backend (Source: HBASE)...
[INFO] [Storage$] Test writing to Event Store (App Id 0)...
[INFO] [HBLEvents] The namespace pio_event doesn't exist yet. Creating now...
[INFO] [HBLEvents] The table pio_event:events_0 doesn't exist yet. Creating now...
[INFO] [HBLEvents] Removing table pio_event:events_0...
[INFO] [Management$] Your system is all ready to go.
ดังที่เราเห็นในข้อความข้างต้นระบบของเราพร้อมที่จะใช้สำหรับการนำเท็มเพลตเอนจินและการทำนายข้อมูล
เทมเพลตเอนจิ้นหลายตัวพร้อมใช้งานนั้นมีอยู่ในPredictionIO Template Galleryซึ่งสามารถติดตั้งได้ง่ายบนเซิร์ฟเวอร์ PredictionIO คุณมีอิสระในการเรียกดูรายการแม่แบบของเครื่องยนต์เพื่อค้นหาสิ่งที่ใกล้เคียงกับความต้องการของคุณหรือคุณสามารถเขียนโปรแกรมของคุณเอง
ในบทช่วยสอนนี้เราจะใช้E-Commerce Recommendation
เทมเพลตของเครื่องยนต์เพื่อสาธิตการทำงานของเซิร์ฟเวอร์ PredictionIO โดยใช้ข้อมูลตัวอย่าง เทมเพลตเอนจินนี้ให้คำแนะนำส่วนตัวแก่ผู้ใช้ในเว็บไซต์อีคอมเมิร์ซ โดยค่าเริ่มต้นมันมีคุณสมบัติเช่นการแยกออกจากรายการสต็อกหรือให้คำแนะนำกับผู้ใช้ที่ลงทะเบียนหลังจากการฝึกอบรมแบบจำลอง นอกจากนี้ตามค่าเริ่มต้นเทมเพลตเครื่องยนต์จะใช้มุมมองและซื้อกิจกรรมของผู้ใช้รายการที่มีหมวดหมู่และคุณสมบัติและรายการของรายการที่ไม่พร้อมใช้งาน เมื่อเอ็นจิ้นได้รับการฝึกอบรมและปรับใช้แล้วคุณสามารถส่งเคียวรีด้วย ID ผู้ใช้และจำนวนรายการที่จะแนะนำ ผลลัพธ์ที่สร้างขึ้นจะเป็นรายการอันดับของรหัสรายการที่แนะนำ
ติดตั้ง Git เนื่องจากมันจะถูกใช้เพื่อโคลนที่เก็บ
cd ~
sudo yum -y install git
โคลนเท็มเพลตเอ็นจิน E-Commerce ผู้แนะนำบนระบบของคุณ
git clone https://github.com/apache/incubator-predictionio-template-ecom-recommender.git MyEComRecomm
สร้างแอปพลิเคชันใหม่สำหรับเอ็นจินเทมเพลตการแนะนำอีคอมเมิร์ซ แต่ละแอปพลิเคชันใน PredictionIO ใช้เพื่อจัดเก็บข้อมูลสำหรับเว็บไซต์แยกต่างหาก หากคุณมีหลายเว็บไซต์คุณสามารถสร้างหลายแอพเพื่อเก็บข้อมูลของแต่ละเว็บไซต์ไว้ในแอปพลิเคชันอื่น คุณมีอิสระที่จะเลือกชื่อใด ๆ สำหรับใบสมัครของคุณ
cd MyEComRecomm/
pio app new myecom
คุณจะเห็นผลลัพธ์ต่อไปนี้
[user@vultr MyEComRecomm]$ pio app new myecom
[INFO] [HBLEvents] The table pio_event:events_1 doesn't exist yet. Creating now...
[INFO] [App$] Initialized Event Store for this app ID: 1.
[INFO] [Pio$] Created a new app:
[INFO] [Pio$] Name: myecom
[INFO] [Pio$] ID: 1
[INFO] [Pio$] Access Key: a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t
เอาต์พุตด้านบนยังมีรหัสการเข้าถึงซึ่งจะใช้ในการตรวจสอบสิทธิ์เมื่อส่งข้อมูลอินพุตไปยังเซิร์ฟเวอร์เหตุการณ์
คุณสามารถค้นหารหัสการเข้าถึงพร้อมกับรายการแอปพลิเคชันที่มีอยู่ได้ด้วยการเรียกใช้
pio app list
คุณจะเห็นผลลัพธ์ต่อไปนี้ที่มีรายการแอปพลิเคชันและรหัสการเข้าถึง
[user@vultr MyEComRecomm]$ pio app list
[INFO] [Pio$] Name | ID | Access Key | Allowed Event(s)
[INFO] [Pio$] myecom | 1 | a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t | (all)
[INFO] [Pio$] Finished listing 1 app(s).
ตอนนี้เราได้สร้างแอปพลิเคชันใหม่แล้วเราจะเพิ่มข้อมูลลงไป ในสภาพแวดล้อมการใช้งานจริงคุณต้องการส่งข้อมูลไปยังเซิร์ฟเวอร์เหตุการณ์โดยอัตโนมัติโดยรวม API เซิร์ฟเวอร์เหตุการณ์ในแอปพลิเคชัน เพื่อเรียนรู้วิธีการทำงานของ PredictionIO เราจะนำเข้าข้อมูลตัวอย่างบางส่วนเข้ามา เทมเพลตเอ็นจิ้นมีสคริปต์ Python ซึ่งสามารถนำเข้าข้อมูลตัวอย่างไปยังเซิร์ฟเวอร์เหตุการณ์ได้อย่างง่ายดาย
ติดตั้ง Python pip
sudo yum -y install python-pip
sudo pip install --upgrade pip
ติดตั้ง PredictionIO Python SDK โดยใช้ pip
sudo pip install predictionio
รันสคริปต์ Python เพื่อเพิ่มข้อมูลตัวอย่างไปยังเซิร์ฟเวอร์เหตุการณ์
python data/import_eventserver.py --access_key a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t
ตรวจสอบให้แน่ใจว่าได้เปลี่ยนรหัสการเข้าถึงด้วยรหัสการเข้าถึงจริงของคุณ คุณจะเห็นผลลัพธ์ที่คล้ายกัน
[user@vultr MyEComRecomm]$ python data/import_eventserver.py --access_key a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t
Namespace(access_key='a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t', url='http://localhost:7070')
{u'status': u'alive'}
Importing data...
('Set user', 'u1')
('Set user', 'u2')
...
('User', 'u10', 'buys item', 'i30')
('User', 'u10', 'views item', 'i40')
('User', 'u10', 'buys item', 'i40')
204 events are imported.
สคริปต์ด้านบนนำเข้า 10 ผู้ใช้ 50 รายการใน 6 หมวดหมู่และมีเหตุการณ์สุ่มของการซื้อและการดู ในการตรวจสอบว่ามีการนำเข้าเหตุการณ์หรือไม่คุณสามารถเรียกใช้แบบสอบถามต่อไปนี้
curl -i -X GET "http://localhost:7070/events.json?accessKey=a_DnDr4uyvjsKRldPoJAFMuPvb-QBz-BhUFyGehXoTKbm89r00Gx4ygnqspTJx4t"
ผลลัพธ์จะแสดงรายการเหตุการณ์ที่นำเข้าทั้งหมดในรูปแบบ JSON
ตอนนี้เปิดengine.json
ไฟล์ลงในโปรแกรมแก้ไข ไฟล์นี้มีการกำหนดค่าของเครื่องยนต์
nano engine.json
ค้นหาทั้งการเกิดappName
และแทนที่ค่าด้วยชื่อจริงของแอพที่คุณสร้างไว้ก่อนหน้านี้
{
"id": "default",
"description": "Default settings",
"engineFactory": "org.example.ecommercerecommendation.ECommerceRecommendationEngine",
"datasource": {
"params" : {
"appName": "myecom"
}
},
"algorithms": [
{
"name": "ecomm",
"params": {
"appName": "myecom",
"unseenOnly": true,
"seenEvents": ["buy", "view"],
"similarEvents": ["view"],
"rank": 10,
"numIterations" : 20,
"lambda": 0.01,
"seed": 3
}
}
]
}
สร้างแอปพลิเคชัน
pio build --verbose
หากคุณไม่ต้องการเห็นข้อความบันทึกให้ลบ--verbose
ตัวเลือกออก การสร้างเทมเพลตของเครื่องยนต์เป็นครั้งแรกจะใช้เวลาไม่กี่นาที คุณจะเห็นผลลัพธ์ที่คล้ายกันเมื่อการสร้างเสร็จสมบูรณ์
[user@vultr MyEComRecomm]$ pio build --verbose
[INFO] [Engine$] Using command '/opt/PredictionIO-0.12.0-incubating/sbt/sbt' at /home/user/MyEComRecomm to build.
...
[INFO] [Engine$] Build finished successfully.
[INFO] [Pio$] Your engine is ready for training.
ฝึกฝนเครื่องยนต์ตอนนี้ ในระหว่างการฝึกอบรมเครื่องยนต์จะวิเคราะห์ชุดข้อมูลและฝึกฝนตัวเองตามขั้นตอนวิธีที่ให้ไว้
pio train
ก่อนที่เราจะปรับใช้แอปพลิเคชันเราจะต้องเปิดพอร์ต8000
เพื่อให้สถานะของแอปพลิเคชันสามารถดูได้บนเว็บ GUI นอกจากนี้เว็บไซต์และแอปพลิเคชันที่ใช้เซิร์ฟเวอร์เหตุการณ์จะส่งและรับข้อความค้นหาผ่านพอร์ตนี้
sudo firewall-cmd --zone=public --permanent --add-port=8000/tcp
sudo firewall-cmd --reload
ตอนนี้คุณสามารถปรับใช้เอนจิ้น PredictionIO
pio deploy
คำสั่งด้านบนจะปรับใช้เอ็นจิ้นและเว็บเซิร์ฟเวอร์ในตัวบนพอร์ต8000
เพื่อตอบคำถามจากเว็บไซต์และแอพพลิเคชั่นอีคอมเมิร์ซ คุณจะเห็นผลลัพธ์ต่อไปนี้เมื่อสิ้นสุดการปรับใช้โปรแกรมเรียบร้อยแล้ว
[INFO] [HttpListener] Bound to /0.0.0.0:8000
[INFO] [MasterActor] Engine is deployed and running. Engine API is live at http://0.0.0.0:8000.
คุณสามารถตรวจสอบสถานะของเครื่องยนต์โดยไปhttp://192.0.2.1:8000
ที่เบราว์เซอร์สมัยใหม่ ตรวจสอบให้แน่ใจว่าคุณแทนที่192.0.2.1
ด้วยที่อยู่ IP Vultr ที่แท้จริงของคุณ
นี่หมายความว่าเทมเพลตเอ็นจิ้นสำหรับคำแนะนำอีคอมเมิร์ซถูกปรับใช้และทำงานได้สำเร็จ คุณสามารถเคียวรีเทมเพลตเอ็นจิ้นเพื่อดึงคำแนะนำที่ห้าสำหรับผู้ใช้u5
โดยเรียกใช้คิวรีต่อไปนี้ในเทอร์มินัลเซสชันใหม่
curl -H "Content-Type: application/json" \
-d '{ "user": "u5", "num": 5 }' \
http://localhost:8000/queries.json
u5
คุณจะเห็นคำแนะนำที่สร้างขึ้นสำหรับผู้ใช้
[user@vultr ~]$ curl -H "Content-Type: application/json" \
> -d '{ "user": "u5", "num": 5 }' \
> http://localhost:8000/queries.json
{"itemScores":[{"item":"i25","score":0.9985169366745619},{"item":"i10","score":0.996613946803819},{"item":"i27","score":0.996613946803819},{"item":"i17","score":0.9962796867639341},{"item":"i8","score":0.9955868705972656}]}
ขอแสดงความยินดี Apache PredictionIO ได้รับการปรับใช้บนเซิร์ฟเวอร์ของคุณเรียบร้อยแล้ว ตอนนี้คุณสามารถใช้ API ของเซิร์ฟเวอร์เหตุการณ์เพื่อนำเข้าข้อมูลลงในเอ็นจินเพื่อคาดการณ์คำแนะนำสำหรับผู้ใช้ หากคุณต้องการคุณสามารถใช้เทมเพลตอื่นได้จากแกลเลอรี่เทมเพลต อย่าลืมตรวจสอบเทมเพลตเอนจิ้น Universal Referenderซึ่งสามารถใช้ได้ในเกือบทุกกรณีการใช้งานรวมถึงอีคอมเมิร์ซข่าวหรือวิดีโอ
ใช้ระบบที่แตกต่างกันอย่างไร Pagekit เป็น CMS โอเพนซอร์สที่เขียนด้วย PHP ซอร์สโค้ดของ Pagekit นั้นโฮสต์บน GitHub คำแนะนำนี้จะแสดงให้คุณเห็นว่า
TestLink เป็นระบบดำเนินการจัดการทดสอบบนเว็บโอเพ่นซอร์ส ช่วยให้ทีมงานประกันคุณภาพสามารถสร้างและจัดการกรณีทดสอบได้เช่นกัน
FTP ที่ปลอดภัยมากหรือเพียงแค่ vsFTPd เป็นซอฟต์แวร์น้ำหนักเบาที่มีความสามารถในการปรับแต่ง ในบทช่วยสอนนี้เราจะรักษาความปลอดภัยของข้อความ
CentOS ติดตามการพัฒนา Red Hat Enterprise Linux (RHEL) RHEL พยายามที่จะเป็นแพลตฟอร์มเซิร์ฟเวอร์ที่มั่นคงซึ่งหมายความว่าจะไม่รีบเร่งในการรวม
ในบางโอกาสผู้ดูแลระบบอาจต้องสร้างบัญชีผู้ใช้และ จำกัด การเข้าถึงเพื่อจัดการไฟล์ของตัวเองผ่าน sFTP เท่านั้น
ใช้ระบบที่แตกต่างกันอย่างไร Moodle เป็นแพลตฟอร์มการเรียนรู้โอเพนซอร์ซหรือระบบจัดการหลักสูตร (CMS) - ชุดซอฟต์แวร์โอเพ่นซอร์สฟรีที่ออกแบบมาเพื่อช่วย
ในบทความนี้ฉันจะอธิบายวิธีสร้าง LEMP สแต็คที่ได้รับการป้องกันโดย ModSecurity ModSecurity เป็นไฟร์วอลล์เว็บแอพพลิเคชันแบบโอเพนซอร์สที่มีประโยชน์
Introduction LAMP เป็นคำย่อที่ย่อมาจาก Linux, Apache, MySQL และ PHP ซอฟต์แวร์นี้เป็นโซลูชันโอเพ่นซอร์สที่ได้รับความนิยมสูงสุดสำหรับการติดตั้ง o
Icinga2 เป็นระบบการตรวจสอบที่มีประสิทธิภาพและเมื่อใช้ในโมเดลลูกค้าหลักจะสามารถแทนที่ความต้องการการตรวจสอบที่อิง NRPE ปรมาจารย์
ใช้ระบบที่แตกต่างกันอย่างไร Netdata เป็นดาวรุ่งพุ่งแรงในด้านการติดตามการวัดในระบบแบบเรียลไทม์ เมื่อเปรียบเทียบกับเครื่องมือชนิดเดียวกัน Netdata:
Buildbot เป็นโอเพ่นซอร์สเครื่องมือที่ใช้การรวมอย่างต่อเนื่องของ Python สำหรับการสร้างซอฟต์แวร์การทดสอบและการปรับใช้โดยอัตโนมัติ Buildbot ประกอบด้วยหนึ่งหรือหมอ
ยินดีต้อนรับสู่การกวดวิชา Vultr อื่น ที่นี่คุณจะได้เรียนรู้วิธีการติดตั้งและเรียกใช้เซิร์ฟเวอร์ SAMP คู่มือนี้เขียนขึ้นสำหรับ CentOS 6 ข้อกำหนดเบื้องต้นคุณจะต้อง
แอปพลิเคชั่น dotProject เป็นเครื่องมือการจัดการโครงการแบบโอเพ่นซอร์สบนเว็บ สำหรับตอนนี้มันวางจำหน่ายภายใต้ GPL ดังนั้นคุณสามารถปรับใช้และใช้งานได้บนบริการของคุณ
ใช้ระบบที่แตกต่างกันอย่างไร TaskWarrior เป็นเครื่องมือจัดการเวลาแบบโอเพ่นซอร์สที่เป็นการปรับปรุงแอพพลิเคชั่น Todo.txt และโคลนของมัน เนื่องมาจาก
ใช้ระบบที่แตกต่างกันอย่างไร Selfoss RSS Reader เป็นฟรีและเปิดตัวเองบนเว็บโฮสต์อเนกประสงค์, สตรีมสด, ตอบโต้กับผู้ใช้ได้, ฟีดข่าว (RSS / Atom) reade
ใช้ระบบที่แตกต่างกันอย่างไร Kanboard เป็นซอฟต์แวร์ซอฟต์แวร์การจัดการโครงการโอเพ่นซอร์สฟรีที่ออกแบบมาเพื่ออำนวยความสะดวกและมองเห็นภาพการทำงานเป็นทีม
บทช่วยสอนนี้จะกล่าวถึงกระบวนการติดตั้งเซิร์ฟเวอร์เกม Half Life 2 บนระบบ CentOS 6 ขั้นตอนที่ 1: การติดตั้งข้อกำหนดเบื้องต้นเพื่อตั้งค่า ou
GlusterFS เป็นระบบไฟล์ที่เชื่อมต่อกับเครือข่ายซึ่งช่วยให้คุณแบ่งปันไดรฟ์สองตัวในอุปกรณ์หลายตัวบนเครือข่ายได้อย่างมีประสิทธิภาพ ระบบไฟล์นี้คือ
ใช้ระบบที่แตกต่างกันอย่างไร ในขณะที่การโยกย้ายเว็บไซต์มักจะไม่มีปัญหาบางครั้งก็ยากที่จะโยกย้ายกล่องอีเมล นี่คือ CAS โดยเฉพาะอย่างยิ่ง
PrestaShop เป็นโซลูชันอีคอมเมิร์ซแบบโอเพ่นซอร์สที่ได้รับความนิยม คุณสามารถใช้มันเพื่อสร้างร้านค้าออนไลน์ของคุณเองได้ฟรี ในบทช่วยสอนนี้ฉันจะแสดงให้คุณเห็นว่า
ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน
การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane
ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+
อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ
เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม
13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data
คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true
ในขณะที่วิทยาศาสตร์มีวิวัฒนาการไปอย่างรวดเร็ว โดยรับช่วงต่อความพยายามของเราอย่างมาก ความเสี่ยงในการทำให้ตัวเองตกอยู่ในภาวะภาวะเอกฐานที่อธิบายไม่ได้ก็เพิ่มขึ้นเช่นกัน อ่านว่าภาวะเอกฐานอาจมีความหมายสำหรับเราอย่างไร
ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1
AI ในการดูแลสุขภาพได้ก้าวกระโดดอย่างมากจากทศวรรษที่ผ่านมา ดังนั้นอนาคตของ AI ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน