๋๊ตฌ ๋ชจ์ ์์ด์ฝ์ด ํ์๋์ง ์๊ณ ๊ธ๊ผด ๋ชจ์ ์ค๋ฅ๊ฐ ํ์๋์ง๋ง ๋ชจ๋ ํด๋์ ์์ผ๋ฉฐ ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝ๋์ง ์์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ก ๋์ ์ฃผ์ค ์ ์์ต๋๊น?
๊ฐ์ ธ ์ค๊ธฐ
๋๋ ๋ชจ๋ ๊ธ๊ผด ํจ๋ฐ๋ฆฌ์ ๋ํด ์ด๊ฒ์ ์ป์ต๋๋ค.
์ธ๋ถ ์ฌํญ์ ์ ๋ ฅํ์ญ์์ค.
์ญ๋ฐฉํฅ ํ๋ก์ ๋ค์์ ์คํ ์ค์
๋๊น?
๊ฐ๋ฐ ๋๋ ํ๋ก๋์
๋ชจ๋์์ ์คํ ์ค์
๋๋ค.
์ถ์?
๋ณด์ ์ฌ๋ณธ ๋๋ ์ค์ .json
๊ธฐํ.
๊ฐ๋ฐ ๋ชจ๋์์ ์คํ ์ค์ด์ง๋ง systemd ์๋น์ค์ "Environment = NODE_ENV = production"์ด ์์ง๋ง ์ญ๋ฐฉํฅ ํ๋ก์๊ฐ์๊ณ CSS๊ฐ ์ถ์๋๊ณ settings.json์ด ๊ฑฐ์ ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค (mysql ๋ฐ admin pw ๋ง ๋ณ๊ฒฝ๋จ).
Etherpad๊ฐ ๋ชจ๋ ๊ธ๊ผด์๋ก๋ ํ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
settings.json์์ minify๋ฅผ false๋ก, maxage๋ฅผ 0์ผ๋ก ์ค์ ํ์ญ์์ค.
๋ด๊ฐ ํ์ด, ์๋ฌด๊ฒ๋ ๋ณํ์ง ์์์ด
์ง๊ธ ๋ด ๋ ธํธ๋ถ์์ ๋ ๋ง์ ๊ฒ์ ๋์ธ ์ ์์ต๋๋ค. ๊ฐ์ฅ ์ ์ฉํ ๊ฒ์ settings.json์ ์ป๋ ๊ฒ์ ๋๋ค (๊ทธ๋ฌ๋ ๋ชจ๋ ์ํธ๋ ์ ๊ฑฐํ์ญ์์ค). ์ ๋ฐ ์ ๊ณต ํ ์ ์์ต๋๊น?
FWIW 1.6. *> 1.8.3์ ํ ์คํธํ์ง๋ง ๊ฒฝํํ์ง ๋ชปํ์ง๋ง settings.json๊ณผ ๊ด๋ จ์ด์์ ์ ์์ต๋๋ค.
์ค์ ์ ์ ๊ณตํ์ง ์์ผ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
cp settings.json settings.backup.json
cp settings.json.template settings.json
๊ทธ๋ฐ ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์คํธ / ์ฌ์ฉ์ / ํจ์ค๋ฅผ settings.backup.json
์์ settings.json
๋ก ๋ณต์ฌํฉ๋๋ค.
๋ค์ ์์ํ๊ณ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋์ง ํ์ธํ์ญ์์ค.
/*
This file must be valid JSON. But comments are allowed
Please edit settings.json, not settings.json.template
To still commit settings without credentials you can
store any credential settings in credentials.json
*/
{
// Name your instance!
"title": "HelpMe-Etherpad",
// favicon default name
// alternatively, set up a fully specified Url to your own favicon
"favicon": "favicon.ico",
//IP and port which etherpad should bind at
"ip": "0.0.0.0",
"port" : 9001,
// Option to hide/show the settings.json in admin page, default option is set to true
"showSettingsInAdminPage" : true,
/*
// Node native SSL support
// this is disabled by default
//
// make sure to have the minimum and correct file access permissions set
// so that the Etherpad server can access them
"ssl" : {
"key" : "/path-to-your/epl-server.key",
"cert" : "/path-to-your/epl-server.crt",
"ca": ["/path-to-your/epl-intermediate-cert1.crt", "/path-to-your/epl-intermediate-cert2.crt"]
},
*/
//The Type of the database. You can choose between dirty, postgres, sqlite and mysql
//You shouldn't use "dirty" for for anything else than testing or development
/*"dbType" : "dirty",
//the database specific settings
"dbSettings" : {
"filename" : "var/dirty.db"
},
An Example of MySQL Configuration*/
"dbType" : "mysql",
"dbSettings" : {
"user" : "etherpad",
"host" : "localhost",
"password": "",
"database": "etherpad",
"charset" : "utf8mb4"
},
"users": {
"admin": {
"password": "",
"is_admin": true
}
},
//the default text of a pad
"defaultPadText" : "Willkommen zum CN-Etherpad!\n\nDieses Dokument wird beim Tippen laufend aktualisiert, sodass jeder immer denselben Text sieht. So kann man nahtlos zusammen an Dokumenten arbeiten.\n",
/* Default Pad behavior, users can override by changing */
"padOptions": {
"noColors": false,
"showControls": true,
"showChat": true,
"showLineNumbers": true,
"useMonospaceFont": false,
"userName": false,
"userColor": false,
"rtl": false,
"alwaysShowChat": false,
"chatAndUsers": false,
"lang": "de-de"
},
/* Should we suppress errors from being visible in the default Pad Text? */
"suppressErrorsInPadText" : false,
/* Users must have a session to access pads. This effectively allows only group pads to be accessed. */
"requireSession" : false,
/* Users may edit pads but not create new ones. Pad creation is only via the API. This applies both to group pads and regular pads. */
"editOnly" : false,
/* Users, who have a valid session, automatically get granted access to password protected pads */
"sessionNoPassword" : false,
/* if true, all css & js will be minified before sending to the client. This will improve the loading performance massivly,
but makes it impossible to debug the javascript/css */
"minify" : false,
/* How long may clients use served javascript code (in seconds)? Without versioning this
may cause problems during deployment. Set to 0 to disable caching */
"maxAge" : 21600, // 60 * 60 * 6 = 6 hours
/* This is the absolute path to the Abiword executable. Setting it to null, disables abiword.
Abiword is needed to advanced import/export features of pads*/
"abiword" : "/usr/local/bin/abiword",
/* This is the absolute path to the soffice executable. Setting it to null, disables LibreOffice exporting.
LibreOffice can be used in lieu of Abiword to export pads */
"soffice" : null,
/* This is the path to the Tidy executable. Setting it to null, disables Tidy.
Tidy is used to improve the quality of exported pads*/
"tidyHtml" : "/usr/bin/tidy",
/* Allow import of file types other than the supported types: txt, doc, docx, rtf, odt, html & htm */
"allowUnknownFileEnds" : true,
/* This setting is used if you require authentication of all users.
Note: /admin always requires authentication. */
"requireAuthentication" : false,
/* Require authorization by a module, or a user with is_admin set, see below. */
"requireAuthorization" : false,
/*when you use NginX or another proxy/ load-balancer set this to true*/
"trustProxy" : false,
/* Privacy: disable IP logging */
"disableIPlogging" : false,
/* Users for basic authentication. is_admin = true gives access to /admin.
If you do not uncomment this, /admin will not be available! */
// restrict socket.io transport methods
"socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],
// Allow Load Testing tools to hit the Etherpad Instance. Warning this will disable security on the instance.
"loadTest": false,
// Disable indentation on new line when previous line ends with some special chars (':', '[', '(', '{')
/*
"indentationOnNewLine": false,
*/
/* The toolbar buttons configuration.
"toolbar": {
"left": [
["bold", "italic", "underline", "strikethrough"],
["orderedlist", "unorderedlist", "indent", "outdent"],
["undo", "redo"],
["clearauthorship"]
],
"right": [
["importexport", "timeslider", "savedrevision"],
["settings", "embed"],
["showusers"]
],
"timeslider": [
["timeslider_export", "timeslider_returnToPad"]
]
},
*/
/* The log level we are using, can be: DEBUG, INFO, WARN, ERROR */
"loglevel": "INFO",
//Logging configuration. See log4js documentation for further information
// https://github.com/nomiddlename/log4js-node
// You can add as many appenders as you want here:
"logconfig" :
{ "appenders": [
{ "type": "console"
//, "category": "access"// only logs pad access
}
/*
, { "type": "file"
, "filename": "your-log-file-here.log"
, "maxLogSize": 1024
, "backups": 3 // how many log files there're gonna be at max
//, "category": "test" // only log a specific category
}*/
/*
, { "type": "logLevelFilter"
, "level": "warn" // filters out all log messages that have a lower level than "error"
, "appender":
{ Use whatever appender you want here }
}*/
/*
, { "type": "logLevelFilter"
, "level": "error" // filters out all log messages that have a lower level than "error"
, "appender":
{ "type": "smtp"
, "subject": "An error occurred in your EPL instance!"
, "recipients": "[email protected], [email protected]"
, "sendInterval": 300 // 60 * 5 = 5 minutes -- will buffer log messages; set to 0 to send a mail for every message
, "transport": "SMTP", "SMTP": { // see https://github.com/andris9/Nodemailer#possible-transport-methods
"host": "smtp.example.com", "port": 465,
"secureConnection": true,
"auth": {
"user": "[email protected]",
"pass": "bar_foo"
}
}
}
}*/
]
}
}
์ข์์, 2 ๋ถ๋ง์ฃผ์ธ์.
์๋์, ๋ณต์ ํ์ง ์์ ๋๊ตฌ ๋ชจ์ ๋ฒํผ์ด ์์ต๋๋ค.
์ด ์ธ์คํด์ค๋ ๋ด๊ฐ ์ก์ธ์ค ํ ์์๋ ๊ณต๊ฐ์ ๋๊น? ์ธ์ ๋ ์ง ์ ์๊ฒ ์ด๋ฉ์ผ์ ๋ณด๋ด์ฃผ์ญ์์ค. URL [email protected]
๋ฉ์ฒญํ ์ง๋ฌธ ..
bin/run.sh
์ฌ์ฉํ์ฌ ์คํ ์๋๊ฐ์ฌ!
์ฌํ๊ฒ๋ ๊ณต๊ฐ ์ธ์คํด์ค๊ฐ ์๋๋๋ค.
settings.json์ ์ ํ
ํ๋ฆฟ์ผ๋ก ๋ฐ๊พธ๊ณ ์คํจ๋ ์คํจ ์์์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค. ์ฌ์ ํ ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค ..
๊ทธ๋ฆฌ๊ณ ์, run.sh๋ฅผ ์คํํ๊ณ ์๋น์ค๋ฅผ ๋ค์ ์์ํ๊ณ ํ๊ธ์ ์ง ์ ์ต๋๋ค. :)
์ด๊ฒ์ systemd ์๋น์ค btw์
๋๋ค.
[๋จ์]
Description = ์ด๋ ํจ๋
After = syslog.target network.target
[์๋น์ค]
์ ํ = ๋จ์
์ฌ์ฉ์ = ์ด๋ ํจ๋
๊ทธ๋ฃน = ์ด๋ ํจ๋
WorkingDirectory = / opt / etherpad
ํ๊ฒฝ = NODE_ENV = ์์ฐ
ExecStart = / opt / etherpad / bin / run.sh
๋ค์ ์์ = ํญ์
[์ค์น]
WantedBy = multi-user.target
์ด๋ป๊ฒ ์ค์น ํ์ต๋๊น? git clone
ํ์
จ๋์? ์๋๋ฉด ์ถ์ ๋ .zip ํ์ผ์ ํ๊ณ ์์ถ์ ํผ ์ ์ด ์๋์?
์์ฒญ URL : https://dev.com:9001/static/font/RobotoMono-Regular.ttf
jose<strong i="7">@server</strong>:~/develop$ locate RobotoMono | grep develop | grep Reg
/home/jose/develop/src/static/font/RobotoMono-Regular.ttf
๋ชจ๋ ๊ด์ฐฎ์ ๋ณด์ ๋๋ค.
git clone์ ํตํด ์ค์นํ๊ฑฐ๋ ์คํ๋ ค ์ ๋ฐ์ดํธํ์ต๋๋ค. ๋๋ zip unpack์ ํตํด ๋ช ๋ ์ ์ (๋ค๋ฅธ ๊ด๋ฆฌ์์ ์ํด) ์ค์น๋์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด rsync๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
์, ๋ง์ง๋ง ๊ด๋ฆฌ์๊ฐ ํดํน์ ํ๋? git status
๊ฒฝ์ฐ ์์ ๋ ํ์ผ์ด ์์ต๋๊น?
์ ์ ์ฅ์๋ฅผ git ๋ณต์ ํ ๋ค์ settings.json์ ๋ณต์ฌํ๋ฉด ์ด๋ป๊ฒ๋ฉ๋๊น? ์๋ํ์ง๋ง ๋ญ๊ฐ ์ด์ํ๋ค๋ ๋ฌธ์ ๋ ๋ถ๋ช ํ ํด๊ฒฐ๋์ง ์์ต๋๋ค ..
์ง๊ธ ๊ทธ๋ ๊ฒํ๊ฒ ์ต๋๋ค. ๋ค, ๋งค์ฐ ์ด์ํฉ๋๋ค. ๊ธ๊ผด์ ๋ฃจํธ ํด๋๊ฐ etherpad์ ๋์ผํ์ง ์์ ๊ฒ์ฒ๋ผ
์ฝ๋๊ฐ ๋ง์ต๋๋ค. src /๋ ๋ฃจํธ ํด๋์ ๋๋ค ..
๋๋ ์ด์ ๊ด๋ฆฌ์๊ฐ ๋ญ๊ฐ๋ฅผ ํดํนํ๋ค๊ณ ์๊ฐํฉ๋๋ค. git diff๋ฅผ ๋ณด์ง ์๊ณ ๋ ๋ฌด์์ ๋งํ ์ ์์ต๋๋ค. ์ด์ ๋ซ์๋ ๋ ๊น์?
์ด์ ๊ด๋ฆฌ์๋ git์ ์ฌ์ฉํ์ง ์์์ผ๋ฉฐ (์ค์น๋์ง ์์) ๊นจ๋ํ ๋ณต์ ํ์๋ ์ฌ์ ํ ์๋ํ์ง ์์ต๋๋ค.
@skramsa lulwut. ํด๋ก ์ ์์ ํ ์ ๋ฆฌํ๊ณ ์คํํด๋ ์๋ํ์ง ์์ต๋๊น? :! ์ค์ ์ ์ด์์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ก๊ทธ์ ์ค๋ฅ๋ ๊ฒฝ๊ณ ๊ฐ ์์ต๋๊น?
์์ ํ ๊นจ๋ํ ๋ณต์ ๋ฅผ ์ํํ๊ณ ์ค์ ์ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ๋ฉ๋๊น? ๊ทธ๋ฌ๋ฉด ์ฌ์ ํ ์คํจํฉ๋๊น?
๋ด๊ฐ ๋๋ฒ๊น ํ ์ ์๋๋ก ์์๋ก ๊ณต๊ฐ ํ ์ ์์ต๋๊น?
๋ณด์ ๋ ์ธํธ๋ผ๋ท์ ์์ต๋๋ค. ๋ ธ๋ 6์์ 12 ๋ก์ ์ ๊ทธ๋ ์ด๋์ ๊ด๋ จ์ด์์ ์ ์์ต๋๊น?
ํ์คํ์ง ์์ต๋๋ค .. ์ฌ๊ธฐ์์ ๋ค๋ฅธ ๋๋ฒ๊ทธ ๋จ๊ณ๋ฅผ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค ..
๋ด๊ฐ ๊ฐ์ง ์ ์ผํ ๋จ์๋ ..
https://github.com/ether/etherpad-lite/blob/develop/src/node/utils/Minify.js#L429
ํ์ง๋ง ๋ชจ๋ ์บ์๋ฅผ ์ ๋ฆฌํ๊ณ ์ ๋ฆฌ ์คํ์ํ๋ค๊ณ ํ์ จ์ต๋๋ค ..
minify๋ฅผ ๋นํ์ฑํํ๊ณ rm -Rf src/node_modules && rm src/package-lock.json
์ (๋ฅผ) bin/run.sh
ํ์ต๋๊น? ๋๋ ๋น์ ์ด ๊ทธ๋ ๊ฒ ๊นจ๋ํ ๋ณต์ ๋ฅผํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค;
git sha
, npm --version
๋ฐ nodejs version
๊ฐ์ ์ผ๋ง์
๋๊น?
npm์ 6.14.4์ด๊ณ ๋ ธ๋ -v๋ 12.16.2์ ๋๋ค. ์ด๋ฆฌ์์ ์ง๋ฌธ์ด์ง๋ง "๋ด"git sha๊ฐ ์ ํํ ๋ฌด์์ ์๋ฏธํฉ๋๊น?
1.6.2๋ก ๋ค์ ๋กค๋งํ๊ณ minify๋ฅผ false๋ก ์ค์ ํ๋ฉด ๊ฐ์๊ธฐ ๋ค์ ์๋ํฉ๋๋ค (์ด์ ๋ฒ์ ์ ์์ด์ฝ์กฐ์ฐจ๋ ์๋ํ์ง ์์). ๋คํ์ ๋๋ค .. ๋ค์ ์ฃผ์์ด ์ค์ ์ผ๋ก ๋ ๋ค๋ฅธ ๊นจ๋ํ ์ค์ ์ ์๋ ํ ๊ฒ์ ๋๋ค. ์ด๋ฒ์๋ ์๋ ํ ๊ฒ์ ๋๋ค. : D ๋์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค !!
etherpad ํด๋์ git rev-parse HEAD
๋น์ ์ด ์ด๋ค ์ปค๋ฐ์ํ๊ณ ์๋์ง๋ณด๊ณ ์ถ์ด์.
์๋
ํ์ธ์
ํ๋ก์ ๋ค์ ์๋ค๋ ์ ์ ์ ์ธํ๋ฉด ๋๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ค์น๋ฅผ ์ ์ฅํ๊ณ ์ ์ฅ์๋ฅผ ๋ณต์ ํ์ฌ ํ
์คํธํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ตฌ์ฑ ํ์ผ์ ๋ณต์ฌํ๊ณ ์๋น์ค๋ฅผ ๋ค์ ์์ํ์ต๋๋ค.
์๋ก์ด ์ค์น์๋ ๋ถ๊ตฌํ๊ณ ์ฌ์ ํ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
ํ์ง๋ง :
๋ฐ๋ฉด์ ํฅ๋ฏธ๋ก์ด ์ ์ ํ๋ก์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ https์์ด ์๋น์ค์ ์ก์ธ์คํ๋ฉด ๋ฌธ์ ์์ต๋๋ค. ์์ด์ฝ์ด ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋ฉ๋๋ค !!
์ํ์น ํ๋ก์ ๊ตฌ์ฑ์ ๋ฌธ์์์ ์ ๊ณต๋๋ฉฐ ๋ด ํธ์๋ ์ด๊ตญ์ ์ธ ๊ฒ์ด ์์ต๋๋ค.
๋๊ฐ์ ๋ฌธ์ ๊ฐ์์์ต๋๋ค.
์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ์ฌ์ฉํ๊ณ Etherpad ์ธ์คํด์ค๊ฐ ํ์ ๋๋ ํฐ๋ฆฌ (/ etherpad)์ ์์ต๋๋ค. ๋ด ์ํ์น ๊ตฌ์ฑ์ ๋ค์์ ์ถ๊ฐํ์ฌ ์ฌ๋ฐ๋ฅด๊ฒ ๋ง๋ค์์ต๋๋ค.
<Location /static/font>
ProxyPass http://localhost:9001/static/font
ProxyPassReverse http://localhost:9001/static/font
</Location>
settings.json์์ ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์์์ต๋๋ค.
@skramsa ๋ ์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ์ธ๊ธํ์ง ์์์ผ๋ฏ๋ก ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํฉ๋๊น? Skramsa ์ค์ ์ ์ญ๋ฐฉํฅ ํ๋ก์๊ฐ ์๋์ง ํ์ธํ์ญ์์ค.
๋๊ฐ์ ๋ฌธ์ ๊ฐ์์์ต๋๋ค.
์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ์ฌ์ฉํ๊ณ Etherpad ์ธ์คํด์ค๊ฐ ํ์ ๋๋ ํฐ๋ฆฌ (/ etherpad)์ ์์ต๋๋ค. ๋ด ์ํ์น ๊ตฌ์ฑ์ ๋ค์์ ์ถ๊ฐํ์ฌ ์ฌ๋ฐ๋ฅด๊ฒ ๋ง๋ค์์ต๋๋ค.
<Location /static/font> ProxyPass http://localhost:9001/static/font retry=0 timeout=30 ProxyPassReverse http://localhost:9001/static/font </Location>
settings.json์์ ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์์์ต๋๋ค.
์ฌ์๋ ๋ฐ ์๊ฐ ์ด๊ณผ ๊ท์น์ด ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@skramsa ๋ ์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ์ธ๊ธํ์ง ์์์ผ๋ฏ๋ก ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํฉ๋๊น? Skramsa ์ค์ ์ ์ญ๋ฐฉํฅ ํ๋ก์๊ฐ ์๋์ง ํ์ธํ์ญ์์ค.
์,ํ์ง๋ง @julpec ์ ํ๋ก์ ๋ค์ ์์ผ๋ฏ๋ก ๋์์ด ๋ ์ ์์ง๋ง;)
๋๊ฐ์ ๋ฌธ์ ๊ฐ์์์ต๋๋ค.
์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ์ฌ์ฉํ๊ณ Etherpad ์ธ์คํด์ค๊ฐ ํ์ ๋๋ ํฐ๋ฆฌ (/ etherpad)์ ์์ต๋๋ค. ๋ด ์ํ์น ๊ตฌ์ฑ์ ๋ค์์ ์ถ๊ฐํ์ฌ ์ฌ๋ฐ๋ฅด๊ฒ ๋ง๋ค์์ต๋๋ค.<Location /static/font> ProxyPass http://localhost:9001/static/font retry=0 timeout=30 ProxyPassReverse http://localhost:9001/static/font </Location>
settings.json์์ ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์์์ต๋๋ค.
์ฌ์๋ ๋ฐ ์๊ฐ ์ด๊ณผ ๊ท์น์ด ํ์ํ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋น์ ์ด ๋ง์์, ํ์ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ์ด์ ์ ๋ฐ์ดํธ ํ ์๋๋ฌ ์ด๊ฒ์ํ์ต๋๋ค.)
@skramsa ๋ ์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ์ธ๊ธํ์ง ์์์ผ๋ฏ๋ก ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํฉ๋๊น? Skramsa ์ค์ ์ ์ญ๋ฐฉํฅ ํ๋ก์๊ฐ ์๋์ง ํ์ธํ์ญ์์ค.
์,ํ์ง๋ง @julpec ์ ํ๋ก์ ๋ค์ ์์ผ๋ฏ๋ก ๋์์ด ๋ ์ ์์ง๋ง;)
๊ฐ์ฌํฉ๋๋ค
์๋ฆผ :
๋ฐ๋ฉด์ ํฅ๋ฏธ๋ก์ด ์ ์ ํ๋ก์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ https์์ด ์๋น์ค์ ์ก์ธ์คํ๋ฉด ๋ฌธ์ ์์ต๋๋ค. ์์ด์ฝ์ด ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋ฉ๋๋ค !!
์ ๊ฒฝ์ฐ์๋ ํ๋ก์์ ๊ด๋ จ๋ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค.
๋ํ Etherpad ์ธ์คํด์ค์ ๋ง์ด๊ทธ๋ ์ด์ ์ํฉ์ ์์ผ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ ํ Etherpad๋ฅผ ์ ๋ฐ์ดํธํ์ต๋๋ค. ์ด์ ๋ก๊ทธ์์ด ๋ด์ฉ์ด ์์ต๋๋ค.
[2020-04-29 10:43:29.440] [ERROR] console - table is not configured with charset utf8mb4 -- This may lead to crashes when certain characters are pasted in pads
์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋คโฆ
์๋ฆผ :
๋ฐ๋ฉด์ ํฅ๋ฏธ๋ก์ด ์ ์ ํ๋ก์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ https์์ด ์๋น์ค์ ์ก์ธ์คํ๋ฉด ๋ฌธ์ ์์ต๋๋ค. ์์ด์ฝ์ด ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋ฉ๋๋ค !!
์ ๊ฒฝ์ฐ์๋ ํ๋ก์์ ๊ด๋ จ๋ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค.
๋ํ Etherpad ์ธ์คํด์ค์ ๋ง์ด๊ทธ๋ ์ด์ ์ํฉ์ ์์ผ๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง์ด๊ทธ๋ ์ด์ ํ ํ Etherpad๋ฅผ ์ ๋ฐ์ดํธํ์ต๋๋ค. ์ด์ ๋ก๊ทธ์์ด ๋ด์ฉ์ด ์์ต๋๋ค.
[2020-04-29 10:43:29.440] [ERROR] console - table is not configured with charset utf8mb4 -- This may lead to crashes when certain characters are pasted in pads
์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋คโฆ
์ด์ ๋ํด ๋ณ๋์ ๋ฌธ์ ๋ฅผ ๋ง๋์ญ์์ค. ์ฃผ์ ์ง์ ์ด ํ์ํฉ๋๋ค.
๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์ญ๋ฐฉํฅ ํ๋ก์ (Apache) ๋ค์ ์๊ณ (ํ์ฌ) ์ต์ ๋์ปค ์ปจํ
์ด๋๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค (1 ๋ถ ์ ์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ด).
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
etherpad/etherpad latest 878d71df1b8e 44 hours ago 273MB
๋๊ตฌ ๋ชจ์์ ์๋ณธ ๋ณด๊ณ ์์ ๋๊ฐ์ต๋๋ค. Etherpad๋ /pad/
์๋์์ ํ๋ก์๋์ง๋ง ๊ธ๊ผด์ /static/
์์๋ก๋๋์ด 404 ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
/static/
๋ ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ์์๋ ์ฌ์ฉ๋๋ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ๊ฒฝ๋ก์ด๊ธฐ ๋๋ฌธ์ @lucaguindani ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
์ข์์, ์ต๋ํ ๋นจ๋ฆฌ ์ ๋ ฌํ๊ฒ ์ต๋๋ค. ์ค๋์ด์ด์ผํ์ง๋ง ์ด๋ฒ ์ฃผ์ ๋ณํฉ๋์ง ์์ ์๋ ์์ผ๋ฏ๋ก ํจ์น๋ฅผ ์ ์ฉํด์ผ ํ ์๋ ์์ต๋๋ค.
์ถ์ ์ฃผ๊ฐ ์ดํ์ ์ฐ๋ฆฌ๋ ๋ชจ๋ ๊ฐ์กฑ๊ณผ ํจ๊ป ์๊ฐ์ ๋ณด๋ด๋ ค๊ณ ํฉ๋๋ค.
๋ด ์ํ์น ๊ตฌ์ฑ์ผ๋ก ์ด๊ฒ์ ๋ณต์ ํ ์ ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๋ฌธ์ ๊ฐ๋๋ Apache ์ค์ ์ ๋ถ์ฌ ๋ฃ์ ์ ์์ต๋๊น?
์ํค ๊ตฌ์ฑ์์ nginx๋ ํ ์คํธํ์ผ๋ฉฐ ๊ฑฐ๊ธฐ์์ ๋ณต์ ํ ์ ์์ต๋๋ค ./
์ฌ๋ฌ๋ถ ๋ชจ๋ ์ด์ํ Apache ์๋ชป๋ ๊ตฌ์ฑ / ํน์ดํ ๊ฒฝํ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ชจ๋ ์ํ์น ํ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ์ ์ด๋์ ์ป์์ต๋๊น? ์ฐ๋ฆฌ๋ ์ํค afaik์ ํ๋๋ฅผ ์ ๊ณตํ์ง ์์์ ๋น์ ์ด ๋ถ๋ํ ๊ฒ ๊ฐ์์? :ํผ
์ถ์ : ๋๋ ๊ฐ๋ฐ์ ๋ํด ํ ์คํธํ๊ณ ์๋๋ฐ ์ด๋ ๊ฑฐ์ ๋ฆด๋ฆฌ์ค atm์ด๊ณ nginx ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
server {
listen 80;
server_name pad.example.com;
access_log /var/log/nginx/eplite.access.log;
error_log /var/log/nginx/eplite.error.log;
location /pad {
rewrite /pad/(.*) /$1 break;
rewrite ^/pad$ /pad/ permanent;
proxy_pass http://localhost:9001/;
proxy_pass_header Server;
proxy_redirect / /pad/;
proxy_set_header Host $host;
proxy_buffering off;
}
location /pad/socket.io {
rewrite /pad/socket.io/(.*) /socket.io/$1 break;
proxy_pass http://localhost:9001/;
proxy_redirect / /pad/;
proxy_set_header Host $host;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr; # http://wiki.nginx.org/HttpProxyModule
proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
proxy_set_header Host $host; # pass the host header
proxy_http_version 1.1; # recommended with keepalive connections
# WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
location /static {
rewrite /static/(.*) /static/$1 break;
proxy_pass http://localhost:9001/;
proxy_set_header Host $host;
proxy_buffering off;
}
}
# we're in the http context here
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
๋๋ ์ด์ํ๊ฒ ๋ณด์ด๋ tests / frontend / index.html์ด ์คํจํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค.
๋๋ ๋ํ /pad/foo/p/blah
๋ฒ๊ทธ๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด Etherpad ์ธก์ ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธํ๋ ค๊ณ ์๋ํ์ต๋๋ค.
๋ด ์ํ์น ๊ตฌ์ฑ์ผ๋ก ์ด๊ฒ์ ๋ณต์ ํ ์ ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๋ฌธ์ ๊ฐ๋๋ Apache ์ค์ ์ ๋ถ์ฌ ๋ฃ์ ์ ์์ต๋๊น?
์ฌ๊ธฐ ๋ด ๊ฒ์ ๋๋ค.
<Location /pad/>
Order allow,deny
Allow from all
Options All +MultiViews -ExecCGI
AuthType Basic
AuthName "authentification"
AuthBasicProvider ldap
AuthLDAPURL "ldap://127.0.0.1:389/ou=****,dc=****,dc=****,dc=org"
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
require ldap-group cn=****,ou=***,dc=*****,dc=****,dc=org
ProxyPass http://localhost:9002/
ProxyPassReverse http://localhost:9002/
RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER,NS} (.+)
RewriteRule . - [E=RU:%1]
RequestHeader add X-Forwarded-User %{RU}e
</Location>
๊ฐ์ฌํฉ๋๋ค. ํ ์๊ฐ์ด ์ค๋ ๋ฐค ์๋ ํ ๊ฒ์ ๋๋ค.
์ฌ๋ฌ๋ถ ๋ชจ๋ ์ด์ํ Apache ์๋ชป๋ ๊ตฌ์ฑ / ํน์ดํ ๊ฒฝํ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ชจ๋ ์ํ์น ํ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ์ ์ด๋์ ์ป์์ต๋๊น? ์ฐ๋ฆฌ๋ ์ํค afaik์ ํ๋๋ฅผ ์ ๊ณตํ์ง ์์์ ๋น์ ์ด ๋ถ๋ํ ๊ฒ ๊ฐ์์? :ํผ
์ฌ๋ฌ๋ถ ๋ชจ๋ ์ด์ํ Apache ์๋ชป๋ ๊ตฌ์ฑ / ํน์ดํ ๊ฒฝํ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ชจ๋ ์ํ์น ํ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ์ ์ด๋์ ์ป์์ต๋๊น? ์ฐ๋ฆฌ๋ ์ํค afaik์ ํ๋๋ฅผ ์ ๊ณตํ์ง ์์์ ๋น์ ์ด ๋ถ๋ํ ๊ฒ ๊ฐ์์? :ํผ
๋๋ ๊ฑฐ๊ธฐ๋ฅผ ๋ณด์๊ณ ์์ ๋ Apache์ ํ์ ๋๋ ํ ๋ฆฌ์ Etherpad๋ฅผ ๋ฃ๋ ๊ฒ์ ๋ค๋ฃจ์ง ์์ต๋๋ค.
์๋ฅด๊ธฐ์ ์ฝ๊ฐ ์์ ๋ ๋ฒ์ ์ฌ์ฉ
<VirtualHost *:81>
<Location /pad/>
Order allow,deny
Allow from all
Options All +MultiViews -ExecCGI
ProxyPass http://localhost:9001/
ProxyPassReverse http://localhost:9001/
RewriteEngine On
RewriteCond %{LA-U:REMOTE_USER,NS} (.+)
RewriteRule . - [E=RU:%1]
</Location>
</VirtualHost>
jose<strong i="5">@server</strong>:~/develop$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built: 2020-03-13T12:26:16
๋๋ ๊ฑฐ๊ธฐ๋ฅผ ๋ณด์๊ณ ์์ ๋ Apache์ ํ์ ๋๋ ํ ๋ฆฌ์ Etherpad๋ฅผ ๋ฃ๋ ๊ฒ์ ๋ค๋ฃจ์ง ์์ต๋๋ค.
๋ง์ด๋์ง ์์ต๋๋ค. ์ํ๋ ๊ฒ์ ์์น ํ๊ทธ์ ๋ฃ์ ์ ์์ต๋๋ค. ํ์ง๋ง ์ง๊ธ์ "ํ์ ๋๋ ํ ๋ฆฌ"์์ด ๊ตฌ์ฑ์ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
์กฐ์ฌํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค btw
๋ง์ด๋์ง ์์ต๋๋ค. ์ํ๋ ๊ฒ์ ์์น ํ๊ทธ์ ๋ฃ์ ์ ์์ต๋๋ค. ํ์ง๋ง ์ง๊ธ์ "ํ์ ๋๋ ํ ๋ฆฌ"์์ด ๊ตฌ์ฑ์ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
๋ง์ด ์ ๋ผ์ ... ์ ๋จธ๋ฆฌ ์์ ์์. ํ์ง๋ง ํ์ค ์ธ๊ณ์์๋ ๊ทธ๊ฒ์ด ๋ฌธ์ ์ ์์ธ์
๋๋ค!
์ข์ ์ : +1 :
๊ทธ๋ฌ๋ ์ด์ ์๋ ๋ชจ๋ ๊ฒ์ด ์ ๊ทธ๋ ๊ฒ ์ ์๋ํ๋์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค.์ด๋ฅผ ๊ตฌ์ฑ์ผ๋ก ์ฌ์ฉํ๋ ์ญ๋ฐฉํฅ ํ๋ก์ ๋ค์์ ์๋
๋์ ์คํ๋์์ต๋๋ค.
์ํ์น "์ฑ๊ธ ์ฌ์ธ์จ (single sign-on)"๋ค์์ ์คํ๋๋ ๋ค๋ฅธ ์๋น์ค๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ ๋ง ํ์ ๋๋ ํ ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
์์น๋ก "/"์ด์ธ์ ๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๊น?
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์์ ๊ตฌ์ฑ ๋ณต์ฌ / ๋ถ์ฌ ๋ฃ๊ธฐ, ๋ค๋ฅธ ์์น๋ฅผ ์ฌ์ฉํฉ๋๋ค ...
์ธ์ฆ ์ค์ ์ ์ ์ธํ๊ณ ๋ ๋ด ์์ ๊ณผ์ ์ฐจ์ด์ ์ด ๋ณด์ด์ง ์์ต๋๋ค.
์ง๊ธ ์๋ํด ๋ณผ๊ฒ
์์ ๊ตฌ์ฑ ๋ณต์ฌ / ๋ถ์ฌ ๋ฃ๊ธฐ, ๋ค๋ฅธ ์์น๋ฅผ ์ฌ์ฉํฉ๋๋ค ...
์ฌ์ ํ ๊ฐ์ ๋ฌธ์ : ์์ด์ฝ ํ์ ์์
Apache ๋ฒ์ ?
์๋ฒ ๋ฒ์ : Apache / 2.4.38 (Debian)
์๋ฒ ๊ตฌ์ถ : 2019-10-15T19 : 53 : 42
์์ ๊ฒ์ฌ๊ธฐ๋ก ์กฐ์ฌํ๋๋ฐ ์ด๊ฒ์ด ๊ทธ๊ฐ ๊ธ๊ผด์ URL๋ก ์ ๊ณต ํ ๊ฒ์ ๋๋ค.
Request URL: https://example.org/static/font/RobotoMono-Regular.ttf
๊ทธ๊ฒ์ํด์ผํ๋ค:
Request URL: https://example.org/pad/static/font/RobotoMono-Regular.ttf
"pad"ํ์ ๋๋ ํ ๋ฆฌ๊ฐ์๋ ์ด์ ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค.
๊ทธ๋์ ์ ๋ ์๋ก์ด ํธ์คํธ์์ ์ฒ์๋ถํฐ ์์ํ์ต๋๋ค.
docker run --name etherpad -d \
-e NODE_ENV=production -p 9001:9001 \
--mount type=bind,src=/etc/localtime,dst=/etc/localtime \
--restart=unless-stopped \
etherpad/etherpad
์๋ ๊ตฌ์ฑ์์ ๋ณ๊ฒฝ๋ ์ฌํญ์ด ์์ต๋๋ค.
Apache ๊ตฌ์ฑ :
<VirtualHost _default_:443>
ServerName host
<Proxy *>
Require all granted
</Proxy>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /pad/ http://localhost:9001/
ProxyPassReverse /pad/ http://localhost:9001/
SSLCertificateFile /etc/apache2/ssl/host.example.com_cert_with_chain.pem
SSLCertificateKeyFile /etc/apache2/ssl/host.example.com_sec_key.pem
SSLCertificateChainFile /etc/apache2/ssl/chain.pem
</VirtualHost>
Apache ๋ฒ์ ์ 2.4.29์ ๋๋ค.
๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ์ง์ฐ๊ณ ๊ฒฐ๊ณผ :
๊ธฐ๋ฌํ. Docker ์ด๋ฏธ์ง๋ฅผ ๋ก์ปฌ์์ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝ๋๋์ง ํ์ธํ๊ฒ ์ต๋๋ค.
@JohnMcLear ์ ๋ง ๋ฏฟ์ ์ ์์ต๋๋ค. ํฌํธ 81, ๋ณ๋์ ๊ฐ์ ํธ์คํธ ๋ฑ์์ ์ ํํ ๋์ผํ ๊ตฌ์ฑ์ผ๋ก ์๋ํ์ง๋ง ๋ฌธ์ ๊ฐ ๊ณ์ ๋ฐ์ํฉ๋๋ค.
๋งค๋ฒ ์บ์๋ฅผ ๋น ์ ์ต๋๋ค.
๋ด ์ํํธ์จ์ด ๋ฒ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
node: v10.20.1
npm: 6.14.4
apache2: Apache/2.4.38 (Debian)
etherpad: 1.8.3 (6210114)
๋๋ ๋๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํ๋ก์ (nginx)๋ฅผ ํตํด ์คํ๋๊ณ ์ถ์๊ฐ true๋ก ์ค์ ๋๋ฉด ์์ด์ฝ์ด ๋๋ฝ๋ฉ๋๋ค. minify๋ฅผ false๋ก ์ค์ ํ๊ณ clearRun.sh๋ก ์์ํ๊ณ ๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ์ง์ฐ ์๋ง์ ์์ด์ฝ์ด ์๋ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ฝค ์ค๋ซ๋์ ์ฌ์ฉํ๋ ์ด์ ๋ฒ์ ์์๋ minify : true ๋ฐ์ด Nginx ๊ตฌ์ฑ์ผ๋ก ์์ ํ์ต๋๋ค.
server {
listen 80;
listen 443 ssl;
include snippets/mortis2-ssl.conf;
server_name mortis2;
location /pad/
{
#proxy_pass http://localhost:9001/;
proxy_set_header Host $host;
proxy_buffering off;
}
}
@JohnMcLear ์ nginx ๊ตฌ์ฑ์ ์ฌ์ฉํ๊ณ ๋ค์ ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ํ๋ค๋ ๊ฒ์
์๋์ค์ธ Nginx ๊ตฌ์ฑ :
server {
listen 80;
listen 443 ssl;
include snippets/mortis2-ssl.conf;
server_name mortis2;
location /pad/
{
rewrite /pad/(.*) /$1 break;
rewrite ^/pad$ /pad/ permanent;
proxy_pass http://localhost:9001/;
proxy_pass_header Server;
proxy_set_header Host $host;
proxy_buffering off;
}
location /pad/socket.io {
rewrite /pad/socket.io/(.*) /socket.io/$1 break;
proxy_pass http://localhost:9001/;
proxy_redirect / /pad/;
proxy_set_header Host $host;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr; # http://wiki.nginx.org/HttpProxyModule
proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
proxy_set_header Host $host; # pass the host header
proxy_http_version 1.1; # recommended with keepalive connections
# WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
proxy_set_header Upgrade $http_upgrade;
#proxy_set_header Connection $connection_upgrade;
}
location /static {
rewrite /static/(.*) /static/$1 break;
proxy_pass http://localhost:9001/;
proxy_set_header Host $host;
proxy_buffering off;
}
}
Op๋ minify true / false๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค๊ณ ๋งํ์ต๋๋ค. Op๋ ๋ํ rev proxy๋ฅผ ์ธ๊ธํ์ง ์์์ต๋๋ค .... ์ง์ ๋์ฐฉํ๋ฉด minify true๋ก ํ์ธํ๊ฒ ์ต๋๋ค.
์ถ์๋ก ์ธํ ๊ฒ์์ ํ์ธํ์ต๋๋ค.
https://github.com/ether/etherpad-lite/issues/3956#issuecomment -620476150์ minify false
์ ๋ํด ์๋ฌด๋ฐ ์ฐจ์ด๊ฐ ์๋ค๊ณ ์ฃผ์ฅํ์ผ๋ฉฐ ๊ทธ๊ฒ ์ฌ์ค์ธ์ง ์ง์ ํ์ธํด์ผํ์ต๋๋ค ..
* ํ์ด์ค ํ.
์ต๋ํ ๋นจ๋ฆฌ ๊ณ ์น ๊ฒ์ ๋๋ค.
FWIW Nginx๋์ด ์ค๋ฅ๋ก ์ธํด ์ด๋ ค์์ ๊ฒช์ผ๋ฉฐ ๋ชจ๋ ํ์ด์ง (ํจ๋, ์ธ๋ฑ์ค, ํ์ ์ฌ๋ผ์ด๋ ๋ฑ)์ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
๋ฌธ์ ๋ clean-css
๊ตฌํ์ ์์ต๋๋ค. CSS 3-4๋ relativeTo
์ต์
์ ์ ๊ฑฐํ์ผ๋ฉฐ์ด ์ ๊ฑฐ๋ก ์ธํด์ด ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ด ์์์ rebase
๋ฐ rebaseTo
ํ์ต๋๋ค.
https://github.com/JohnMcLear/etherpad-lite/commit/e684a3ba4129d1bae54e7b65a316a7d690217241 ์ด๋ฉฐ ์ธ๋ฏธ ์์ ์ด๋ฉฐ https://github.com/JohnMcLear/etherpad-lite/commit/a8c66b3b513b058e89f70b8e8d5ab622b33fhack . ์์ด์ฝ์ด ๋ํ๋์ง๋ง ์ผ๋ถ ํจ๋ ๋ด๋ถ ๋ฐ ๊ธฐํ ํญ๋ชฉ์ ๋ํ ๊ธ๊ผด์ด ์๋ชป๋์์ต๋๋ค.
์ด๋ค ์ ์ @jakubpawlowicz @seballot ?
@JohnMcLear ์ด ์๋ํ๋๋ก ๋ง๋๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์์์ ๋ณํ์ ์ด์ฉํ๋ ๊ฒ์ ๋๋ค. https://github.com/jakubpawlowicz/clean-css#how -to-apply-arbitrary-transformations-to-css-properties
๋ค๋ฅธ ์์ด๋์ด๋ ํด์๋ฅผ ํตํด clean-css์ ์ ๋ ฅ ์ต์ ์ ์ ๋ฌํ๋ ๊ฒ์ ๋๋ค. https://github.com/jakubpawlowicz/clean-css/blob/master/test/module-test.js#L620 ์ฐธ์กฐ
new CleanCSS().minify({"path/to/stylesheet/a.css": { styles: "/* source of a.css goes here */" }})
rebaseTo
์ต์
์ ์ฌ์ฉํ์ง๋ง ๋ ์ด์์ ํต์ฐฐ๋ ฅ ์์ด๋ ์๋ํ ์ง ์ฌ๋ถ๋ฅผ ์ ์ ์์ต๋๋ค.
ํ์ด์ ๋น๋๋ค!
๋ซํ์ต๋๊น? ์ ๋ง ?
OP ๋ซํ ... ๋ซํ๋ฉด ์๋ฉ๋๋ค. OP FWIW๋ ํ๋ก์ฐ ํด์ ๋๋ ๊ตฌ๋ ํด์ ๋๋ ์์์ ์ํ์ง ์๋ ๊ฒฝ์ฐ ํด๋ฆญ ํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ฌ์ ํ โโํด๊ฒฐ๋์ง ์์์ต๋๋ค. EOW์ ์ํด ํจ์น๊ฐ ์๋ค๋ฉด ํจ์น๋ฅผ ์๋ ํ ๊ฒ์ ๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ์๊ฐ์ ๋ผ ์ ์๋ค๋ฉด ์ปค๋ฎค๋ํฐ ํจ์น๋ฅผ๋ณด๊ณ ์ถ์ต๋๋ค.
@JohnMcLear ์ ๋ง ๋์์์ฃผ๊ณ ์๊ฐ์ ํ ์ ํ๊ณ ์ถ์ง๋ง ์ ๋ ๊ฐ๋ฐ์ ๊ธฐ์ ์ด์๊ณ nodejs์๋ ๋ ์ ์ต๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ด ํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ด ์๊ฐ์ผ๋ก ๋ง ์ง์ํ ์ ์์ต๋๋ค ...
๊ฐ์ฌํ์ง๋ง, ๋น์ ์ ์๊ฐ์ ๊ธฐ์ ๊ท๋ฅผ ๋ฐ๊พธ์ง ์์ต๋๋ค;)
๋ฒํ @seballot
์๋ ํ์ธ์, ์ด๊ฒ์ ๋ํด ๋ง์ ์๊ฐ์ด ์์ต๋๋ค ์ฃ์กํฉ๋๋ค ... ๋ก์ปฌ๋ก ์ฌํ ํ ์์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
develop
minify
์์ true
server {
listen 80;
server_name pad.example.com;
access_log /var/log/nginx/eplite.access.log;
error_log /var/log/nginx/eplite.error.log;
location /pad/foo {
rewrite /pad/foo/(.*) /$1 break;
rewrite ^/pad/foo$ /pad/foo permanent;
proxy_pass http://localhost:9001/;
proxy_pass_header Server;
proxy_redirect / /pad/foo;
proxy_set_header Host $host;
proxy_buffering off;
}
location /pad/foo/socket.io {
rewrite /pad/foo/socket.io/(.*) /socket.io/$1 break;
proxy_pass http://localhost:9001/;
proxy_redirect / /pad/foo/;
proxy_set_header Host $host;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr; # http://wiki.nginx.org/HttpProxyModule
proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
proxy_set_header Host $host; # pass the host header
proxy_http_version 1.1; # recommended with keepalive connections
# WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
location /static {
rewrite /static/(.*) /static/$1 break;
proxy_pass http://localhost:9001/;
proxy_set_header Host $host;
proxy_buffering off;
}
}
# we're in the http context here
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
cleanCSS
์ ../../../
๋ค์ ์์ฑํ๊ธฐ ๋๋ฌธ์
๋๋ค. ํจ๋์ ํธ์ง๊ธฐ ๋ชจ๋ ๋์ผํ @ font.css๋ฅผ ์ฌ์ฉํ๊ณ ๋ ๋ค "๋ค๋ฅธ basePaths"๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ํ๋๋ ์๋ํ๊ณ ํ๋๋ ์ถ์์ ์๋ํ์ง ์์ต๋๋ค. ๋๋ ์ฐ์ํ ์์ ์ ์๊ฐํ ์ ์์ง๋ง ๋น์ ์ด ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๊น?@seballot ์ด๋ค ์งํ ์น๊ตฌ?
์ฃ์กํฉ๋๋ค. ํด๊ฒฐ์ฑ ์ ์ฐพ์ ์ ์์ต๋๋ค ...
๋๋, cleanCSS๋ ๋ด๊ฐ ์ดํดํ์ง ๋ชปํ๋ ๋ง๋ฒ์ ์ํํ๊ณ ์์ผ๋ฉฐ (๋๋ CSS ์ฌ๋์ด ์๋๋๋ค) ๋ด ์ธ์คํด์ค๊ฐ ํ์ ๋๋ ํ ๋ฆฌ์์ ์คํ๋์ง ์์ผ๋ฏ๋ก ๋ฐฐ์ฐ๋ ๊ฒ๋ ํฅ๋ฏธ๋กญ์ง ์์ต๋๋ค.
๋๋ ์ํ์ง ์์ง๋ง csso๋ฅผ ์๋์ํฌ ์ ์๊ธฐ ๋๋ฌธ์ cleanCSS๋ฅผ csso๋ก ๋์ฒดํด์ผ ํ ์๋ ์์ง๋ง ๊ถ๊ทน์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ ๋๋ก ํด๊ฒฐํ์ง ๋ชปํ๊ณ ์๋ค๊ณ ์๊ฐํ๋ฉฐ csso๋ ์ฌ์ฉ ์ฌ๋ก์์ cleanCSS๋งํผ ์ฑ๋ฅ์ด ์ข์ง ์์ต๋๋ค. .
๋๋ ์ฐ๋ฆฌ๊ฐ ํด๊ฒฐํ๊ธฐ ์ํด ํ๋ ฅ ํ ์ ์๋์ง ํ์ธํ๊ธฐ ์ํด cleanCSS dev์ ๋ถ๋ช์ณค๋ค. :)
์ข์! csso์ ์ ์๋ํ๋ค๋ฉด ์ ํจ๊ปํ์ง ์๊ฒ ์ต๋๊น?
csso๋ ์ถ์๋์ง๋ง ํ์ด์ง๋ก๋ ์๋ฅผ ์ค์ด์ง ์์ต๋๋ค. ๋ํ ๋๋ ํ๋ก์ ํธ / ๋ฌธ์ ๋ฑ์ผ๋ก cleanCSS๋ฅผ ์ ํธํ๊ณ ์ข์ ํ๋ก์ ํธ์ ์ฝ๊ฐ์ ์์์ ๋์ ธ๋ ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๊ฒ์ ๋ด๊ฐ Ether ํน์ ๋ฒค์ฒ์ ์ง์คํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด ์ค๋ ๋์์์ ๋์ผํ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค.
๋๊ตฐ๊ฐ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์๋ดํด ์ค ์ ์์ต๋๊น? settings.json ํ์ผ์๋ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ settings.json์์ minify๋ฅผ false๋ก ์ค์ ํ๋ ๊ฒ์ ๋๋ค.
์ค๋ ๋ฐค ํ๋ฒ ๋ณด๋๋กํ๊ฒ ์ต๋๋ค.
์ด ๋ฌธ์ ์์ John์ด https://github.com/ether/etherpad-lite/issues/3956#issuecomment -625163151์์ ์ ๊ณต ํ nginx ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ๋ณต์ ํ ์์์์ต๋๋ค.
๊ฒ์ ๋ Nginx ๊ตฌ์ฑ๊ณผ Etherpad ์ฝ๋ ๋ชจ๋ ์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ๋์ค์.
nginx ์ฝ๋๋ฅผ ๋ณด๋ ๋ฐ 2 โโ์ด๋ฅผ ๋ณด๋๊ณ ๋ณต์ฌ / ๋ถ์ฌ ๋ฃ๊ธฐ์์๋ ๊ฒ์ฒ๋ผ /static
๋ํ ๊ตฌ์ฑ์ด ์์ด์ผํ์ง๋ง ๋ฌธ์ ์ ๊ทผ์์ cleanCSS์ ๊น์์ด ์์ต๋๋ค.
์ฌ๊ธฐ์๋ ๋ค์ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
ํ
์คํธ Nginx ๊ตฌ์ฑ ํ์ผ์ /static
๋ํ ์๋ชป๋ ๋ฆฌ๋๋ ์
์ด ์์ต๋๋ค. ์ ์ฒด location /static
์น์
์์ ์ญ์ ํด์ผํฉ๋๋ค ์ฌ๊ธฐ . ์์ฆ๋ฐ์ ์ด๋ฉ์ผ ํญํ ์์ ์ฌ์ฉ์๊ฐ /static
๊ฐ ๋ค๋ฅธ ๋ง์ ์น ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ์ถฉ๋ ํ ๊ฒ์ด๋ผ๊ณ ๋ถํ ํ ๊ฒ์ ๊ธฐ์ตํ๊ณ ์์ต๋๋ค. ์๋ง๋ ๊ทธ๋ ์ด์ ์ ์ฌํ ์์ ์ํด ์คํด๋ฅผ ๋ฐ์์ ๊ฒ์
๋๋ค.
์ด๊ฒ์ ๋ฌธ์ (์ํค? โโ์ธํฐ๋ท์์ Somehwere ๋ค๋ฅธ?)๋ฅผ ํตํด ์์ ํ๊ณ ์์ ์ ํ์ง์ ๊ฐ์ ํด์ผํฉ๋๋ค .
4177b3f9434e๊ฐ font-face
์ ์ธ์ src/static/css/pad.css
์์ ๊ฐ์ ธ์จ ๋ ํ์ผ ( src/static/css/pad/fonts.css
๋ฐ src/static/css/pad/toolbar.css
)๊ณผ src
URL๋ก ์ด๋ํ์ต๋๋ค. ์คํ์ผ ์ํธ ๊ฒฝ๋ก์ ์๋์ ์
๋๋ค .
๊ฒ๋ค๊ฐ, ๋ค๊ฐ์ค๋ 1.8.4 ์ฉ์ผ๋ก 95fd5ce2a45e๋ฅผ ๋ณํฉ ํ ํ์๋ ํด๊ฒฐํด์ผ ํ ์บ์ ๋ถ์ค ๋ฌธ์ ๊ฐ ์๊ฒผ์ต๋๋ค.
๋ช ๊ฐ์ง ํ ์คํธ๋ฅผํ๊ณ PR์ ์ค๋นํ๊ณ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด # 4002๋ฅผ ์ด์์ต๋๋ค. ์๋น ์์ ์ ๋ํด @JohnMcLear ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@skramsa , @julpec , @lucaguindani , @ashishhari (๊ทธ๋ฆฌ๊ณ John, ๋ถ๋ช ํ) : PR์ด ํจ๊ณผ๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด PR์ ํ ์คํธํ๋ ์์น์์๋ ์ฌ๋์ด ์์ต๋๊น? ๊ฐ๋ฅํ๋ฉด ๋ ๋ฆฝ์ ์ธ ๊ฒ์ฆ์ ์ํฉ๋๋ค.
๋ํ ์ญ๋ฐฉํฅ ํ๋ก์ ๊ตฌ์ฑ์๋ "/ static"์ ๋ํ ํน๋ณํ ๊ท์น์ด ํ์ํ์ง ์์ต๋๋ค.
์ํด ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์ถ์๋ฅผ false๋ก ์ค์ ํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค.
๋์๊ฒ ๋ฌธ์ .
AWS EC2 ์ธ์คํด์ค์ jitsi ์ค์น์์ ์ด๊ฒ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
jitsi๋ฅผ ํธ์คํ
ํ๊ณ ๋
ธ๋๋ฅผ ์์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ nginx ์๋ฒ์
๋๋ค.
ํฌํธ 9001์์ ๋์ผํ ์์คํ
์ etherpad ์๋น์ค ์ฉ ์๋ฒ.
์ด๊ฒ์ ๋ค๋ฅธ nginx ์ค์ ์ ์กฐ์ ํด์ผ ํ ์๋ ์์์ ์๋ฏธํฉ๋๊น? (๋๋
์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ์ง๋ง ๊ทธ๋ด ์ ์์ต๋๊น?), ์๋๋ฉด
์์ ์ฌํญ์ ์ฌ์ฉํ ์์์ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ฉด๋ฉ๋๋ค.
2020 ๋ 5 ์ 14 ์ผ ๋ชฉ์์ผ ์ค์ 6:07 muxator [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ฌ๊ธฐ์๋ ๋ค์ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
1.
ํ ์คํธ Nginx ๊ตฌ์ฑ ํ์ผ์ / static์ ๋ํ ์๋ชป๋ ๋ฆฌ๋๋ ์ ์ด ์์ต๋๋ค. ๊ทธ๋งํผ
์ฌ๊ธฐ์์ ์ ์ฒด ์์น / ์ ์ ์น์ ์ ์ญ์ ํด์ผํฉ๋๋ค.
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-625163151
์ด๋ฌํ ์ผ ๋์๋ฐ์ ์ด๋ฉ์ผ ํญํ, ๋๋ํ๋ ๊ธฐ์ต ์๊ฐ์ฌ์ฉ์๋-์ค์ ๋ก-/ static์ด ๋ง์๋ค๋ฅธ ์น ์์ฉ ํ๋ก๊ทธ๋จ . ์๋ง๋ ๊ทธ๋ ๋น์ทํ ์์ ์ํด ์คํด๋์์ ๊ฒ์ ๋๋ค.
์ด๊ฒ์;๋ฌธ์ (์ํค?
์ธํฐ๋ท์ ๋ค๋ฅธ Somehwere?) ๋ฐ ํ์ง ํฅ์์ .
2.4177b3f
https://github.com/ether/etherpad-lite/commit/4177b3f9434e8516f8fe4f8e02b2a75ce5d64173
๊ธ๊ผด ํ๋ฉด ์ ์ธ์ src / static / css / pad.css์์ 2 ๊ฐ๋ก ์ด๋ํ์ต๋๋ค.
๊ฐ์ ธ์จ ํ์ผ (src / static / css / pad / fonts.css ๋ฐ
src / static / css / pad / toolbar.css)๋ฅผ ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ์, URL์
src๋ ์คํ์ผ ์ํธ ๊ฒฝ๋ก์ ์๋์ ์ ๋๋ค.
https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src ;
์ผ.๊ทธ ์์ 95fd5ce๋ฅผ ๋ณํฉ ํ ํ
https://github.com/ether/etherpad-lite/commit/95fd5ce2a45e31980ad8c2562e3fe6f77c52d4ff
์์ผ๋ก ๋์ฌ 1.8.4 ์์๋ ์บ์ ๋ถ์ค ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ํ ํด๊ฒฐํด์ผํฉ๋๋ค.๋ช ๊ฐ์ง ํ ์คํธ๋ฅผํ๊ณ PR์ ์ค๋นํ๊ณ ์์ต๋๋ค.
โ
๋๊ธ์ ๋ฌ์ ๊ธฐ ๋๋ฌธ์ ์์ ํ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628317976 ,
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AH7VXAS65ZUAR33CPKSI6OLRRM4KZANCNFSM4MSSRTRQ
.
@skramsa , @julpec , @lucaguindani , @ashishhari (๊ทธ๋ฆฌ๊ณ John, ๋ถ๋ช ํ) : PR์ด ํจ๊ณผ๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด PR์ ํ ์คํธํ๋ ์์น์์๋ ์ฌ๋์ด ์์ต๋๊น? ๊ฐ๋ฅํ๋ฉด ๋ ๋ฆฝ์ ์ธ ๊ฒ์ฆ์ ์ํฉ๋๋ค.
ํ
์คํธ ํด ๋ณด๊ฒ ์ต๋๋ค. static
๋ํ ํน๋ณํ ๊ตฌ์ฑ์ด ์์ต๋๋ค.
์ํด ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. minify๋ฅผ false๋ก ์ค์ ํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํฉ๋๋ค. ์ํ์น์์ ๋๋ ๊ฑฐ์ง์ผ๋ก ์ ํํ๊ณ ๋ชจ๋ ๊ฒ์ด ์ ์๋ํ๊ธฐ ์์ํ์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ ์ํ ํ ์์๋ค.
2020 ๋ 5 ์ 14 ์ผ ๋ชฉ์์ผ ์คํ 1์ 30 ๋ถ julpec [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (๊ทธ๋ฆฌ๊ณ John, ๋ถ๋ช ํ) : ๋น์ ์ ๋๊ตฐ๊ฐ์ ๋๋ค
PR์ด ํจ๊ณผ๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด ํด๋น PR์ ํ ์คํธํ๋ ์์น์ ์์ต๋๊น? ๋๋
๊ฐ๋ฅํ๋ค๋ฉด ๋ ๋ฆฝ์ ์ธ ๊ฒ์ฆ ์ฒ๋ผ์.ํ ์คํธ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ ์ ์ ๋ํ ํน๋ณํ ๊ตฌ์ฑ์ด ์์ต๋๋ค.
์ํด ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ถ์๋ฅผ false๋ก ์ค์ ํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค.
๋์๊ฒ ๋ฌธ์ .๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํฉ๋๋ค. ์ํ์น์์ ๋๋ ๊ฑฐ์ง๊ณผ ๋ชจ๋ ๊ฒ์ผ๋ก ์ ํํ์ต๋๋ค.
์ ์๋ํ๊ธฐ ์์ํ์ต๋๋ค.โ
๋น์ ์ด ์ธ๊ธ ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.
๋ํ ํ์ธ-> minify๋ฅผ false๋ก ์ค์ ํ๋ฉด ๋ด ์์คํ
์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํฉ๋๋ค.
(์ง๋๋ฒ์ ์๋น์ค๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ค์ ์์ํ์ง ์์์ ๊ฒ์
๋๋ค).
2020 ๋ 5 ์ 14 ์ผ ๋ชฉ์์ผ ์คํ 1์ 30 ๋ถ julpec [email protected] ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@skramsa https://github.com/skramsa , @julpec https://github.com/julpec ,
@lucaguindani https://github.com/lucaguindani , @ashishhari
https://github.com/ashishhari (๊ทธ๋ฆฌ๊ณ John, ๋ถ๋ช ํ) : ๋น์ ์ ๋๊ตฐ๊ฐ์ ๋๋ค
PR์ด ํจ๊ณผ๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด ํด๋น PR์ ํ ์คํธํ๋ ์์น์ ์์ต๋๊น? ๋๋
๊ฐ๋ฅํ๋ค๋ฉด ๋ ๋ฆฝ์ ์ธ ๊ฒ์ฆ ์ฒ๋ผ์.ํ ์คํธ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ ์ ์ ๋ํ ํน๋ณํ ๊ตฌ์ฑ์ด ์์ต๋๋ค.
์ํด ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ถ์๋ฅผ false๋ก ์ค์ ํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์์ต๋๋ค.
๋์๊ฒ ๋ฌธ์ .๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํฉ๋๋ค. ์ํ์น์์ ๋๋ ๊ฑฐ์ง๊ณผ ๋ชจ๋ ๊ฒ์ผ๋ก ์ ํํ์ต๋๋ค.
์ ์๋ํ๊ธฐ ์์ํ์ต๋๋ค.โ
๋น์ ์ด ์ธ๊ธ ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/ether/etherpad-lite/issues/3956#issuecomment-628464590 ,
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AH7VXAXKTJKZCAZVRXZIJX3RROQLPANCNFSM4MSSRTRQ
.
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํฉ๋๋ค. ์ํ์น์์ ๋๋ ๊ฑฐ์ง์ผ๋ก ์ ํํ๊ณ ๋ชจ๋ ๊ฒ์ด ์ ์๋ํ๊ธฐ ์์ํ์ต๋๋ค.
๋ํ ํ์ธ-> minify๋ฅผ false๋ก ์ค์ ํ๋ฉด ๋ด ์์คํ ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํฉ๋๋ค.
@julpec , @ashishhari : ํด๊ฒฐ ๋ฐฉ๋ฒ ์
๋๋ค.
์ด์ ํฌ๋ง์ # 4002๊ฐ minify = true ์ผ ๋ ๋ฒ๊ทธ๋ฅผ ์์ ํ๋์ง ํ์ธํ๋ ๊ฒ์
๋๋ค.
์ ์ฐจ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ชจ๋ ๋จ๊ณ๊ฐ ๋ช ํํ ๊ฒฝ์ฐ์๋ง ์ํํ์ญ์์ค.
๋ฒ๊ทธ ๋ณต์ ์์ :
true
์์ minify
= true
settings.json
์์ ์๋ :
minify
= true
๋ฅผ settings.json
์ํ์ง๋ง PR ์ ์ฒญ ์ ์ฐจ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค :(
๊ฐ์ฌํฉ๋๋ค @muxator ๋๋ ํ ์๊ฐ ๋ด์ ํ ์คํธ ํ ๊ฒ์ ๋๋ค.
์ค ์์ฐ ๋๋ ๊ทธ ์์ ์ ๊ฒฐ์ฝ ์๊ฐํ์ง ๋ชปํ์ ๊ฒ์ ๋๋ค! ๊ทธ๊ฒ์ ๊ดด์ง์ ๋๋ค.
git remote add mux https://github.com/muxator/etherpad-lite/
git fetch mux
git checkout mux/fix/fonts-behind-reverse-proxy
ํ ์คํธํ๊ณ ์ถ์ ๋ถ๋ค์ ์ํด ..
ํ
์คํธ ํ git checkout develop
๊ธฐ์ตํ์ญ์์ค. ๊ทธ๋ ์ง ์์ผ๋ฉด mux์ ๋ถ์ค ๋ธ๋์น์ ์์ต๋๋ค
๊ฐ์ฌํฉ๋๋ค, ์ค๋ ์คํ์ ํ ์คํธํ๊ฒ ์ต๋๋ค
ํ , @muxator .. ๋ญ๊ฐ ์ฑ๋ฅ์ด ์ข์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ~ 54 ๊ฐ์ ์์ฒญ์๋ณด๊ณ ์์ต๋๋ค. ~ 49 ๊ฐ (ํ์ฌ develop
)-์ถ๊ฐ ์์ฒญ์ ์ ๊ณต ํ ์์๋ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค. ๋ฐ๋ผ์์ด PR์ IMHO๊ฐ ํ์ฉ๋์ง ์๋ ๋ฌธ์ํ๋์ง ์์ / ์ง์๋์ง ์๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ถฉ์กฑํ๊ธฐ์ํ ํ์ด์ง๋ก๋ ์ฑ๋ฅ ํ๊ท์
๋๋ค.
๋์ผํ ํ์ผ์ ๋ํ ์ฌ๋ฌ ์์ฒญ์ ์ ์ํ์ญ์์ค ... :( defo ์งํ ์ํ์ด์ง๋ง ๋์ผํ ํ์ผ์ ๋ํ ์ฌ๋ฌ ์์ฒญ์ ์ฐ๋ฆฌ๊ฐ ์ฐพ๊ณ ์๋ ์๋ฃจ์ ์ด ์๋๋๋ค.
์ฌ๋ฌ ์์ฒญ์ด ๋ค๋ฅธ iframe์์ ์จ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฉ์ธ ํ์ด์ง์ ์๋ํฐ iframe ๋ชจ๋ ๊ธ๊ผด์ด ํ์ํฉ๋๋ค. ํญ์ ์ด๋ ์ง ์์ต๋๊น?
afaik cleanCSS๋ @seballot ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ๋์์ต๋๋ค.
ํญ์ ์ด๋ฌ์ด?
์, ํญ์ ์ด๋ฌ์ต๋๋ค.
๋๋ cleanCss๊ฐ ๊ฐ CSS ๋ถ๋ถ (pad / popups.css, pad / editbar.css, pad / chat.css ...)์๋ก๋ํ๋ ๊ฒ์ ํผํ๊ณ ๋์ ํ๋์ pad.css ๋ง๋ก๋ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฌ๋ iframe์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๋ iframe๊ณผ์ ๊ฐ ํ์ผ ๊ณต์ ๋ฅผ ๋ ๋ฒ ์์ฒญํด์ผํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ ๋ฒ์งธ ํธ์ถ์ ๋ก์ปฌ ์บ์๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค ( "์บ์์์๋ก๋ ๋จ").
ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ฉํ๋๋ฐ ์๋ฌด ๋ฌธ์ ์์ด ์๋ํฉ๋๋ค (์ํ์น ์ฌ์ฉ)
๊ฐ์ฌํฉ๋๋ค @julpec.
์ค๋ ์ ๋ ์๋ @JohnMcLear๊ฐ ์ ๊ธฐ ํ ์์ฒญ ์์ ๋ํด ์ค๋ช
๋ฉ์ง tnx mux
Github ์ด๋๊ฐ์ HAR ํ์ผ์ ์ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? # 4002๋ฅผ ํ ์คํธํ๊ณ ๋ น์ ๋ด์ฉ์ ๊ณต์ ํ ์ํฅ์ด ์์ง๋ง ์ด๋์ ์ ๋ก๋ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ณตํต ์์ :
๋ณ์:
์ด๊ฒ๋ค์ 4 ๊ฐ์ ์ด์ง ๋ณ์-> 2 ^ 4 = 16 ๊ฐ๋ฅ์ฑ ์
๋๋ค.
์ด๊ฒ์ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค!
๊ด๋ จ์ฑ์ด ๋ ๋์ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ์ค๋ช
| ํ์ฌ ๊ฐ๋ฐ (4816785aef45) | PR # 4002 |
| ---- | ---- | ---- |
| Firefox, ์ถ์, ์ฒซ ๋ฒ์งธ๋ก๋ | 34 ๊ฐ ์์ฒญ
1,61 ๋ฉ๊ฐ ๋ฐ์ดํธ
1.61MB ์ ์ก ๋จ | 36 ๊ฐ ์์ฒญ
1,61 ๋ฉ๊ฐ ๋ฐ์ดํธ
1.53MB ์ ์ก |
| Firefox, ์ถ์ ๋ ํซ ์บ์ | 29 ๊ฐ ์์ฒญ
1,12 ๋ฉ๊ฐ ๋ฐ์ดํธ
216KB ์ ์ก ๋จ | 31 ๊ฐ ์์ฒญ
1,18 ๋ฉ๊ฐ ๋ฐ์ดํธ
216KB ์ ์ก ๋จ |
| Chromium, ์ถ์, ์ฒซ ๋ฒ์งธ๋ก๋ | 44 ๊ฐ ์์ฒญ
2,0MB
์ ์ก ๋ 1,5 MB | 109 richieste
3,0MB
์ ์ก ๋ 1,1MB |
| Chromium, ์ถ์ ๋, ํซ ์บ์ | 45 ๊ฐ ์์ฒญ
2,2MB
5,7KB ์ ์ก ๋จ | 129 ๊ฐ ์์ฒญ
4,7 ๋ฉ๊ฐ ๋ฐ์ดํธ
4,7KB ์ ์ก |
๊ฒฐ๋ก ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๊ฒ๋ ๋ด ๊ฒฐ๊ณผ ์๊ณ , ๋ํ ์๊ฐ์๋ด์ด ํ์ด์ง๋ก๋ ์๋ ์ฑ๋ฅ ํ๋กํ์ผ ๋ง ๋๊ตฌ (๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ๋์ด์)๋ฅผ ์กฐ์ฌํ๊ณ ๊ฐ๋ฐ์ ๋๊ตฌ๊ฐ ํ๊ท ์์ ํฌ๊ฒ ๋ฒ์ด๋์ง ์์ผ๋ฉด ๊ฒฐ๊ณผ๊ฐ ์ฐ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ถฉ๋ถํ๋ค๊ณ ๊ฒฐ์ ํ์ต๋๋ค.
์ด ์ ์ก ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๊ฒ์ ๋ถ๋ช ํ ์ข์ ์ผ์ด์ง๋ง HTTP ์์ฒญ ์ค๋ฒ ํค๋๋ ์ง์ฐ์ผ๋ก ์ธํด ๋น์ฉ์ด ๋ง์ด๋ค ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ณํฉ ํ ์๋ ์์ง๋ง ํ๋ก ํธ ์๋๋ฅผ ๋ค์ ์์ฑํ ๋ (๊ถ๊ทน์ ์ผ๋ก ์ด๋ํด์ผํ๋ ๋ชจ๋ ์ธ๋ผ์ธ JS๋ก ์ธํด ๋ถ๊ฐํผํ๋ค๊ณ ๋๋ผ๋) ์ด๊ฒ์ด ๊ฐ์ ํด์ผ ํ ์์ญ์ด๋ผ๋ ์ ์ ์ผ๋์ ๋์ญ์์ค.
๋ชจ๋ ๊ฒ์ด ๋งํ๋ฉด, Etherpad๋ htis ๋ถ์ผ์ ๋๋ถ๋ถ์ ๋ค๋ฅธ ๊ฒ๋ค์ ๋นํด ํ๋ฅญํฉ๋๋ค. ๋จ,์ด ์ธ์์์ ํ์ด์ง '๋ก๋'์ ๋์ด ์๋๋ผ ์์ธ ์ ๋์ ์ผ๋ก ์ถฉ๊ฒฉ์ ์ผ๋ก ๋น ๋ฅธ "ํธ์ง ์๊ฐ"์ ๋ํ ๊ธ ํ์ค ์ธ Google ๋ฌธ์๋ ์์ธ์ ๋๋ค.
๊ทธ๋์ TLDR; @muxator ๋ณํฉ-์ด ์ค๋ ๋๋ ํ์ ํด๋๊ฐ ์๋ Etherpad ์ธ์คํด์ค๋ฅผ ์ต์ ํํ๋ ค๋ ์ฌ์ฉ์๋ฅผ์ํ ๋ฆฌ์์ค๋ก ์กด์ฌํฉ๋๋ค.
ํ๋ฅญํ ์ผ !
+1 tnx!
: +1 :
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๊ฐ์ ๋ฌธ์ ๊ฐ์์์ต๋๋ค.
์ญ๋ฐฉํฅ ํ๋ก์๋ฅผ ์ฌ์ฉํ๊ณ Etherpad ์ธ์คํด์ค๊ฐ ํ์ ๋๋ ํฐ๋ฆฌ (/ etherpad)์ ์์ต๋๋ค. ๋ด ์ํ์น ๊ตฌ์ฑ์ ๋ค์์ ์ถ๊ฐํ์ฌ ์ฌ๋ฐ๋ฅด๊ฒ ๋ง๋ค์์ต๋๋ค.
settings.json์์ ์๋ฌด๊ฒ๋ ๋ณ๊ฒฝํ์ง ์์์ต๋๋ค.