tars环境部署

陌路散爱 提交于 2020-03-06 07:42:14

author: headsen  chen

date: 2018-10-18 12:35:40

注意:依据Git上的tars搭建步骤整理而来

参考: 

https://max.book118.com/html/2017/0527/109698528.shtm
https://github.com/TarsCloud/Tars/blob/master/Install.zh.md

环境: centos7.3-x86_64  kernel :3.10    

1,依赖

yum install mpfr -y
yum install gmp -y
yum install *mpc* -y
yum install glibc-static libstdc++-static -y
yum -y install gcc gcc-c++
yum -y install autoconf automake libtool curl make g++ unzip zlib zlib-devel
yum install glibc-devel -y
yum install cmake -y
yum install perl -y
yum install -y git
yum install ncurses-devel -y

2,安装gcc

# 安装,下载好包并放在/mnt下面
cd /mnt
tar  fx gcc-6.3.0.tar.gz
cd gcc-6.3.0/
./contrib/download_prerequisites
./configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make -j2
make install
# 配置gcc环境变量
mv /usr/bin/gcc /usr/bin/gcc4.4.7
ln -s /usr/local/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++4.4.7
ln -s /usr/local/bin/g++ /usr/bin/g++
mv /usr/bin/cc /usr/bin/cc4.4.7
ln -s /usr/local/bin/cc /usr/bin/cc
mv /usr/bin/c++ /usr/bin/c++4.4.7
ln -s /usr/local/bin/c++ /usr/bin/c++
gcc --version
echo "/usr/local/lib64" >>/etc/ld.so.conf
ldconfig

3,安装protoc-3.6.1

cd /mnt
unzip protobuf-master.zip
cd protobuf-master/
./autogen.sh
./configure
make
make check
make install
protoc --\version

4,安装jdk

cd /mnt
tar xf jdk-8u181-linux-x64.tar.gz -C /usr/java
cat >> /etc/profile << EOF
export JAVA_HOME=/usr/java/jdk1.8.0_181
export JRE_HOME=\${JAVA_HOME}/jre
export CLASSPATH=.:\${JAVA_HOME}/lib:\${JRE_HOME}/lib
export PATH=\${JAVA_HOME}/bin:\$PATH
EOF

source /etc/profile
echo $JAVA_HOME

5,安装mysql-5.6

# 安装mysql
useradd mysql
tar fx mysql-5.6.35.tar.gz
cd  mysql-5.6.35/
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci
make && make install
#配置mysql
yum -y install perl
cd /usr/local/mysql/
rm  -rf /usr/local/mysql/data/
mkdir -p /data/mysql-data
ln -s /data/mysql-data/ /usr/local/mysql/data
chown -R mysql. /data/mysql-data/
chown -R mysql. /usr/local/mysql/data/
cp support-files/mysql.server /etc/init.d/mysql
rm -rf /etc/my.cnf
yum install -y perl-Module-Install.noarch
perl scripts/mysql_install_db --user=mysql

[root@bogon mysql]# vim /usr/local/mysql/my.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin

# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
# port = .....
# server_id = .....
socket = /tmp/mysql.sock
bind-address=172.25.196.66

# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M  

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
~                                              
ln -s /usr/local/mysql /usr/local/mysql-5.6.35
service mysql start
netstat -plnt |grep 3306
chkconfig mysql on
mkdir -p /var/lib/mysql/
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock                
# 添加环境变量
echo "PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile
echo "export PATH" >>/etc/profile
source /etc/profile
service mysql restart
./bin/mysqladmin -u root password 'root@appinside'
./bin/mysqladmin -u root -h 172.25.196.66 password 'root@appinside'
echo "/usr/local/mysql/lib/" >>/etc/ld.so.conf
ldconfig

6,安装resin

cd /usr/local/
wget http://www.caucho.com/download/resin-4.0.49.tar.gz
tar xf resin-4.0.49.tar.gz
ln -s resin-4.0.49 resin

7,安装maven

cd /mnt
tar fx apache-maven-3.5.4-bin.tar.gz
mv apache-maven-3.5.4 /usr/local/maven
cp /etc/profile /etc/profile.bak
echo "export MVEN_HOME=/usr/local/maven" >>/etc/profile
echo "export PATH=$MVEN_HOME/bin:$PATH" >>/etc/profile
source /etc/profile
mvn -version

8,安装web管理系统开发环境nvm

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
source ~/.bashrc
nvm install v8.11.3
npm install -g pm2 --registry=https://registry.npm.taobao.org

