(choose latest LTS version)
$ sudo npm i -g pm2notice. mysql8.x default auth caching_sha2_pasword not support in node-mysql2 see issue
$ git clone https://github.com/byronigoe/code-push-server.git
$ cd code-push-server
$ npm installyum install redis.x86_64Create a MySQL user, e.g.
CREATE USER 'codepush'@'localhost' IDENTIFIED BY 'create_a_password';Grant appropriate permissions, e.g.
GRANT ALL PRIVILEGES ON codepush . * TO 'codepush'@'localhost';Full command
$ code-push-server-db init --dbhost "your mysql host" --dbport "your mysql port" --dbname "your database" --dbuser "your mysql user" --dbpassword "your mysql password"Defaults (if omitted) are: | dbhost | localhost | | dbport | 3306 | | dbname | codepush | | dbuser | root |
Minimally
$ code-push-server-db init --dbpassword "your mysql root password"or from source code
$ ./bin/db init --dbhost "your mysql host" --dbport "your mysql port" --dbname "your database" --dbuser "your mysql user" --dbpassword "your mysql password"output: success
check out the supported config items in config.ts
Save the file config.js and modify the properties, or set the corresponding environment variables (e.g. in process.json).
local.storageDirchange to your directory, make sure you have read/write permissions.local.downloadUrlreplace127.0.0.1to your machine's IP.common.dataDirchange to your directory, make sure you have read/write permissions.jwt.tokenSecretget a random string fromhttps://www.grc.com/passwords.htm, and replace the valueINSERT_RANDOM_TOKEN_KEY.dbconfig:username,password,host,portset the environment variables, or change them in this file.smtpConfigconfig:host,auth.user,auth.passneeded if you enablecommon.allowRegistration
Save the file process.json
Some configuration properties have to change:
scriptif you install code-push-server from npm usecode-push-server, or use"your source code dir"/bin/wwwCONFIG_FILEabsolute path to the config.js you downloaded.
$ pm2 start process.json$ pm2 reload process.json$ pm2 stop process.json$ curl -I https://your-server.com/return httpCode
200 OK
HTTP/1.1 200 OK
X-DNS-Prefetch-Control: off
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=15552000; includeSubDomains
X-Download-Options: noopen
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Content-Type: text/html; charset=utf-8
Content-Length: 592
ETag: W/"250-IiCMcM1ZUFSswSYCU0KeFYFEMO8"
Date: Sat, 25 Aug 2018 15:45:46 GMT
Connection: keep-aliveconfig redis in config.js
updateCheckCacherolloutClientUniqueIdCachetryLoginTimes
$ npm install -g @shm-open/code-push-server@latest
$ code-push-server-db upgrade --dbhost "your mysql host" --dbport "your mysql port" --dbuser "your mysql user" --dbpassword "your mysql password" # upgrade codepush database
$ pm2 restart code-push-server # restart servicefrom source code
$ cd /path/to/code-push-server
$ git pull --rebase origin master
$ ./bin/db upgrade --dbhost "your mysql host" --dbport "your mysql port" --dbuser "your mysql user" --dbpassword "your mysql password"
# upgrade codepush database
$ pm2 restart code-push-server # restart service$ pm2 ls
$ pm2 show code-push-server
$ tail -f "output file path"- local (default)
- s3 (aws)
- qiniu (qiniu)
- oss (aliyun)
- tencentcloud
you can change it in process.json, env: PORT,HOST
Use code-push-cli manage CodePush Server
$ npm install https://github.com/byronigoe/code-push-cli@latest -g
$ code-push register https://your-server.com #or login with default account:admin password:123456Follow the react-native-code-push docs, addition iOS add a new entry named CodePushServerURL, whose value is the key of ourself CodePushServer URL. Android use the new CodePush constructor in MainApplication point CodePushServerUrl
iOS eg. in file Info.plist
...
<key>CodePushDeploymentKey</key>
<string>YourCodePushKey</string>
<key>CodePushServerURL</key>
<string>YourCodePushServerUrl</string>
...Android eg. in file MainApplication.java
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new CodePush(
"YourKey",
MainApplication.this,
BuildConfig.DEBUG,
"YourCodePushServerUrl"
)
);
}cordova-plugin-code-push for cordova
$ cd /path/to/project
$ cordova plugin add cordova-plugin-code-push@latest --saveedit config.xml. add code below.
<platform name="android">
<preference name="CodePushDeploymentKey" value="nVHPr6asLSusnWoLBNCSktk9FWbiqLF160UDg" />
</platform>
<platform name="ios">
<preference name="CodePushDeploymentKey" value="Iw5DMZSIrCOS7hbLsY5tHAHNITFQqLF160UDg" />
</platform>
<preference name="CodePushServerUrl" value="https://your-server.com/" />