Postado Maio 29, 2013 11 anos 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: 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: 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: 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 digite (dentro da pasta /home/otserv): ./theforgottenserver [tecle enter] CRÉDITOS : JVSERVERS.COM.BR Editado Maio 29, 2013 11 anos por Luquinha (veja o histórico de edições)
Postado Maio 29, 2013 11 anos É 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...
Postado Março 28, 2014 11 anos 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 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 Março 28, 2014 11 anos por eddybrow (veja o histórico de edições)
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.