Line 32: | Line 32: | ||
#add correct proxy for your env |
#add correct proxy for your env |
||
proxy=http://10.90.7.56:3130/ |
proxy=http://10.90.7.56:3130/ |
||
+ | |||
+ | ====install synergy ==== |
||
+ | shell>sudo yum install synergy |
||
====2) DHCP==== |
====2) DHCP==== |
Revision as of 02:52, 6 November 2013
How to set up development environment (Desktop Linux Fedora18 x64)
1. Before Start
RCOM environment is really complicated, here we only set up a minimal version which helps you get started, the guide is not meant to help you learn any details. After you learn the very details of RCOM env you can throw away this guide, choose what ever linux distribution you like, install applications to where ever you want, set it up as you like, as long as you know how it works and what you are doing ...
You probably will encounter errors if you try to apply this guide to other Linux distribution. In that case, you need to make necessary modifications or ask help from RCOM team.
This guide has been updated (but not tested) and you can choose newer version of Fedora.
2. System Setup
CAUTION: These steps should be run as root.
1) OS Installation
Use network install os, restart pc and press F12, select fedora 18 x86 Set the default root password is 'wearethebest'.
enable sudo to your account
shell> su shell> chmod +w /etc/sudoers shell> echo '${username} ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers shell> chmod -w /etc/sudoers shell> exit
disable SELINUX
sudo vi /etc/selinux/config SELINUX=disabled
set yum proxy
shell> sudo vi /etc/yum.conf #add correct proxy for your env proxy=http://10.90.7.56:3130/
install synergy
shell>sudo yum install synergy
2) DHCP
We need dhclient, not NetworkManager # chkconfig --level 2345 NetworkManager off # chkconfig --level 2345 network on # /etc/init.d/NetworkManager stop # /etc/init.d/network restart
3) DNS
##if no /etc/dhclient-eth0.conf shell>touch /etc/dhclient-eth0.conf
# echo 'prepend domain-name "g3.reuters.com " ;' >> /etc/dhclient-eth0.conf # echo "prepend domain-name-servers 10.35.59.232 ;" >> /etc/dhclient-eth0.conf # /etc/init.d/network restart Now you should be able to lookup our SIT boxes: # nslookup idevbj-stage-repo
4) Proxy (for yum)
# echo "proxy=http://10.90.7.56:3128/" >> /etc/yum.conf Now yum should be able to access internet through the proxy # yum list mysql
5) Change root password
# passwd
6) Add a user for daily use
Replace xxx with your user name # useradd -m -s /bin/bash xxx Set password for this user # passwd xxx
7) Disable selinux
If the output is not "SELINUX=disabled", edit /etc/selinux/config and change the line to "SELINUX=disabled". If there's no such a line, add it. # cat /etc/selinux/config | grep "^SELINUX="
8) Grant sudo privilege to the daily user you add
Replace xxx with your username # echo "xxx ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
9) Reboot system and login with your user
# reboot
3. RCOM Environment Setup
CAUTION: All the following steps should be running as the user you add for daily usage.
1) Create directory structures, set permission, add rcom users.
Save the following content as a file, say /tmp/bootstrap.sh
#!/bin/sh if [ "`id -u`" != "0" ]; then echo "Must run as root!" exit 1 fi echo "Creating directories ... " mkdir -p /data01/home mkdir -p /data01/opt/apache22 mkdir -p /data01/opt/tomcat mkdir -p /data01/rt/apache/admin/htdocs mkdir -p /data01/rt/apps mkdir -p /data01/rt/properties mkdir -p /data01/rt/tomcat mkdir -p /data02/usr/local/mysql/data mkdir -p /data02/rt/apache mkdir -p /data02/rt/logs/apache22 mkdir -p /data02/rt/logs/tomcat/cms mkdir -p /usr/java echo "Creating symbolic links ... " rm -rf /rt && ln -sfn /data01/rt /rt rm -rf /data01/rt/logs && ln -sfn /data02/rt/logs /data01/rt/logs rm -rf /usr/local/mysql && ln -sfn /data02/usr/local/mysql /usr/local/mysql rm -rf /opt/apache22 && ln -sfn /data01/opt/apache22 /opt/apache22 echo "Creating user & group ... " [ "`cat /etc/group | grep ^rcom: | wc -l`" == "0" ] && /usr/sbin/groupadd rcom id rcomcms 1>/dev/null 2>&1 || /usr/sbin/useradd -d /data01/home/rcomcms -m -s /bin/bash -g rcom rcomcms id mysql 1>/dev/null 2>&1 || /usr/sbin/useradd -d /data01/home/mysql -m -s /bin/bash -g rcom mysql echo "Setting directories owner & permission ... " chown root.root /usr/java chown root.root /data01 /data01/home /data01/opt /data01/opt/tomcat /data01/rt /data01/rt/apps chown root.root /data02 /data02/usr /data02/usr/local /data02/rt /data02/rt/logs chown root.rcom /data01/rt/properties /data02/rt/logs/tomcat chown daemon.rcom /data01/opt/apache22 /data01/rt/apache /data02/rt/apache /data02/rt/logs/apache22 chown rcomcms.rcom /data01/rt/tomcat /data02/rt/logs/tomcat/cms chmod 775 /data01/rt/properties
Then make it executable, and run it
$ chmod a+x /tmp/bootstrap.sh $ sudo /tmp/bootstrap.sh
2) Set environment variables
$ sudo touch /etc/profile.d/g3profile.sh $ sudo chmod 755 /etc/profile.d/g3profile.sh $ sudo su - # echo "export BASE_RT_DIR=/rt" >> /etc/profile.d/g3profile.sh # echo "export JAVA_HOME=/usr/java/jdk" >> /etc/profile.d/g3profile.sh # echo "export proxy_http=10.90.7.56:3128" >> /etc/profile.d/g3profile.sh $ exit $ echo "export PATH=$PATH:/sbin:/usr/sbin:$JAVA_HOME/bin" >> ~/.bash_profile
Then logout and login to make the new env var take effect, or source it (you need to source it in every terminal, so you'd better logout, login) $ source /etc/profile.d/g3profile.sh $ source ~/.bash_profile
3) Install daily tools by yum (subversion, firefox, vnc)
First check whether they are already installed $ sudo yum list | grep installed | grep -i xxx
Usually they are already installed, so there's nothing to install. If not, use yum to install firefox and vnc $ sudo yum install xxx
But for subversion, the official subversion for fedora9 is too old (1.4.x), we need a version which matches the subclipse version, which is 1.6.5. Or, you should use subclipse 1.4.x which matches the official fc9 subversion 1.4.x). You can find latest subversion and subclipse on http://subversion.tigris.org/ Follow the below steps to install subversion 1.6.5 or you can install the latest version yourself if you know how to do. Now remove the 1.4.x subversion if there is $ sudo yum erase subversion Now get the 1.6.5 subversion source $ cd ~/Download $ wget http://idevbj-stage-repo/subversion-1.6.5.tar.gz $ tar xzvf subversion-1.6.5.tar.gz Install apr/apr-util/neon devel packages if they are not installed, we need them to build subversion $ sudo yum install apr-util-devel neon-devel Or you can use subversion-deps-1.6.5.tar.gz which provides all necessary dependencies $ cd ~/Download $ wget http://idevbj-stage-repo/subversion-deps-1.6.5.tar.gz $ tar xzvf subversion-deps-1.6.5.tar.gz Now make & install subversion 1.6.5 $ cd subversion-1.6.5 $ ./configure $ make $ sudo make install When you execute ./configure step, and find missing the sqlite3.c file. Then $ wget http://absa.googlecode.com/files/sqlite-amalgamation-3.6.13.tar.gz $ tar xzvf sqlite-amalgamation-3.6.13.tar.gz $ cd subversion-1.6.5 $ mkdir sqlite-amalgamation $ cp ~/Downloads/sqlite-3.6.13/sqlite3.c sqlite-amalgamation/ then you can install subversion 1.6.5.
Now check the subversion we installed, it should print version 1.6.5 $ cd ~ && svn --version And check if svn works with http scheme $ svn list http://10.90.0.160/svn And of course, you can install newer version of firefox and vnc too, it's up to you. Remember to add some handy firefox plugins, at lease we need firebug and foxyproxy and we use this dynamic proxy "http://wtd.apac.ime.reuters.com/proxy.pac".
4) Install jdk
First we need to remove any existing gcj java $ sudo rpm -qa | grep java Replace the name with the one from above query command $ sudo rpm -e --nodeps xxx Now install our own jdk $ cd /usr/java $ sudo wget http://idevbj-stage-repo/jdk-6u22-linux-i586.bin $ sudo chmod 755 jdk-6u22-linux-i586.bin $ sudo ./jdk-6u22-linux-i586.bin $ sudo ln -s jdk1.6.0_22 jdk $ sudo rm -f jdk-6u22-linux-i586.bin
Now check it, it should give your 1.6.0_22 $ java -version
5) Install Eclipse and subclipse
Remember the version of subclipse you install should match the subversion you installed in above steps. $ cd ~/Download $ wget http://idevbj-stage-repo/eclipse-java-galileo-linux-gtk.tar.gz $ wget http://www.tigris.org/files/documents/906/48441/site-1.6.15.zip $ tar xzvf eclipse-java-galileo-linux-gtk.tar.gz -C ~/ $ unzip site-1.6.15.zip -d ~/eclipse Now you should be able to start eclipse (You should create a launcher for it on your desktop) $ ~/eclipse/eclipse You probably want to increase the min/max memory for eclipse, I use "-Xms768m" and "-Xmx1024m" $ vi ~/eclipse/eclipse.ini
6) Install maven
First you should try install with yum, it probably will install a lot of dependencies $ sudo yum install maven2 After it is successfully installed, remove java-gcj manually without checking dependencies as described in "Install jdk" (because it could get installed again as dependency with maven installation).
Configure maven to use RCOM maven repositry by editing /opt/maven2/conf/settings.xml or ~/.m2/settings.xml 1). Add the below proxy setting to the part of proxies <proxy> <id>ime proxy</id> <active>true</active> <protocol>http</protocol> <host>10.90.7.56</host> <port>3128</port> <nonProxyHosts>10.90.0.160</nonProxyHosts> </proxy>
2). Add server "repo" definition to servers part: <server> <id>repo</id> <username>${your svn username}</username> <password>${your svn password}</password> </server>
3). Define profile "repositoryDefs" in profiles part: <profile> <id>repositoryDefs</id> <repositories> <repository> <id>proxycache</id> <name>Proxy of external maven repos</name> <url>http://dev1.reuters.com:9999/repository</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>proxycache</id> <name>Proxy of external maven repos</name> <url>http://dev1.reuters.com:9999/repository</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> </pluginRepository> </pluginRepositories> </profile>
4). Active the above defined profile "repositoryDefs" through putting the follow code into <settings>: <activeProfiles> <activeProfile>repositoryDefs</activeProfile> </activeProfiles>
7) Install MySQL (Optional)
Use the mysql server with your Linux distribution (version >= 5.1.31).
First we need to remove any existing mysql packages, but usually we only need to remove mysql-libs Use this command to check mysql $ sudo rpm -qa | grep -i mysql Remove it without dependency checks $ sudo rpm -e --nodeps mysql-libs-5.0.51a-1.fc9.i386 Now install our mysql packages $ cd ~/Download $ wget http://idevbj-stage-repo/MySQL-shared-advanced-gpl-5.1.31sp1-0.rhel4.i386.rpm $ wget http://idevbj-stage-repo/MySQL-client-advanced-gpl-5.1.31sp1-0.rhel4.i386.rpm $ wget http://idevbj-stage-repo/MySQL-server-advanced-gpl-5.1.31sp1-0.rhel4.i386.rpm $ sudo rpm -Uvh MySQL-shared-advanced-gpl-5.1.31sp1-0.rhel4.i386.rpm $ sudo rpm -Uvh MySQL-client-advanced-gpl-5.1.31sp1-0.rhel4.i386.rpm $ sudo rpm -Uvh MySQL-server-advanced-gpl-5.1.31sp1-0.rhel4.i386.rpm We don't want mysql server to run all the time, we will start it manually when we need it. So stop it and set it not to auto-start $ sudo /etc/init.d/mysql stop $ sudo /sbin/chkconfig --level 2345 mysql off
8) Install httpd and php
Install httpd $sudo yum install zlib-devel $cd ~/Downloads $wget http://10.35.59.233/httpd-2.2.25.tar.gz $tar zxvf httpd-2.2.25.tar.gz $cd httpd-2.2.25 $./configure --prefix=/opt/apache22 --enable-mods-shared=all $make $sudo make install
9) Setup admin httpd
Save the following content as a file, say /tmp/setup-httpd-admin.sh
#!/bin/sh if [ "`id -u`" != "0" ]; then echo "Must run as root!" exit 1 fi IP=`/sbin/ifconfig eth0 | grep -oe "inet [^ ]*" | cut -d":" -f2` if [ "$IP" == "" ]; then echo "No IP Address detected, exit!" exit 1 else echo "Using IP address: $IP" fi echo "Installing httpd-admin configuration files ... " cd /tmp rm -f /tmp/httpd-admin-conf-dev.tgz wget http://10.35.59.233/httpd-admin-conf-dev.tgz tar xzf /tmp/httpd-admin-conf-dev.tgz -C /data01/opt/apache22 wget http://10.35.59.233/httpd-admin-modules.tgz tar xzf /tmp/httpd-admin-modules.tgz -C /data01/opt/apache22 cd /data01/opt/apache22/conf/conf.d m4 -D__IP__=$IP 10-rcom-admin-vhost.m4 > 10-rcom-admin-vhost.conf m4 -D__IP__=$IP admin.m4 > admin.conf STATIC_IP=`nslookup idevbj-static-01 | grep ^Address: | grep -v \# | cut -d' ' -f2` sed -i "/Include conf\/extra\/rcom-keepalives.conf/ a \ RewriteRule ^/resources/(.*) http://$STATIC_IP:23880/resources/\$1" 10-rcom-admin-vhost.conf echo "Resetting directory permission ... " sudo chown -R daemon.rcom /data01/opt/apache22 echo "Cleaning ... " sudo rm -rf /tmp/httpd-admin-conf-dev.tgz sudo rm -rf /tmp/httpd-admin-modules.tgz
Now make it executable and run it
$ sudo chmod a+x /tmp/setup-httpd-admin.sh $ sudo /tmp/setup-httpd-admin.sh
Now you should be able to start and stop httpd withour error
sudo /opt/apache22/bin/apachectl -k start sudo /opt/apache22/bin/apachectl -k stop
10) Install tomcat
$ wget -O ~/Downloads/apache-tomcat-5.5.23-1.i386.rpm http://10.35.59.233/apache-tomcat-5.5.23-1.i386.rpm $ cd ~/Downloads && sudo rpm -Uvh apache-tomcat-5.5.23-1.i386.rpm
11) Setup admin tomcat
Save the following content as a file, say /tmp/setup-tomcat-cms.sh
#!/bin/sh if [ "`id -u`" != "0" ]; then echo "Must run as root!" exit 1 fiIP=`/sbin/ifconfig eth0 | grep -oe "inet [^ ]*" | cut -d":" -f2` if [ "$IP" == "" ]; then echo "No IP Address detected, exit!" exit 1 else echo "Using IP address: $IP" fi echo "Preparing directory structure ... " rm -rf /rt/tomcat/cms 1>/dev/null 2>&1 rm -rf /rt/logs/tomcat/cms/* 1>/dev/null 2>&1 rm -f /etc/init.d/tomcat-cms 1>/dev/null 2>&1 mkdir -p /rt/tomcat/cms echo "Setting up tomcat-cms ... " cd /tmp rm -f /tmp/tomcat-cms-dev.tgz wget http://10.35.59.233/tomcat-cms-dev.tgz tar xzf /tmp/tomcat-cms-dev.tgz -C /rt/tomcat cd /rt/tomcat/cms m4 -D__IP__=$IP tomcatctl.m4 > tomcatctl m4 -D__IP__=$IP tomcat-cms.initd.m4 > tomcat-cms.initd mv /rt/tomcat/cms/tomcat-cms.initd /etc/init.d/tomcat-cms chown root.root /etc/init.d/tomcat-cms chmod 755 /etc/init.d/tomcat-cms echo "Reset permission ... " chown -R rcomcms.rcom /rt/tomcat/cms chown -R rcomcms.rcom /rt/logs/tomcat/cms echo "Clean up ... "
Now make it executable and run it
$ sudo chmod a+x /tmp/setup-tomcat-cms.sh $ sudo /tmp/setup-tomcat-cms.sh
Now you should be able to start/stop tomcat-cms
$ sudo /etc/init.d/tomcat-cms hardstart $ sudo /etc/init.d/tomcat-cms hardstop Check /rt/tomcat/cms/logs/catalina.out, make sure there is no error/exception in it. create a test project in tomcat $ sudo mkdir /rt/tomcat/cms/webapps/test $ sudo vi /rt/tomcat/cms/webapps/test/index.html If so, you should be able to see the hello page from your local box: http://your_ip:23863/test/
12) Checkout svn modules
DO NOT check our modules from svn directly, it will take a long time and consume the network resource. You should copy the tar ball which contains almost all modules from our staging box (trunk, r591328), and then switch all modules to the current branch, update with your own account. It's about 700MB, and extends to 2.2GB after extract, so please make enough room for it. First let's download it $ cd ~/Download && wget http://10.35.59.233/rcom-svn-modules.tgz if the download is still time consuming. you can scp it from staging box $ cd ~/Download && scp distuser@10.35.59.233:/rt/staging/env-bootstrap/rcom-svn-modules.tgz . (passwd:2comdeployer) Now extract it where you like, here we extract it to ~/work/rcom $ mkdir -p ~/workspace/rcom $ tar xzvf ~/workspace/rcom-svn-modules.tgz -C ~/workspace/rcom
First update with your svn account, enter the password when prompted $ cd ~/workspace/rcom $ svn upgrade rcom-all $ svn up --username xxx rcom-all And sub modules of rcom-all $ cd ~/workspace/rcom/rcom-all $ ALL_MODULES="`grep ^coremodules dev.mk | cut -d"=" -f2` `grep ^warmodules dev.mk | cut -d"=" -f2`" $ for module in $ALL_MODULES; do svn upgrade $module; done You can use the same technique to sync modules with svn repository $ cd ~/workspace/rcom $ svn up * $ cd ~/workspace/rcom/rcom-all $ ALL_MODULES="`grep ^coremodules dev.mk | cut -d"=" -f2` `grep ^warmodules dev.mk | cut -d"=" -f2`" $ for module in $ALL_MODULES; do svn up $module; done
13) Build rcom modules
Since we have rcom-all and all its sub modules ready, it is pretty simple to build rcom sub modules. Here we build the most common two modules: rcom-admin and rcom-us. $ cd ~/workspace/rcom/rcom-all TODO: the rcom-mobile-core has some problem . Delete the rcom-mobile-core in "coremodules=" list in dev.mk $ make clean && make package warmodules="rcom-admin rcom-betaus" After build finishes, you should have the following files ~/workspace/rcom/rcom-all/rcom-admin/rcom-admin-dist.tgz ~/workspace/rcom/rcom-all/rcom-betaus/rcom-betaus-dist.tgz
14) Deploy rcom-admin to tomcat-cms - TODO
- Deploy properties files
- Deploy rcom-admin app (war)
First let's stop tomcat-cms and do some cleaning
$ sudo /etc/init.d/tomcat-cms stop $ sudo rm -rf /rt/tomcat/cms/webapps/rcom-admin* Since we cannot auto generate properties files on our desktop, I have pre-built the necessary properties files which works in our env. $ cd ~/Download $ wget http://10.35.59.233/tomcat-cms-props-dev.tgz $ sudo tar xzf tomcat-cms-props-dev.tgz -C /rt/properties $ sudo chown root.rcom /rt/properties/* $ sudo chmod 644 /rt/properties/* Now copy the war file to tomcat-cms $ sudo cp ~/workspace/rcom/rcom-all/rcom-admin/rcom-admin.war /rt/tomcat/cms/webapps/ $ sudo chown rcomcms.rcom /rt/tomcat/cms/webapps/rcom-admin.war Prepare the log directory for rcom-admin $ sudo mkdir -p /rt/logs/cmsadmin $ sudo chown -R rcomcms.rcom /rt/logs/cmsadmin Now we can start tomcat-cms, it will extract rcom-admin.war automatically $ sudo /etc/init.d/tomcat-cms start Check log files, see if there's any error in them. If there is, ask help from others $ vi /rt/tomcat/cms/logs/catalina.out $ vi /rt/logs/cmsadmin/rcom-admin.log $ vi /rt/logs/cmsadmin/root.log Now make sure httpd is running and start it if not $ sudo /etc/init.d/httpd status $ sudo /etc/init.d/httpd start If everything is ok, you should be able to access http://your_ip:23900/rcom-admin See the login page, right? wait, you don't have an account? Try this: fliu-cn/fl1u
4. How to set up RCOM projects in Eclipse
This is a pretty simple way to set up the RCOM projects in Eclipse, and you can switch to different edition easily. Let's take the i24 as an example:
Since you have copied all svn modules from our staging box and updated it, you don't really have to check it out again from svn, so usually you can start from step 4.
No | Steps | Command in terminal |
---|---|---|
1 | Go to /home/${username}/workspace, ${username} is your current linux user. | cd /home/${username}/workspace |
2 | check out module rcom-all to your workspace directory. | svn co http://10.90.0.160/svn/rcom-all/branches/i38 rcom-all-i38 |
3 | Navigate to /home/${username}/workspace/rcom-all-i38 | cd /home/${username}/workspace/rcom-all-i38 |
4 | Install initial project environment, it will check out all the related modules from SVN, actually it will not take so much time, and it will only run one time in each iteration. | make bootstrap |
5 | Switch application to rcom-us, following jobs will be done automatically: 1) Checkout or update the latest revision from SVN for module. 2) Make rcom-us as the primary edition which can be debugged in eclipse. 3) Generate the .classpath file for the project. |
sudo make switch app=rcom-${edition} (such as us, uk, jp, cn, admin, etc.) |
6 | Stop tomcat-cms | sudo /etc/init.d/tomcat-cms hardstop |
7 | Create context file /rt/tomcat/cms/conf/Catalina/localhost/rcom-${edition}.xml | sudo make context app=rcom-${edition} CATALINA_BASE=/rt/tomcat/cms |
8 | Grant privileges on rcom-all to ${username} | sudo chown -R ${username}:${username} /home/${username}/workspace/rcom-all-i24 |
9 | Start eclipse and use /home/${username}/workspace as the default workspace | |
10 | Compile rcom-{edition} by eclipse | (This step is not doing in terminal, but in eclipse IDE.). If there is one compile error, something like "the directory of /WEB-INF/classes is not exists", then just create this folder. File-->Import-->General-->Existing Projects into Workspace -->(select rcom-all) |
11 | Eclipse will compile and package resources for rcom-${edition} into /home/${username}/workspace/
rcom-all/target/rcom-${edition}. We must make it mapped to the "docBase" specified in the file /rt/tomcat/cms/conf/Catalina/localhost/rcom-${edition}.xml |
sudo rm -rf /target ln -s /home/${username}/workspace/rcom-all-24/target /target |
12 | Start tomcat-cms | sudo /etc/init.d/tomcat-cms hardstart |
13 | Check whether rcom-${edition} is available. Open a web browser, input http://localhost:23863/rcom-${edition}, and make sure what you get is not an error page. You need to modify the port to your |
|
14 | If you need to work with other editions like rcom-uk, rcom-jp or rcom-admin application, just repeat steps from No 5) to No 8). | |
15 | CAUTION: There is no static content when you access tomcat directly.. |