Ir para conteúdo
  • Cadastre-se

Programa%C3%A7%C3%A3o Compilando e rodando um OTServ em Linux (debian). Tutorial Definitivo


Posts Recomendados

Este é um tutorial escrito escrito originalmente para aqueles, que apesar de não terem experiencia com este SO, querem utiliza-lo para rodar seus OTServers, seja por segurança, estabilidade ou simplesmente por quererem aprender. O Linux apesar de assustar de inicio pra quem nunca teve contato, principalmente por não dispor de uma interface grafica (a não ser em casos onde você use o vnc, mas não é o foco deste tutorial), é um grande SO, principalmente quando se trata de gerenciamento de memória, segurança e estabilidade. Neste tutorial vamos fazer uso do Debian 6 64bits e um OT 8.6, apesar de servir para qualquer versão, desde que tenha as sources.

 
Programas necessários:
Putty - Necessário para administrar o vps, via SSH.
FileZilla - Ftp, utilizado para enviar seus arquivos para o vps.
 
Ao contratar um vps Linux  até 1 hora você receberá um email contendo o IP e senha root do seu novo servidor. Aqui nós abrimos o FileZilla para mandarmos o OT para o vps. A tela dele é muito simples:
filezila.png
Em Host você coloca o IP do VPS, usuário é "root", e senha é a que você passou no momento da compra, que também foi enviada para seu email juntamente com o IP.
Basta compactar a pasta do seu ot e as Sources em um arquivo .zip, e copiar para o VPS. Aqui no exemplo usaremos a pasta /home, por questões de organização. Para isso, basta digitar "/home" no espaço Endereço Remoto. 
Caso seu OT tenha SITE, aproveite e mande o mesmo para o vps também.
 
Agora iremos logar no VPS via PUTTY para instalar os arquivos necessários e compilar o tfs. A tela é igualmente simples, bastando adicionar o IP e clicar em Open. A Tela é a seguinte:
 
putty.png
 
Após isso, será aberta uma tela preta, pedindo login. Digite "root", Enter. Será pedido a senha de root, apenas digite, e depois enter novamente. Será exibido o terminal, algo parecido com a tela abaixo:
putty2.png
 
Perfeito. Você está logado. Vamos começar instalando as libs necessárias para o funcionamento do OT, mysql, apache e mais algumas libs que iremos utilizar, com o seguinte comando:
 

 

apt-get update
apt-get install libboost1.42-dev libboost-system1.42-dev libboost-filesystem1.42-dev libboost-date-time1.42-dev libboost-regex1.42-dev libboost-thread1.42-dev libgmp3-dev liblua5.1-0 liblua5.1-0-dev liblua50 liblua50-dev liblualib50 liblualib50-dev lua50 lua5.1 libsqlite0-dev libsqlite3-dev sqlite3 libmysql++-dev libmysqlclient-dev mysql-client-5.1 mysql-server-5.1 mysql-common libxml2-dev libxml++2.6-dev cpp gcc g++ make automake autoconf pkg-config subversion liblua5.1-sql-mysql-dev liblua5.1-sql-sqlite3-dev zlib1g-dev zlib1g libcrypto++-dev libcrypto++8 libcurl4-openssl-dev unzip apache2 php5 libapache2-mod-php5 mysql-server libapache2-mod-auth-mysql php5-mysql phpmyadmin

 

 
Pronto. Instalado tudo, estamos prontos para seguir com a compilação. Vá para a pasta /home e descompacte as sources e o ot usando o comando unzip. Por exemplo, caso suas sources estejam em um arquivo chamado sourcez.zip dentro de /home, o comando fica assim:
cd /home [tecle enter]
unzip sources.zip [tecle enter]
 
Em seguida daremos permissão total na pasta, para que não haja problemas. para isso (supondo que a pasta descompactada se chame "sources") execute o comando:
chmod -R 777 sources/ [tecle enter]
 
