{"id":1687,"date":"2023-02-20T22:09:51","date_gmt":"2023-02-20T14:09:51","guid":{"rendered":"https:\/\/www.siediyer.cn\/?p=1687"},"modified":"2023-02-20T22:09:51","modified_gmt":"2023-02-20T14:09:51","slug":"rap2%e7%9a%84%e5%ae%89%e8%a3%85%e5%92%8c%e9%83%a8%e7%bd%b2","status":"publish","type":"post","link":"https:\/\/www.siediyer.cn\/?p=1687","title":{"rendered":"RAP2\u7684\u5b89\u88c5\u548c\u90e8\u7f72"},"content":{"rendered":"<h2 id=\"h2-u76EEu5F55\">\u76ee\u5f55<\/h2>\n<p>1 Node.js \u5b89\u88c5\uff1a<br \/>\n2 Mysql 5.7+ \u5b89\u88c5<br \/>\n3 Redis \u5b89\u88c5\u89c1\u6587\u7ae0<br \/>\n4 \u540e\u7aef rap2-delos \u5b89\u88c5<br \/>\n5 \u524d\u7aef rap2-dolores \u5b89\u88c5<\/p>\n<p>RAP2\u662f\u5728RAP1\u57fa\u7840\u4e0a\u91cd\u505a\u7684\u65b0\u9879\u76ee\uff0c\u5b83\u5305\u542b\u4e24\u4e2a\u7ec4\u4ef6(\u5bf9\u5e94\u4e24\u4e2aGithub Repository)\u3002<\/p>\n<p>rap2-delos: \u540e\u7aef\u6570\u636eAPI\u670d\u52a1\u5668\uff0c\u57fa\u4e8eKoa + MySQLlink<br \/>\nrap2-dolores: \u524d\u7aef\u9759\u6001\u8d44\u6e90\uff0c\u57fa\u4e8eReact link<br \/>\n\u4ec0\u4e48\u662fRAP\uff1f<\/p>\n<p>rap\u662f\u4e00\u6b3eAPI \u6587\u6863\u7ba1\u7406\u5de5\u5177\uff0c\u5728 RAP \u4e2d\uff0c\u53ef\u4ee5\u5b9a\u4e49\u63a5\u53e3\u7684 URL\u3001\u8bf7\u6c42 &amp; \u54cd\u5e94\u7ec6\u8282\u683c\u5f0f\u7b49\u7b49\u3002\u540c\u65f6 RAP \u8fd8\u63d0\u4f9b MOCK \u670d\u52a1\u3001\u6d4b\u8bd5\u670d\u52a1\u7b49\u81ea\u52a8\u5316\u5de5\u7b49\u5de5\u5177\uff0c\u5e2e\u52a9\u5f00\u53d1\u56e2\u961f\u9ad8\u6548\u5f00\u53d1\u3002<\/p>\n<p>git \u5730\u5740\uff1a<\/p>\n<p>https:\/\/github.com\/thx\/rap2-dolores<\/p>\n<p>https:\/\/github.com\/thx\/rap2-delos<\/p>\n<p>\u7279\u70b9<\/p>\n<p>\u5f3a\u5927\u7684 GUI \u754c\u9762\u5de5\u5177 \uff0c\u5b8c\u5168\u53ef\u89c6\u5316\u53ef\u7f16\u8f91\u7684\u7ba1\u7406\u5de5\u5177\u3002<br \/>\n\u5b8c\u5584\u7684 MOCK \u670d\u52a1\uff0c\u6587\u6863\u5b9a\u4e49\u597d\u540e\u63a5\u53e3\u5c31\u5df2\u51c6\u5907\u5c31\u7eea\uff0c\u53ef\u65b9\u4fbf\u7684 mock \u8c03\u7528\u63a5\u53e3<br \/>\n\u5e9e\u5927\u7684\u7528\u6237\u7fa4 \uff0cRAP \u5728\u963f\u91cc\u5df4\u5df4\u5e7f\u6cdb\u4f7f\u7528\uff0c\u4e5f\u6709\u8bb8\u591a\u8457\u540d\u7684\u516c\u53f8\u5728\u7528\u3002<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1692\" src=\"https:\/\/qiniu.shijitianchen.com\/2023\/02\/20230220140952129.png\" width=\"1280\" height=\"631\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u4ee5\u4e0b\u7684\u5b89\u88c5\u6b65\u9aa4\u90fd\u662f\u57fa\u4e8eCentos 7 \u8fdb\u884c\u5b89\u88c5<\/p>\n<h2 id=\"h2-1-node-js-\"><a class=\"reference-link\" name=\"1\u3001Node.js \u5b89\u88c5\uff1a\"><\/a>1\u3001Node.js \u5b89\u88c5\uff1a<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">#centos\uff1a\r\ncurl -sL https:\/\/rpm.nodesource.com\/setup_8.x | bash -\r\nyum  install  -y nodejs\r\n# Using Ubuntu\r\ncurl -sL https:\/\/deb.nodesource.com\/setup_8.x | sudo -E bash -\r\nsudo apt-get install -y nodejs\r\n# Using Debian, as root\r\ncurl -sL https:\/\/deb.nodesource.com\/setup_8.x | bash -\r\napt-get install -y nodejs<\/pre>\n<p>yum \u5b89\u88c5\u4f1a\u6bd4\u8f83\u6162\uff0c\u56e0\u4e3a\u670d\u52a1\u5668\u662f\u5728\u56fd\u5916\u3002<\/p>\n<p>\u5982\u679c\u4e0a\u9762\u7684\u5b89\u88c5\u4e0d\u6210\u529f\u7684\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u4e8c\u8fdb\u5236\u5305\u5b89\u88c5\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">wget  https:\/\/nodejs.org\/dist\/latest-v8.x\/node-v8.14.0-linux-x86.tar.gz\r\ntar -zxvf node-v8.14.0-linux-x64.tar.gz\r\nmv   node-v8.14.0-linux-x64  \/opt\/node\r\nln -s \/opt\/node\/bin\/node  \/usr\/bin\/node\r\nln -s \/opt\/node\/bin\/npm  \/usr\/bin\/npm<\/pre>\n<h2 id=\"h2-u914Du7F6Eu6DD8u5B9Du955Cu50CFu6E90\">\u914d\u7f6e\u6dd8\u5b9d\u955c\u50cf\u6e90<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\u5b89\u88c5\u6dd8\u5b9d\u955c\u50cf\u6e90\r\nnpm install -g cnpm --registry=http:\/\/registry.npm.taobao.org<\/pre>\n<h2 id=\"h2--pm2\">\u5b89\u88c5 pm2<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">npm  install -g pm2<\/pre>\n<h2 id=\"h2-2-mysql-5-7-\">2\u3001Mysql 5.7+ \u5b89\u88c5<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">rpm\u5305\u5b89\u88c5\uff1a\r\n\u5728centos7\u4e0a\u8981\u5148\u79fb\u9664mariadb\r\nyum -y remove mariadb*\r\n\u4e0b\u8f7dmysql\r\nwget https:\/\/dev.mysql.com\/get\/Downloads\/MySQL-5.7\/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar\r\n\u89e3\u538bmysql\u4e0b\u8f7d\u7684\u5305\r\ntar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar\r\n\u5b89\u88c5\u4f9d\u8d56\uff1a\r\nyum install libaio.so.1*\r\nyum install perl\r\n\u5b89\u88c5mysql\r\nrpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm\r\nrpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm\r\nrpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm\r\nrpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm\r\n\u542f\u52a8\uff1a\r\nsystemctl  start  mysqld\r\n\u83b7\u53d6\u5bc6\u7801\uff1a\r\ncat  \/var\/log\/mysqld.log  |grep  'generated'\r\n\u767b\u5f55\u4e4b\u540e\u4f1a\u8981\u6c42\u6211\u4eec\u66f4\u6539\u5bc6\u7801\uff1a\r\nalter user 'root'@'localhost' identified by '123456';<\/pre>\n<h2 id=\"h2-3-redis-\">3\u3001Redis \u5b89\u88c5\u4e0e\u9519\u8bef\u89e3\u51b3\u529e\u6cd5<\/h2>\n<p>redis \u5efa\u8bae\u4e0d\u914d\u7f6e\u5bc6\u7801\uff0c\u5e76\u7ed1\u5b9a127.0.0.1 \uff0c\u53ea\u80fd\u672c\u5730\u8bbf\u95ee<br \/>\n\u5b89\u88c5\u597d\u4e4b\u540e\uff0c\u5e76\u4ee5\u540e\u53f0\u4efb\u52a1\u8fd0\u884c\u3002<\/p>\n<p>redis \u5b89\u88c5<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">wget http:\/\/download.redis.io\/releases\/redis-4.0.11.tar.gz\r\ntar xzf redis-4.0.11.tar.gz\r\ncd redis-4.0.11\r\nmake<\/pre>\n<p>\u542f\u52a8\u670d\u52a1\u7aef<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">src\/redis-server<\/pre>\n<p>\u5ba2\u6237\u7aef\u8fde\u63a5\u4e0e\u6d4b\u8bd5<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">src\/redis-cli\r\nredis&gt; set foo bar\r\nOK\r\nredis&gt; get foo\r\n\"bar\"<\/pre>\n<p>redis\u5e38\u7528\u547d\u4ee4<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">redis-cli\r\n-h  \u6307\u5b9a\u8fdc\u7a0b\u767b\u9646ip\r\n-p  \u6307\u5b9a\u8fdc\u7a0bredis\u8bbf\u95ee\u7aef\u53e3\r\n-n  \u6307\u5b9a\u5e93b\u7f16\u53f7\r\n-a  \u6307\u5b9a\u5bc6\u7801\r\n\u793a\u4f8b\r\n.\/redis-cli  -h 127.0.0.1  -p 6379 -n 3  -a djx\r\n\u8fdc\u7a0b\u6267\u884c\u547d\u4ee4\r\n\u6e05\u7a7a\u6240\u6709\u7684\u6570\u636e\r\n.\/redis-cli  -h 127.0.0.1  -p 6379 -n 3  -a djx  flushall<\/pre>\n<p>redis\u8bbe\u7f6e\u5bc6\u7801<\/p>\n<p>\u4e34\u65f6\u751f\u6548\uff0c\u5728\u547d\u4ee4\u884c\u7528 config set requirepass password \u6765\u8fdb\u884c\u8bbe\u7f6e\u3002\u91cd\u542fredis\u540e\u5373\u5931\u6548\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">[root@djx2 src]# .\/redis-cli \r\n127.0.0.1:6379&gt; config set  requirepass djx\r\nOK\r\n127.0.0.1:6379&gt; config get  requirepass\r\n(error) NOAUTH Authentication required.\r\n127.0.0.1:6379&gt; auth djx\r\nOK\r\n127.0.0.1:6379&gt; config get  requirepass\r\n1) \"requirepass\"\r\n2) \"djx\"<\/pre>\n<p>\u6c38\u4e45\u751f\u6548<\/p>\n<p>\u901a\u8fc7\u5728redis\u7684\u914d\u7f6e\u6587\u4ef6redis.conf \u8fdb\u884c\u914d\u7f6e\uff0c\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u6709\u4e2a\u53c2\u6570\uff1a requirepass \u8fd9\u4e2a\u5c31\u662f\u914d\u7f6eredis\u8bbf\u95ee\u5bc6\u7801\u7684\u53c2\u6570\uff1b<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">requirepass password<\/pre>\n<p>\u7136\u540e\u6211\u4eec\u542f\u52a8\u7684\u65f6\u5019\u9700\u8981\u6307\u5b9a\u6211\u4eec\u7684\u914d\u7f6e\u6587\u4ef6\u8fdb\u884c\u542f\u52a8\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">redis-server  \/etc\/redis.conf<\/pre>\n<p>redis \u6307\u5b9a\u7aef\u53e3\uff0c\u9ed8\u8ba4\u662f6379\uff0c\u6211\u4eec\u53ef\u4ee5\u66f4\u6539\u6210\u516c\u53f8\u5185\u90e8\u7edf\u4e00\u7684\u7aef\u53e3\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">port 6379<\/pre>\n<p>redis \u6307\u5b9a\u76d1\u542c\uff0credis \u9ed8\u8ba4\u7ed1\u5b9a\u7684\u662f 127.0.0.1 \uff0c\u4e5f\u5c31\u662f\u53ea\u80fd\u672c\u5730\u8bbf\u95ee\u4e86\uff0c\u5982\u679c\u6211\u4eec\u9700\u8981\u8ba9\u5916\u7f51\u4e5f\u53ef\u4ee5\u8fdb\u884c\u8bbf\u95ee\uff0c\u90a3\u4e48\u6211\u4eec\u9700\u8981\u66f4\u6539\u9ed8\u8ba4\u7684\u7ed1\u5b9a\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">bind  0.0.0.0<\/pre>\n<p>redis \u6307\u5b9a\u65e5\u5fd7\u6587\u4ef6\u5b58\u653e\u4f4d\u7f6e\uff0c\u9ed8\u8ba4\u65e5\u5fd7\u6587\u4ef6\u7684\u5b58\u653e\u4f4d\u7f6e\u662f\u4e3a\u7a7a\u7684\uff0c\u4e5f\u5c31\u662f\u76f4\u63a5\u5728\u63a7\u5236\u53f0\u8f93\u51fa\u4e86\uff0c\u6211\u4eec\u53ef\u4ee5\u5728logfile\u4e2d\u914d\u7f6e\u65e5\u5fd7\u6587\u4ef6\u8def\u5f84\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">logfile \"\/var\/log\/redis.log\"<\/pre>\n<p>redis \u6307\u5b9a\u6570\u636e\u5b58\u653e\u4f4d\u7f6e\uff08\u8981\u6307\u5b9a\uff09\uff0c\u5728redis.conf \u8bbe\u7f6e<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># The filename where to dump the DB\r\ndbfilename dump.rdb  #\u6307\u5b9a\u6570\u636e\u5b58\u653e\u7684\u6587\u4ef6\u540d\u79f0\r\n# The working directory.\r\n#\r\n# The DB will be written inside this directory, with the filename specified\r\n# above using the 'dbfilename' configuration directive.\r\n#\r\n# The Append Only File will also be created inside this directory.\r\n#\r\n# Note that you must specify a directory here, not a file name.\r\ndir .\/   #\u6307\u5b9a\u6570\u636e\u5b58\u653e\u7684\u4f4d\u7f6e\u3002\r\n\u521b\u5efa\u76ee\u5f55\r\nmkdir  \/opt\/redis\/data\/\r\n\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u6307\u5b9a\u76ee\u5f55\r\ndir   \/opt\/redis\/data\/<\/pre>\n<p>redis \u5f00\u542frdbchecksum<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\u8be5\u53c2\u6570\uff0c\u57283.2\u7248\u672c\u548c4.0\u7248\u672c\u662f\u9ed8\u8ba4\u5f00\u542f\u7684\uff0c\u4f46\u662f\u57282.4\u7248\u672c\u4e2d\u662f\u6ca1\u6709\u5f00\u542f\u7684\uff0c\u8be5\u53c2\u6570\u6211\u4eec\u8fdb\u884c\u4f7f\u7528dump.rdb\u6587\u4ef6\u65f6\u662f\u6709\u4f5c\u7528\u7684\uff0c\u56e0\u4e3a\u5728\u4f7f\u7528dump.rdb \u7684\u65f6\u5019\u6709\u8be5\u503c\u662f\u4f1a\u6548\u9a8c\u8be5\u6587\u4ef6\u7684\u5b8c\u6574\u6027\u3002rdbchecksum\u8bbe\u7f6e\u4e3ano\u7684\u8bdd\u5c31\u4e0d\u4f1a\u6548\u9a8c\u8be5\u6587\u4ef6\u7684\u5b8c\u6574\u6027\u3002<\/pre>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528nohup\u548c&amp; \u8ba9redis\u5728\u540e\u53f0\u6b63\u5e38\u8fd0\u884c,\u5e76\u5199\u5165\u65e5\u5fd7\u5230\/var\/log\/redis.log<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">nohup  .\/src\/redis-server   .\/redis.conf  &gt;&gt;\/var\/log\/redis.log 2&gt;&amp;1 &amp;<\/pre>\n<p>\u5b89\u88c5\u4e2d\u9047\u5230\u7684\u9519\u8bef<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1693\" src=\"https:\/\/qiniu.shijitianchen.com\/2023\/02\/20230220140954546.png\" width=\"739\" height=\"117\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<ol>\n<li>\u9519\u8bef1 gcc \u7f16\u8bd1\u5668\u6ca1\u6709\u5b89\u88c5\uff0c\u89e3\u51b3\u529e\u6cd5 \uff1a \u5b89\u88c5gcc \u7f16\u8bd1\u5668yum install gcc -y<\/li>\n<\/ol>\n<p>\u9519\u8bef2 jemalloc\/jemalloc.h: No such file or directory\u3002 \uff08\u6ce8\u610f\uff0c\u8fd9\u91cc\u9700\u8981\u7279\u522b\u6ce8\u610f\uff09<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1694\" src=\"https:\/\/qiniu.shijitianchen.com\/2023\/02\/20230220140955713.png\" width=\"663\" height=\"133\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><\/p>\n<p>\u9488\u5bf9\u8fd9\u4e2a\u9519\u8bef\uff0c\u6211\u4eec\u53ef\u4ee5\u5728README.md \u6587\u4ef6\u4e2d\u770b\u5230\u89e3\u91ca\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">---------\r\nSelecting a non-default memory allocator when building Redis is done by setting\r\nthe `MALLOC` environment variable. Redis is compiled and linked against libc\r\nmalloc by default, with the exception of jemalloc being the default on Linux\r\nsystems. This default was picked because jemalloc has proven to have fewer\r\nfragmentation problems than libc malloc.\r\nTo force compiling against libc malloc, use:\r\n    % make MALLOC=libc\r\nTo compile against jemalloc on Mac OS X systems, use:\r\n    % make MALLOC=jemalloc\r\nVerbose build\r\n-------------<\/pre>\n<h2 id=\"h2-4-rap2-delos-\">4\u3001\u540e\u7aef rap2-delos \u5b89\u88c5<\/h2>\n<p>\u5b89\u88c5git<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">yum  install  -y git<\/pre>\n<p>\u521b\u5efa\u6570\u636e\u5e93 RAP2_DELOS_APP<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">CREATE DATABASE IF NOT EXISTS RAP2_DELOS_APP DEFAULT CHARSET utf8 COLLATE utf8_general_ci;<\/pre>\n<p>rap2-delos \u5b89\u88c5<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># \u4e0b\u8f7d\u6e90\u4ee3\u7801\r\ngit clone https:\/\/github.com\/thx\/rap2-delos.git\r\n# \u5207\u6362\u76ee\u5f55\r\ncd  rap2-delos\r\n# \u5b89\u88c5\u4f9d\u8d56\u5305\r\nnpm install\r\n# \u5b89\u88c5 TypeScript \u7f16\u8bd1\u5305\r\nnpm install typescript -g\r\n# \u7f16\u8f91\u6d4b\u8bd5\u914d\u7f6e\u6587\u4ef6\uff08\u6ce8\u610f\u8fd9\u91cc\u53ea\u662f\u4e3a\u4e86\u6d4b\u8bd5\uff09\r\n\u6ce8\u610f\u8fd9\u4e2a\u6587\u4ef6\u8def\u5f84   rap2-delos\/src\/config\/config.dev.js\r\n\u4fee\u6539\u7684\u5185\u5bb9\uff08\u5927\u7ea6\u572811\u884c\u5de6\u53f3\u5f00\u59cb\uff09\uff1a\r\n\u5c06\u6570\u636e\u5e93\u914d\u7f6e\u6210\u6211\u4eec\u7684\u6570\u636e\u5e93\u540d\u79f0\u548c\u8def\u5f84\u548c\u7528\u6237\u548c\u5bc6\u7801\r\ndialect: 'mysql',\r\nhost: 'localhost',\r\nport: 3306,\r\nusername: 'root',\r\npassword: '123456',\r\ndatabase: 'RAP2_DELOS_APP',\r\n# \u6784\u5efa\r\n\u6ce8\u610f\uff1a\u5728 rap2-delos  \u4e3b\u76ee\u5f55\u4e0b\u64cd\u4f5c\r\nnpm run build\r\n# \u521d\u59cb\u5316\u6570\u636e\u5e93\uff08\u4e00\u5b9a\u8981\u5728\u6839\u76ee\u5f55\u6267\u884c\u54e6\uff08rap2-delos\/\uff09\uff09\r\nnpm run create-db\r\n\u521b\u5efa\u6210\u529f\u4e86\u4f1a\u6709\u63d0\u793a \u201cRun create-db finished successfully.\u201d\r\n# \u6267\u884cmocha\u6d4b\u8bd5\u7528\u4f8b\u548cjs\u4ee3\u7801\u89c4\u8303\u68c0\u67e5\r\nnpm run check\r\n# \u542f\u52a8\u5f00\u53d1\u6a21\u5f0f\u7684\u670d\u52a1\u5668 \u76d1\u89c6\u5e76\u5728\u53d1\u751f\u4ee3\u7801\u53d8\u66f4\u65f6\u81ea\u52a8\u91cd\u542f\r\nnpm run dev<\/pre>\n<p>\u6b63\u5e38\u542f\u52a8\uff1a<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1695\" src=\"https:\/\/qiniu.shijitianchen.com\/2023\/02\/20230220140956201.png\" width=\"924\" height=\"314\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u5982\u679c\u51fa\u73b0\u4e0b\u9762\u7684\u9519\u8bef\u5c31\u662f\u7aef\u53e3\u88ab\u5360\u7528\u4e86<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1696\" src=\"https:\/\/qiniu.shijitianchen.com\/2023\/02\/20230220140958684.png\" width=\"669\" height=\"252\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u7f16\u8f91\u6b63\u5f0f\u914d\u7f6e\u6587\u4ef6\uff08\u914d\u7f6e\u6b63\u5f0f\u6570\u636e\u5e93\uff09<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">rap2-delos\/dist\/config\/config.prod.js  (\u6ce8\u610f\u8fd9\u6b21\u4fee\u6539\u7684\u914d\u7f6e\u6587\u4ef6\u7684\u76ee\u5f55\u548c\u4e0a\u9762\u90a3\u6b21\u76ee\u5f55\u4e0d\u4e00\u6837\u7684\u3002)\r\n\u4fee\u6539\u7684\u5185\u5bb9\uff08\u5927\u7ea6\u572812\u884c\u5de6\u53f3\u5f00\u59cb\uff09\uff1a\r\n\u5c06\u6570\u636e\u5e93\u914d\u7f6e\u6210\u6211\u4eec\u7684\u6570\u636e\u5e93\u540d\u79f0\u548c\u8def\u5f84\u548c\u7528\u6237\u548c\u5bc6\u7801\r\ndialect: 'mysql',\r\nhost: process.env.MYSQL_URL || 'localhost',\r\nport: (process.env.MYSQL_PORT &amp;&amp; parseInt(process.env.MYSQL_PORT)) || 3306,\r\nusername: process.env.MYSQL_USERNAME || 'root',\r\npassword: process.env.MYSQL_PASSWD || '123456',\r\ndatabase: process.env.MYSQL_SCHEMA || 'RAP2_DELOS_APP',\r\n#  \u542f\u52a8\u6b63\u5f0f\uff08\u751f\u4ea7\uff09\u6a21\u5f0f\r\nnpm start \r\n#  \u67e5\u770b\u670d\u52a1\u72b6\u6001\u548c\u65e5\u5fd7\r\npm2  list \r\npm2  logs  rap-server-delos<\/pre>\n<p>\u6d4b\u8bd5\u662f\u5426\u6b63\u5e38\uff1a<br \/>\nip:8080<br \/>\n\u663e\u793a\uff1a<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">RAP2\u540e\u7aef\u670d\u52a1\u5df2\u542f\u52a8\uff0c\u8bf7\u4ece\u524d\u7aef\u670d\u52a1(rap2-dolores)\u8bbf\u95ee\u3002 RAP2 back-end server is started, please visit via front-end service (rap2-dolores)<\/pre>\n<p>\u8868\u793a\u6b63\u5e38<\/p>\n<h2 id=\"h2-5-rap2-dolores-\"><a class=\"reference-link\" name=\"5\u3001\u524d\u7aef rap2-dolores \u5b89\u88c5\"><\/a>5\u3001\u524d\u7aef rap2-dolores \u5b89\u88c5<\/h2>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># \u62c9\u53d6\u4ee3\u7801\r\ngit clone https:\/\/github.com\/thx\/rap2-dolores.git\r\n# \u5207\u6362\u76ee\u5f55\r\ncd  rap2-dolores\r\n# \u521d\u59cb\u5316\r\nnpm install<\/pre>\n<p>\u4e0b\u9762\u8fd9\u6b65\u53ef\u4ee5\u4e0d\u505a\uff0c\u76f4\u63a5\u914d\u7f6e\u6b63\u5f0f\u3002<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\"># \u5f00\u53d1\u6a21\u5f0f\u914d\u7f6e**(\u5f00\u53d1\u914d\u7f6e\u53ef\u4ee5\u4e0d\u505a)\r\n    \u914d\u7f6e\u6587\u4ef6\u8def\u5f84\uff1a\/src\/config\/config.dev.js\r\n    module.exports = {\r\n      serve: 'http:\/\/127.0.0.1:8080',\r\n      keys: ['some secret hurr'],\r\n      session: {\r\n        key: 'koa:sess'\r\n      }\r\n    }\r\n    \u66f4\u6539serve  \u5b57\u6bb5\r\n    \u6539\u6210\u6211\u4eec\u7684\u540e\u7aef\u8bbf\u95ee\u5730\u5740\u3002 \u6ce8\u610f\u52a0 http:\/\/\r\n    # test cases \u6d4b\u8bd5\u7528\u4f8b\r\n    npm run test\r\n    # will watch &amp; serve automatically \u4f1a\u81ea\u52a8\u76d1\u89c6\u6539\u53d8\u540e\u91cd\u65b0\u7f16\u8bd1\r\n    npm run dev<\/pre>\n<p>\u6b63\u5f0f\u914d\u7f6e\uff0c\u5fc5\u987b\u914d\u7f6e<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">\u914d\u7f6e\u6587\u4ef6\u8def\u5f84\uff1a\/src\/config\/config.prod.js\r\nmodule.exports = {\r\n  serve: 'http:\/\/127.0.0.1:8080',\r\n  keys: ['some secret hurr'],\r\n  session: {\r\n    key: 'koa:sess'\r\n  }\r\n}\r\n\u66f4\u6539serve  \u5b57\u6bb5\r\n\u6539\u6210\u6211\u4eec\u7684\u540e\u7aef\u8bbf\u95ee\u5730\u5740\uff0c\u8bbf\u95ee\u5730\u5740\u76f4\u63a5\u4f7f\u7528ip\uff0c\u4e0d\u8981\u4f7f\u7528127.0.0.1\u3002 \u6ce8\u610f\u52a0 http:\/\/,\r\n#  \u7f16\u8bd1React\u751f\u4ea7\u5305\r\nnpm run build\r\n#  \u5b89\u88c5serve\r\nnpm install -g serve\r\n# \u8fd0\u884c \r\nserve -s .\/build -p 80\r\n-p \u4e3a\u6307\u5b9a\u7aef\u53e3\r\n# \u540e\u53f0\u8fd0\u884c\r\nnohup  serve -s .\/build -p 80  &amp;<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u76ee\u5f55 1 Node.js \u5b89\u88c5\uff1a 2 Mysql 5.7+ \u5b89\u88c5 3 Redis \u5b89\u88c5\u89c1\u6587\u7ae0 4 \u540e\u7aef rap [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1692,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,3],"tags":[],"class_list":["post-1687","post","type-post","status-publish","format-standard","hentry","category-linux","category-javascript"],"_links":{"self":[{"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/posts\/1687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1687"}],"version-history":[{"count":1,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/posts\/1687\/revisions"}],"predecessor-version":[{"id":1697,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/posts\/1687\/revisions\/1697"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=\/wp\/v2\/media\/1692"}],"wp:attachment":[{"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.siediyer.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}