9,安装bison组件和flex组件

yum -y install bison flex

10,安装Java语言工具包

cd /mnt
tar fx thirdparty.tgz
cd  thirdparty/tars-1.5.0/;ls
----->
build  docs           Install_faq.en.md  Install.md          Introduction.md  LICENSE.TXT  php      README.en.md  tup
cpp    Install.en.md  Install_faq.md     Introduction.en.md  java             nodejs       plugins  README.md     web

cd java
mvn clean install
mvn clean install -f core/client.pom.xml
mvn clean install -f core/server.pom.xml

12、安装c++环境

yum -y install dos2unix flex bison
cd /mnt/thirdparty/tars-1.5.0/cpp/thirdpartygit clone https://github.com/Tencent/rapidjson.gitcd /mnt/thirdparty/tars-1.5.0/cpp/build/
./build.sh all
mkdir /usr/local/tars
make install

13、tars数据库环境初始化

mysql -uroot -proot@appinside -e "grant all on *.* to 'tars'@'%' identified by 'tars2015' with grant option;"
mysql -uroot -proot@appinside -e "grant all on *.* to 'tars'@'localhost' identified by 'tars2015' with grant option;"
mysql -uroot -proot@appinside -e "grant all on *.* to 'tars'@'${MachineName}' identified by 'tars2015' with grant option;"
mysql -uroot -proot@appinside -e "flush privileges;"
cd /mnt/thirtparty/tars-1.5.0/cpp/framework/sql
sed -i "s/192.168.2.131/172.25.196.66/g" `grep 192.168.2.131 -rl ./*`
sed -i "s/db.tars.com/172.25.196.66/g" `grep db.tars.com -rl ./*`
chmod u+x exec-sql.sh
./exec-sql.sh

14、打包框架基础服务

cd /mnt/thirdparty/tars-1.5.0/cpp/build/
make framework-tar

make tarsstat-tar
make tarsnotify-tar
make tarsproperty-tar
make tarslog-tar
make tarsquerystat-tar
make tarsqueryproperty-tar

15、安装核心基础服务

mkdir -p /usr/local/app/tars/
cd /mnt/thirtyparty/tars-1.5.0/cpp/build

cp framework.tgz /usr/local/app/tars/
cd /usr/local/app/tars
tar xf framework.tgz

sed -i "s/192.168.2.131/172.25.196.66/g" `grep 192.168.2.131 -rl ./*`
sed -i "s/db.tars.com/172.25.196.66/g" `grep db.tars.com -rl ./*`
sed -i "s/registry.tars.com/172.25.196.66/g" `grep registry.tars.com -rl ./*`
sed -i "s/web.tars.com/172.25.196.66/g" `grep web.tars.com -rl ./*`

chmod u+x tars_install.sh
./tars_install.sh
./tarspatch/util/init.sh

16、安装web管理系统

cd /mnt/thirtparty/tars-1.5.0/web/
sed -i "s/db.tars.com/172.25.196.66/g" `grep db.tars.com -rl ./src/main/resources/*`
sed -i "s/registry1.tars.com/172.25.196.66/g" `grep registry1.tars.com -rl ./src/main/resources/*`
sed -i "s/registry2.tars.com/172.25.196.66/g" `grep registry2.tars.com -rl ./src/main/resources/*`

mvn clean package
cp ./target/tars.war /usr/local/resin/webapps/
#./web/target/tars/WEB-INF/classes/log4j.properties  这里可以修改日志目录
mkdir -p /data/log/tars/
mv /usr/local/resin/conf/resin.xml /usr/local/resin/conf/resin.xml.backup
cat > /usr/local/resin/conf/resin.xml << EOF
<!--
   - Resin 4.0 configuration file.
  -->