Entramos na pasta sources com o comando:
cd sources [tecle enter]
 
E compilamos com os seguintes comandos:
./autogen.sh [tecle enter]
./configure --enable-mysql --enable-root-permission [tecle enter]
./build.sh [tecle enter]
 
Compilado. Caso liste o diretório corrente (com o comando "ls") você perceberá um arquivo novo, chamado "theforgottenserver" dentro dessa pasta. Basta copia-lo para a pasta do seu ot. No exemplo, vamos supor que a pasta do ot se chame otserv, e está dentro de /home (ficando /home/otserv) então vc copia o tfs para dentro da pasta do OT com o comando:
cp theforgottenserver /home/otserv [tecle enter]
cd /home/otserv [tecle enter]
chmod 777 theforgottenserver [tecle enter]
 
Agora vamos criar uma DB e importar a database para o mysql. Esta etapa é somente para OTs com site (mysql), podendo ser descartada se você usa account manager e SQLite.
Primeiramente, temos que logar no Mysql e criar uma DB nova para receber a database.sql. Usamos os seguintes comandos:
mysql -u root -p [enter]
aqui será pedido a senha do mysql. Coloque a senha e de enter. Vai abrir o console do Mysql. Nesse exemplo, vamos criar a database com o nome "otserv". Para isso digite o comando:
create database otserv; [enter]
e para sair do console do mysql digite:
exit; [enter]
 
Pronto. Database criada, vamos agora importar a database para essa nova DB que acabamos de criar. Supondo que o arquivo .sql esteja na pasta do ot (/home /otserv) vams ter certeza que estamos nessa pasta, e digitar o comando para importal (supondo que o arquivo contendo a db se chame database.sql)
cd /home/otserv [enter]
mysql -u root -p otserv < database.sql [enter]
 
Perfeito. Vai pedir a senha do mysql, é só digitar e teclar enter. Se não ver nenhuma mensagem de erro, sua DB foi importada com sucesso. Agora só falta o site. Como ja instalamos o apache juntamente com as libs, é somente jogar o site dentro da pasta /var/www e pronto. Site funcionando. Você pode usar o FileZilla para isso.
 
Perfeito. Só rodar o theforgottenserver e ser feliz ;D digite (dentro da pasta /home/otserv):
 
./theforgottenserver [tecle enter]
 
CRÉDITOS : JVSERVERS.COM.BR
Editado por Luquinha (veja o histórico de edições)

Dp9Y7vq.png

Link para o post
Compartilhar em outros sites

É interessante no comando para instalar os pacotes, não utilizar a versão, pois se algum for atualizado, ao dar este comando na integra, haverá erros, informando que o pacote não foi encontrado!

Do resto, está muito bom o tutorial, não sei como a galera ainda encontra dificuldade em compilar ot no linux...

# Regras Gerais - TibiaKing.com #
Contato: [email protected]
Não respondo dúvidas via MP.


1C2tu.png4Tlqo.png1C2tu.png


 

Link para o post
Compartilhar em outros sites
  • 9 months later...

quando eu compilo não aparece o theforgottenserver,

 

quando eu uso o comando ./autogen.sh aparece isso:

 

autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
autoreconf: Leaving directory `.'

 

 

@AJUDA AI   (y)

 

 

aqui meu configure.ac:

 

AC_PREREQ([2.50])
AC_INIT([TheForgottenServer], [0.4])
AM_INIT_AUTOMAKE([1.10 foreign])
AC_CONFIG_SRCDIR([account.h])
AM_CONFIG_HEADER([config.h])

AC_PROG_CXX
AC_LANG(C++)
# add own flags in here
OPTIONAL_FLAGS="-D__WAR_SYSTEM__"

# check if we want server diag enabled
serverDiag=no
AC_ARG_ENABLE(server-diag, [  --enable-server-diag        enable server diagnostic],
    [OPTIONAL_FLAGS=$OPTIONAL_FLAGS -D__ENABLE_SERVER_DIAGNOSTIC__]
    serverDiag=yes
)

# check if we want login server mode
AM_CONDITIONAL(LOGIN_SERVER, false)
loginServer=no
AC_ARG_ENABLE(login-server, [  --enable-login-server        enable login server mode],
    [OPTIONAL_FLAGS=$OPTIONAL_FLAGS -D__LOGIN_SERVER__]
    AM_CONDITIONAL(LOGIN_SERVER, true)
    loginServer=yes
)

# check if we want OTAdmin protocol
AM_CONDITIONAL(OT_ADMIN, false)
otAdmin=no
AC_ARG_ENABLE(ot-admin, [  --enable-ot-admin        enable OTAdmin protocol],
    [OPTIONAL_FLAGS=$OPTIONAL_FLAGS -D__OTADMIN__]
    AM_CONDITIONAL(OT_ADMIN, true)
    otAdmin=yes
)

# check if we want otserv allocator enabled
otservAllocator=no
AC_ARG_ENABLE(otserv-allocator, [  --enable-otserv-allocator    enable otserv custom allocator],
    [OPTIONAL_FLAGS=$OPTIONAL_FLAGS -D__OTSERV_ALLOCATOR__]
    otservAllocator=yes
)

# check if we want homedir conf enabled
homedirConf=no
AC_ARG_ENABLE(homedir-conf, [  --enable-homedir-conf        enable home directory configuration],
    [OPTIONAL_FLAGS=$OPTIONAL_FLAGS -D__HOMEDIR_CONF__]
    homedirConf=yes
)

# check do we want to allow running on root user
rootPermission=no
AC_ARG_ENABLE(root-permission, [  --enable-root-permission    enable running on root user],
    [OPTIONAL_FLAGS=$OPTIONAL_FLAGS -D__ROOT_PERMISSION__]
    rootPermission=yes
)

# check do we want to be a login server for multiworld
loginServer=no
AC_ARG_ENABLE(login-server, [  --enable-login-server  enable running in a login server mode],
    [OPTIONAL_FLAGS=$OPTIONAL_FLAGS -D__LOGIN_SERVER__]
    loginServer=yes
)

# check if we want to use luajit instead of lua
luaJIT=no
AC_ARG_ENABLE(luajit, [  --enable-luajit        enable luajit instead of lua],
    [OPTIONAL_FLAGS=$OPTIONAL_FLAGS -D__LUAJIT__]
    luaJIT=yes
)
AC_SUBST(OPTIONAL_FLAGS)

# check if we want a debug build
debugBuild=no
AC_ARG_ENABLE(debug, [  --enable-debug        enable debuging],
    [DEBUG_FLAGS=-D__DEBUG__ -D__DEBUG_MOVESYS__ -D__DEBUG_CHAT__ -D__DEBUG_EXCEPTION_REPORT__ -D__DEBUG_HOUSES__ -D__DEBUG_LUASCRIPTS__ -D__DEBUG_MAILBOX__ -D__DEBUG_NET__ -D__DEBUG_NET_DETAIL__ -D__DEBUG_RAID__ -D__DEBUG_SCHEDULER__ -D__DEBUG_SPAWN__ -D__SQL_QUERY_DEBUG__ -O0 -g3]
    debugBuild=yes
)
if test "$debugBuild" = "no" ; then
    DEBUG_FLAGS="-O2 -fomit-frame-pointer" # disable all kinds of debugging
fi

AC_SUBST(DEBUG_FLAGS)

AM_CONDITIONAL(USE_MYSQL, false)
useMySQL=no
AM_CONDITIONAL(USE_PGSQL, false)
usePostgreSQL=no
AM_CONDITIONAL(USE_SQLITE, false)
useSQLite=no

# check if we want mysql enabled
AC_ARG_ENABLE(mysql, [  --enable-mysql        enable MySQL support], [
    AM_CONDITIONAL(USE_MYSQL, true)
    MYSQL_FLAGS=-D__USE_MYSQL__
    AC_SUBST(MYSQL_FLAGS)
    useMySQL=yes
])

# check if we want postgresql enabled
AC_ARG_ENABLE(pgsql, [  --enable-pgsql        enable PostgreSQL support], [
    AM_CONDITIONAL(USE_PGSQL, true)
    PGSQL_FLAGS="-D__USE_PGSQL__ -I`pg_config --includedir`"
    AC_SUBST(PGSQL_FLAGS)
    usePostgreSQL=yes
])

# check if we want sqlite enabled
AC_ARG_ENABLE(sqlite, [  --enable-sqlite        enable SQLite support], [
    AM_CONDITIONAL(USE_SQLITE, true)
    SQLITE_FLAGS=-D__USE_SQLITE__
    AC_SUBST(SQLITE_FLAGS)
    useSQLite=yes
])

# check if we want the profiler
AC_ARG_ENABLE(profiler, [  --enable-profiler        enable profiler support], [PROFILER_FLAGS=-pg])
AC_SUBST(PROFILER_FLAGS)

# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([arpa/inet.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h sys/socket.h sys/timeb.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_CONST
AC_C_INLINE
AC_TYPE_INT16_T
AC_TYPE_INT32_T
AC_TYPE_INT64_T
AC_TYPE_SIZE_T
AC_STRUCT_TM
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_TYPE_UINT8_T
AC_CHECK_TYPES([ptrdiff_t])

# Checks for library functions.
AC_FUNC_MALLOC
AC_FUNC_MEMCMP
AC_FUNC_REALLOC
AC_CHECK_FUNCS([ceil floor ftime gethostbyname gethostname memset pow sqrt strcasecmp strncasecmp strstr strtol])

# check for xml2
AM_PATH_XML2(2.6.5, , AC_MSG_ERROR([You need libxml2 >= 2.6.5 to compile theforgottenserver!]))
LIBS="$LIBS $XML_LIBS"

# check for gmp
AC_CHECK_HEADERS([gmp.h], ,[AC_MSG_ERROR("gmp header not found.")])
AC_CHECK_LIB(gmp, __gmpz_init2, ,[AC_MSG_ERROR("Linking against gmp library failed.")])

# check for zlib
AC_CHECK_HEADERS([zlib.h], ,[AC_MSG_ERROR("zlib header not found.")])
AC_CHECK_LIB(z, main, ,[AC_MSG_ERROR("Linking against zlib library failed.")])

# check for boost
AC_CHECK_LIB(boost_thread-gcc-mt, main, , [
    AC_CHECK_LIB(boost_thread-mt, main, , [
        AC_CHECK_LIB(boost_thread, main, , [
            AC_MSG_ERROR("Linking against boost::thread library failed.")
        ])
    ])
])

AC_CHECK_LIB(boost_regex-gcc-mt, main, , [
    AC_CHECK_LIB(boost_regex-mt, main, , [
        AC_CHECK_LIB(boost_regex, main, , [
            AC_MSG_ERROR("Linking against boost::regex library failed.")
        ])
    ])
])

AC_CHECK_LIB(boost_system-gcc-mt, main, , [
    AC_CHECK_LIB(boost_system-mt, main, , [
        AC_CHECK_LIB(boost_system, main, , [
            AC_MSG_ERROR("Linking against boost::system library failed.")
        ])
    ])
])

AC_CHECK_LIB(boost_date_time-gcc-mt, main, , [
    AC_CHECK_LIB(boost_date_time-mt, main, , [
        AC_CHECK_LIB(boost_date_time, main, , [
            AC_MSG_ERROR("Linking against boost::date-time library failed.")
        ])
    ])
])

AC_CHECK_LIB(boost_filesystem-gcc-mt, main, , [
    AC_CHECK_LIB(boost_filesystem-mt, main, , [
        AC_CHECK_LIB(boost_filesystem, main, , [
            AC_MSG_ERROR("Linking against boost::filesystem library failed.")
        ])
    ])
])

# check for boost::asio
AC_CHECK_HEADERS([boost/asio.hpp], , [AC_MSG_ERROR("boost::asio header not found.")])

# check for boost::unordered_set
AC_CHECK_HEADERS([boost/tr1/unordered_set.hpp], , [AC_MSG_ERROR("boost::unordered_set header not found.")])

# check for Crypto++
AC_CHECK_HEADERS([cryptopp/sha.h cryptopp/md5.h cryptopp/adler32.h cryptopp/hex.h cryptopp/base64.h cryptopp/hmac.h cryptopp/cryptlib.h], , [AC_MSG_ERROR("Required Crypto++ headers not found.")])
AC_CHECK_LIB(cryptopp, main, , [AC_MSG_ERROR("Linking against Crypto++ library failed")])

# check for Lua
PKG_CHECK_MODULES(LUA, lua5.1 >= 5.1, , [
    AC_CHECK_HEADERS([lua.hpp], , [AC_MSG_ERROR("Lua header not found.")])
    AC_CHECK_LIB(lua, main, , [AC_MSG_ERROR("Linking against Lua library failed.")])
])
AC_SUBST(LUA_CFLAGS)
AC_SUBST(LUA_LIBS)

# check for mysql if it is enabled
if test -n "$MYSQL_FLAGS"; then
    AC_CHECK_HEADERS([mysql/mysql.h],[MYSQL_LIBS=-lmysqlclient],[AC_MSG_ERROR("MySQL headers missing.")])
    AC_CHECK_LIB(mysqlclient, main,[],[AC_MSG_ERROR("Linking against mysql-client failed.")])
    AC_SUBST(MYSQL_LIBS)
fi

# check for postgresql if it is enabled
if test -n "$PGSQL_FLAGS"; then
    AC_CHECK_HEADERS([`pg_config --includedir`/libpq-fe.h],[PGSQL_LIBS=-lpg],[AC_MSG_ERROR("PostgreSQL headers missing.")])
    AC_CHECK_LIB(pq, main,[],[AC_MSG_ERROR("Linking against libpq failed.")])
    AC_SUBST(PGSQL_LIBS)
fi

# check for sqlite if it is enabled
if test -n "$SQLITE_FLAGS"; then
    AC_CHECK_HEADERS([sqlite3.h],[sqlITE_LIBS=-lsqlite3],[AC_MSG_ERROR("SQLite3 headers missing.")])
    AC_CHECK_LIB(sqlite3, main,[],[AC_MSG_ERROR("Linking against sqlite3 failed.")])
    AC_SUBST(SQLITE_LIBS)
fi

if test "$useMySQL" = "no" ; then
    if test "$useSQLite" = "no" ; then
        if test "$usePostgreSQL" = "no" ; then
            echo Error: no database driver was enabled! To enable a database driver, configure with --enable-\<dbdriver\> \(example: --enable-mysql\).
            echo
            exit 1
            return 1
        fi
    fi
fi
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

echo
#echo The Forgotten Server 0.4
echo $PACKAGE $VERSION
echo
echo Server diagnostics.......... : $serverDiag
echo Login server mode........... : $loginServer
echo OTAdmin protocol............ : $otAdmin
echo Root run permission......... : $rootPermission
echo Login server mode........... : $loginServer
echo Home-directory configuration : $homedirConf
echo OTServ custom allocator..... : $otservAllocator
echo Debug build................. : $debugBuild
echo Using LuaJIT................ : $luaJIT
echo
echo Build with MySQL............ : $useMySQL
echo Build with SQLite........... : $useSQLite
echo Build with PostgreSQL....... : $usePostgreSQL
echo

echo Configure complete, now you may type \'./build.sh\'.
 

Editado por eddybrow (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo