Difference between revisions of "Dev Maintenance"
(→Updating to the production branch) |
(→Update your database: Test database update (notably for dreamhacks)) |
||
(60 intermediate revisions by 13 users not shown) | |||
Line 1: | Line 1: | ||
− | == Updating the Dreamwidth code == | + | == Updating the Dreamwidth code on your Dreamhack == |
− | + | === Shutting down apache === | |
− | + | ||
− | + | ||
It is best to shut your Apache instance down before doing the update process, to make sure that everything, especially scripts in cgi-bin/ are reloaded properly: | It is best to shut your Apache instance down before doing the update process, to make sure that everything, especially scripts in cgi-bin/ are reloaded properly: | ||
− | stop-apache | + | stop-apache |
− | + | ||
− | Okay. Let's say you've been running your Dreamwidth install and you want to pull down the latest and greatest in fixes. This is pretty easy. | + | === Getting updates from Github === |
+ | |||
+ | Okay. Let's say you've been running your Dreamwidth install and you want to pull down the latest and greatest in fixes. This is pretty easy. First, if you are not already somewhere in your site's directory, get into that directory: | ||
cd $LJHOME | cd $LJHOME | ||
− | |||
− | |||
− | |||
− | |||
− | + | Then grab updates from the development branch of Dreamwidth's repository: | |
+ | |||
+ | git fetch dreamwidth | ||
+ | git checkout main && git pull --ff-only dreamwidth main:main | ||
+ | |||
+ | If your installation hasn't been updated to use <code>main</code> instead of <code>master</code> for the primary development branch, see [https://dw-dev.dreamwidth.org/232594.html this post from Mark] detailing the necessary steps to get up to speed. | ||
+ | |||
+ | Once you've updated, you will also want to push the Dreamwidth repository changes to your fork on Github: | ||
+ | |||
+ | git push origin main | ||
+ | |||
+ | If you have uncommitted changes, you'll get an error message and will need to use [[Git How To#How_to_stash_your_changes|git stash]]. | ||
+ | |||
+ | |||
+ | === Update your database === | ||
+ | |||
+ | Now that your code has been updated, update the database: | ||
# order of commands is important | # order of commands is important | ||
Line 24: | Line 35: | ||
$LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb | $LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb | ||
$LJHOME/bin/upgrading/texttool.pl load | $LJHOME/bin/upgrading/texttool.pl load | ||
+ | # if you have a test database (you have one if you have a dreamhack) | ||
+ | DW_TEST=1 $LJHOME/bin/upgrading/update-db.pl -r -p --innodb | ||
+ | DW_TEST=1 $LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb | ||
+ | DW_TEST=1 $LJHOME/bin/upgrading/texttool.pl load | ||
− | + | Remember that different branches might have different text strings you have added, and that you might need to update your database for different branches when you are working on them for those text strings to work. The same applies for any database changes made by different branches you are working on. | |
− | + | === Compile the SCSS and other static files === | |
− | + | You'll also want to compile any changes to the static files. This will convert SCSS into CSS, as well as recompressing any changed javascript files, into the static build directory: | |
− | + | ||
− | + | $LJHOME/bin/build-static.sh | |
− | === | + | === Restart the server === |
− | + | Now you can restart Apache: | |
− | + | start-apache | |
− | + | ||
− | + | Of course, in a production environment, this whole process is not too recommended as you never know what kind of code you're going to get. But for the most part, it's fairly straightforward. (And if you're doing development, this is generally safe.) | |
− | + | == Additional Information for Non-Dreamhack Users == | |
− | + | This section is only for you if you're running your own installation. | |
− | + | Instead of using start-apache/stop-apache, which are Dreamhack-specific scripts, use these commands: | |
− | + | sudo /etc/init.d/apache2 start | |
+ | sudo /etc/init.d/apache2 stop | ||
− | You | + | You'll also want to update packages on your system at some point. On Ubuntu, this would be done using: |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | On Ubuntu, | + | |
apt-get update | apt-get update | ||
Line 65: | Line 73: | ||
sudo apt-get update && sudo apt-get upgrade | sudo apt-get update && sudo apt-get upgrade | ||
− | |||
− | |||
== Scripting == | == Scripting == | ||
− | You can, of course, use scripts to make it easier for you to do | + | {{Warn|text="These scripts have not been thoroughly tested yet with the new system; they might not be updated entirely or right."}} |
+ | |||
+ | You can, of course, use scripts to make it easier for you to do some of this. | ||
+ | |||
+ | There is an epic "omnibus" script by <dwuser>jeshyr</dwuser> available at http://dw-dev.dreamwidth.org/94822.html which incorporates all the individual scripts listed here and some other useful functions, and includes help information. It'll save you a heap of angst as a beginner! | ||
+ | |||
+ | Some simpler example scripts are given below. | ||
=== dwu - Updating the repos === | === dwu - Updating the repos === | ||
Line 77: | Line 89: | ||
<source lang="bash">#!/bin/bash | <source lang="bash">#!/bin/bash | ||
− | |||
− | |||
− | |||
− | + | # make sure we are in the right directory; | |
+ | cd $LJHOME | ||
− | + | git fetch dreamwidth | |
− | + | # pull changes from dreamwidth | |
− | + | git checkout master | |
− | + | git pull --ff-only dreamwidth master | |
− | + | ||
− | + | ||
− | + | ||
− | + | # push them to Github forks | |
+ | git push origin master | ||
− | + | # restore our old position | |
+ | git checkout - | ||
− | + | # check to see if we have a dw-nonfree directory; if we do, update that too | |
− | $LJHOME/ | + | if [ -d "$LJHOME/ext/dw-nonfree" ]; then |
− | $LJHOME/ | + | # change to dw-nonfree |
+ | cd $LJHOME/ext/dw-nonfree | ||
+ | |||
+ | git fetch dreamwidth | ||
+ | |||
+ | # pull changes from dw-nonfree | ||
+ | git checkout master | ||
+ | git pull --ff-only dreamwidth master | ||
+ | |||
+ | # push them to Github forks | ||
+ | git push origin master | ||
+ | |||
+ | # restore our old position | ||
+ | git checkout - | ||
+ | fi | ||
+ | </source> | ||
− | + | Now, when you type 'dwu', this script will update your dw-free and (if you have it) dw-nonfree repositories. | |
=== dwdb - Updating the database === | === dwdb - Updating the database === | ||
Line 107: | Line 131: | ||
<source lang="bash">#!/bin/bash | <source lang="bash">#!/bin/bash | ||
− | $LJHOME/bin/upgrading/update-db.pl -r -p --innodb && | + | $LJHOME/bin/upgrading/update-db.pl -r -p --innodb && |
− | $LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb && | + | $LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb && |
$LJHOME/bin/upgrading/texttool.pl load</source> | $LJHOME/bin/upgrading/texttool.pl load</source> | ||
This will update the database when you type 'dwdb'. | This will update the database when you type 'dwdb'. | ||
− | === | + | === comp - Recompiling the compass files === |
− | + | Put this code in a file called "'~/bin/comp'" and make it executable with "'chmod ugo+x ~/bin/comp'": | |
− | + | <source lang="bash">#!/bin/bash | |
− | + | cd "$LJHOME" && | |
− | <source lang="bash"> | + | compass compile && |
− | + | cd ext/dw-nonfree && | |
− | + | compass compile</source> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | </source> | + | |
− | + | ||
− | + | ||
− | + | This will recompile the CSS files. | |
==Cleaning up your directories== | ==Cleaning up your directories== | ||
Line 151: | Line 153: | ||
If you do any amount of work, you'll find that your directories get cluttered with .orig and .rej files everywhere. This script will clean those up: | If you do any amount of work, you'll find that your directories get cluttered with .orig and .rej files everywhere. This script will clean those up: | ||
− | <source lang="bash"> | + | <source lang="bash">git clean -f "*.rej" "*.orig"</source> |
You can run it from the command line, or put it in a file called ~/bin/tidy and make it executable with "chmod +x ~/bin/tidy". If you do that, you'll be able to just type "tidy" to clean house. | You can run it from the command line, or put it in a file called ~/bin/tidy and make it executable with "chmod +x ~/bin/tidy". If you do that, you'll be able to just type "tidy" to clean house. | ||
[[Category: Development]] | [[Category: Development]] | ||
+ | [[Category: Dreamhack]] |
Latest revision as of 22:57, 29 April 2024
Contents
Updating the Dreamwidth code on your Dreamhack
Shutting down apache
It is best to shut your Apache instance down before doing the update process, to make sure that everything, especially scripts in cgi-bin/ are reloaded properly:
stop-apache
Getting updates from Github
Okay. Let's say you've been running your Dreamwidth install and you want to pull down the latest and greatest in fixes. This is pretty easy. First, if you are not already somewhere in your site's directory, get into that directory:
cd $LJHOME
Then grab updates from the development branch of Dreamwidth's repository:
git fetch dreamwidth git checkout main && git pull --ff-only dreamwidth main:main
If your installation hasn't been updated to use main
instead of master
for the primary development branch, see this post from Mark detailing the necessary steps to get up to speed.
Once you've updated, you will also want to push the Dreamwidth repository changes to your fork on Github:
git push origin main
If you have uncommitted changes, you'll get an error message and will need to use git stash.
Update your database
Now that your code has been updated, update the database:
# order of commands is important $LJHOME/bin/upgrading/update-db.pl -r -p --innodb $LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb $LJHOME/bin/upgrading/texttool.pl load # if you have a test database (you have one if you have a dreamhack) DW_TEST=1 $LJHOME/bin/upgrading/update-db.pl -r -p --innodb DW_TEST=1 $LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb DW_TEST=1 $LJHOME/bin/upgrading/texttool.pl load
Remember that different branches might have different text strings you have added, and that you might need to update your database for different branches when you are working on them for those text strings to work. The same applies for any database changes made by different branches you are working on.
Compile the SCSS and other static files
You'll also want to compile any changes to the static files. This will convert SCSS into CSS, as well as recompressing any changed javascript files, into the static build directory:
$LJHOME/bin/build-static.sh
Restart the server
Now you can restart Apache:
start-apache
Of course, in a production environment, this whole process is not too recommended as you never know what kind of code you're going to get. But for the most part, it's fairly straightforward. (And if you're doing development, this is generally safe.)
Additional Information for Non-Dreamhack Users
This section is only for you if you're running your own installation.
Instead of using start-apache/stop-apache, which are Dreamhack-specific scripts, use these commands:
sudo /etc/init.d/apache2 start sudo /etc/init.d/apache2 stop
You'll also want to update packages on your system at some point. On Ubuntu, this would be done using:
apt-get update apt-get upgrade
Or, if you want an easy command to run on your dw account in one swoop:
sudo apt-get update && sudo apt-get upgrade
Scripting
You can, of course, use scripts to make it easier for you to do some of this.
There is an epic "omnibus" script by jeshyr available at http://dw-dev.dreamwidth.org/94822.html which incorporates all the individual scripts listed here and some other useful functions, and includes help information. It'll save you a heap of angst as a beginner!
Some simpler example scripts are given below.
dwu - Updating the repos
Put this code in a file called ~/bin/dwu and make it executable with chmod ugo+x ~/bin/dwu:
#!/bin/bash # make sure we are in the right directory; cd $LJHOME git fetch dreamwidth # pull changes from dreamwidth git checkout master git pull --ff-only dreamwidth master # push them to Github forks git push origin master # restore our old position git checkout - # check to see if we have a dw-nonfree directory; if we do, update that too if [ -d "$LJHOME/ext/dw-nonfree" ]; then # change to dw-nonfree cd $LJHOME/ext/dw-nonfree git fetch dreamwidth # pull changes from dw-nonfree git checkout master git pull --ff-only dreamwidth master # push them to Github forks git push origin master # restore our old position git checkout - fi
Now, when you type 'dwu', this script will update your dw-free and (if you have it) dw-nonfree repositories.
dwdb - Updating the database
Put this code in a file called ~/bin/dwdb and make it executable with chmod ugo+x ~/bin/dwdb:
#!/bin/bash $LJHOME/bin/upgrading/update-db.pl -r -p --innodb && $LJHOME/bin/upgrading/update-db.pl -r --cluster=all --innodb && $LJHOME/bin/upgrading/texttool.pl load
This will update the database when you type 'dwdb'.
comp - Recompiling the compass files
Put this code in a file called "'~/bin/comp'" and make it executable with "'chmod ugo+x ~/bin/comp'":
#!/bin/bash cd "$LJHOME" && compass compile && cd ext/dw-nonfree && compass compile
This will recompile the CSS files.
Cleaning up your directories
If you do any amount of work, you'll find that your directories get cluttered with .orig and .rej files everywhere. This script will clean those up:
git clean -f "*.rej" "*.orig"
You can run it from the command line, or put it in a file called ~/bin/tidy and make it executable with "chmod +x ~/bin/tidy". If you do that, you'll be able to just type "tidy" to clean house.