<resin xmlns="http://caucho.com/ns/resin"
       xmlns:resin="urn:java:com.caucho.resin">

  <!-- property-based Resin configuration -->
  <resin:properties path="\${__DIR__}/resin.properties" optional="true"/>

  <resin:if test="\${properties_import_url}">
     <resin:properties path="\${properties_import_url}"
                    optional="true" recover="true"/>
  </resin:if>


  <!-- Logging configuration for the JDK logging API -->
  <log-handler name="" level="all" path="stdout:"
               timestamp="[%y-%m-%d %H:%M:%S.%s]"
               format=" {\${thread}} \${log.message}"/>
               
  <!--
     - Alternative pseudo-TTCC log format
     -
     - <log-handler name="" level="all" path="stdout:"
     -           timestamp="%y-%m-%d %H:%M:%S.%s"
     -           format=" [\${thread}] \${log.level} \${log.shortName} - \${log.message}"/>
    -->
   
  <!--
     - level='info' for production
     - 'fine' or 'finer' for development and troubleshooting
    -->
  <logger name="" level="\${log_level?:'info'}"/>

  <logger name="com.caucho.java" level="config"/>
  <logger name="com.caucho.loader" level="config"/>

  <!--
     - Default configuration applied to all clusters, including
     - HTTP, HTTPS, and /resin-admin configuration.
    -->
  <resin:import path="\${__DIR__}/cluster-default.xml"/>
 
  <!--
     - health configuration
    -->
  <resin:import path="\${__DIR__}/health.xml"/>

 
  <!--
     - Remote management requires at least one enabled admin user.
    -->
  <resin:AdminAuthenticator>
    <user name="\${admin_user}" password="\${admin_password}"/>
    
    <resin:import path="\${__DIR__}/admin-users.xml" optional="true"/>
  </resin:AdminAuthenticator>

  <!--
     - For clustered systems, create a password in as cluster_system_key
    -->
  <cluster-system-key>\${cluster_system_key}</cluster-system-key>

  <!--
     - For production sites, change dependency-check-interval to something
     - like 600s, so it only checks for updates every 10 minutes.
    -->
  <dependency-check-interval>\${dependency_check_interval?:'2s'}</dependency-check-interval>

  <!-- For resin.properties dynamic cluster joining -->
  <home-cluster>\${home_cluster}</home-cluster>
  <home-server>\${home_server}</home-server>
  <elastic-server>\${elastic_server}</elastic-server>
  <elastic-dns>\${elastic_dns}</elastic-dns>

  <!--
     - Configures the main application cluster.  Load-balancing configurations
     - will also have a web cluster.
    -->
  <cluster id="app">
    <!-- define the servers in the cluster -->
    <server-multi id-prefix="app-" address-list="\${app_servers}" port="6800"/>

    <host-default>
      <!-- creates the webapps directory for .war expansion -->
      <web-app-deploy path="webapps"
                      expand-preserve-fileset="WEB-INF/work/**"
                      multiversion-routing="\${webapp_multiversion_routing}"
                      path-suffix="\${elastic_webapp?resin.id:''}"/>
    </host-default>

    <!-- auto virtual host deployment in hosts/foo.example.com/webapps -->
    <host-deploy path="hosts">
      <host-default>
        <resin:import path="host.xml" optional="true"/>
      </host-default>
    </host-deploy>

    <!-- the default host, matching any host name -->
    <host id="" root-directory=".">
      <!--
         - webapps can be overridden/extended in the resin.xml
        -->
      <web-app id="/" document-directory="webapps/tars"/>

    </host>
      
    <resin:if test="\${resin_doc}">
      <host id="\${resin_doc_host}" root-directory="\${resin_doc_host}">
        <web-app id="/resin-doc" root-directory="\${resin.root}/doc/resin-doc"/>
      </host>
    </resin:if>
  </cluster>

  <cluster id="web">
    <!-- define the servers in the cluster -->
    <server-multi id-prefix="web-" address-list="\${web_servers}" port="6810"/>

    <host id="" root-directory="web">
      <web-app id="">
        <resin:LoadBalance regexp="" cluster="app"/>
      </web-app>
    </host>
  </cluster>

  <cluster id="memcached" xmlns:memcache="urn:java:com.caucho.memcached">
    <!-- define the servers in the cluster -->
    <server-multi id-prefix="memcached-" address-list="\${memcached_servers}" port="6820">
      <!-- listen for the memcache protocol -->
      <listen port="\${memcached_port?:11211}"
              keepalive-timeout="600s" socket-timeout="600s">
        <memcache:MemcachedProtocol/>
      </listen>
    </server-multi>
  </cluster>
 
  <cluster id="proxycache">
    <!-- define the servers in the cluster -->
    <server-multi id-prefix="proxycache-" address-list="\${proxycache_servers}" port="6830"/>

    <host id="" root-directory="proxycache">
      <web-app id="">
        <resin:HttpProxy regexp=".*">
          <!-- backend HTTP servers to proxy to -->
          <addresses>\${backend_servers}</addresses>
        </resin:HttpProxy>
      </web-app>
    </host>
  </cluster>

</resin>
EOF

17、现在可以访问8080端口的web管理系统了

/usr/local/resin/bin/resin.sh start

http://172.25.196.66:8080

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!