Web server/apache neaiškumai

E
  • 2 Vas '14

Sveiki,
Susimaniau susikurti web serverį asmeniniam naudojimui ir susidūriau su bėda, negaliu parsisiųsti failų. Tinklapį atidaro, o failų parsisiųst neleidžia. Kame šaknys?
Failus keliu ten pat, kur ir tinkplį, t.y. į /var/www. Prie failų bandau prieiti taip: manoip:portas/failas.zip
Ačiū už bet kokią pagalbą.

G
  • 2 Vas '14

Berods reikia pridėti direktyvą prie vhost'o: Options Indexes

Kitas dalykas, failai turi būti prieinami vartotojui, ant kurio pakabintas apache (paprastai www-data). Tam reikalui pabandyk:

sudo chown -R www-data: /var/www

Priedas.
arba, bent laikinai, leisk visiems prieiti prie failų:

sudo find /var/www -type f -exec chmod 666 {} \;
sudo find /var/www -type d -exec chmod 777 {} \;
E
  • 2 Vas '14

Dėkui, antras variantas padėjo.

G
  • 2 Vas '14

Liuks!

Ateičiai, kad nebereiktų kaitaliot failų savininko, gali pabandyt nustatyt grupės sticky bit'ą:

sudo chmod g+s /var/www

Po šitos komandos, kad ir kas rašytų į /var/www, net jei ir pats ponas root'as, grupė bus nustatyta tokia, kokia yra nustatyta /var/www. Kadangi su praeita komanda pakeitei savininką ir grupę į www-data, tai gausis, kad jei pats ar kas kitas kažką įdės į šį aplanką, failas iškart gaus www-data grupę, todėl iškart galėsi pasiekti savo failus per apache, papildomai nieko nekaitaliodamas.

E
  • 2 Vas '14

Dėkui, naudingi patarimai

T
Techtronic
Mindaugas N.
  • 3 Vas '14

O jeigu reikia 'laikino' failu hostinimo, tai geras pagalbininkas yra twistd ftp/web modulis.
Kaip pvz as naudoju toki zsh skripta:

function share() {
    # Tikrinam ar tikrai turim twistd.
    if [[ ! -x $(which twistd 2>/dev/null) ]]; then
    zprint 3 "twistd" "not found!"
    return
    fi
    # 
    if [[ -n ${@} ]]; then
    typeset -A WEB
    WEB[PORT]="80"                        # Port to start the server on
    WEB[HOST]="$(curl -s ip.appspot.com)" # Host
    WEB[PATH]="${HOME}/public_html/share" # Path to share folder
    WEB[FILE]="${@}"                      # $1 file/dir to share
    WEB[PID]="${TMP}/twistd.pid"          # Name of the pidfile
    WEB[UID]="$(id --user)"               # The uid to run as.
    WEB[GID]="$(id --group)"              # The gid to run as.
    if [[ -d "${WEB[FILE]}" ]]; then
            zprint 1 "Share:" "${WEB[FILE]}/"
            zprint 1 "Share:" "http://${WEB[HOST]}:${WEB[PORT]}/"
            sudo twistd --uid=${WEB[UID]} --gid=${WEB[GID]} --pidfile=${WEB[PID]} -n web \
        --port ${WEB[PORT]} --path ${WEB[FILE]}
    else
            mkdir -p --verbose ${WEB[PATH]}
        zprint 1 "${WEB[FILE]}" "${WEB[PATH]}/"
            cpv ${@} ${WEB[PATH]}/
            zprint 1 "Share:" "http://${WEB[HOST]}:${WEB[PORT]}/"
            sudo twistd --uid=${WEB[UID]} --gid=${WEB[GID]} --pidfile=${WEB[PID]} -n web \
        --port ${WEB[PORT]} --path ${WEB[PATH]}
    fi
    else
        zprint 3 "Usage:" "share [files|dir]"
    fi
}
E
  • 3 Vas '14

Ačiū, bet kolkas man labai patogu ir paprastas web apache serveris, nes kolkas tinklapis valdomas nuotoliniu būdu

T
Techtronic
Mindaugas N.
  • 3 Vas '14

Taip, Apache httpd yra tikrai patogiau.
Bet tikiu kam nors pravers ir toks paprastas twistd budas.

Instaliuoti twistd jeigu neklystu galima su komanda:

apt-get install twistd

Dabar share /tmp folder'i (http://127.0.0.1:8080):

twistd --port 8080 -n web --path /tmp

Arba ftp (ftp://127.0.0.1:2121):

twistd -n ftp --port 2121 --root /tmp
E
  • 7 Vas '14

Šiaip jei reikia greitai, greitai nieko neinstaliuojant python turi webserverį built-in:

python -m SimpleHTTPServer [port]

ar

python3 -m http.server [port]

Žinoma pirmą reikia padaryti cd į aplanką ir apie didelį saugumą ir funkcionalumą nesvajok, bet kokį failą pahostinti waifajui labai naudinga.

C
  • 3 Kov '14

nežinau ar teisingai supratau klausimo esmę, bet aš tą klausimą sprendžiau paprasčiau, per gui:

ir viskas puikiai veikia.

T
Techtronic
Mindaugas N.
  • 21 Kov '14

cyf, klaidingai. Useris yra geras jeigu naudojamas Per-user web directories (mod_userdir), bet va group yra klaidingas. Jis turetu buti users (bet gal cia problema pacio ubuntu).
http://httpd.apache.org/docs/2.4/howto/public_html.html

Nors as tokiu budu keisti teises palaikau, bet visiskai nenaudingas siuo atveju nes teises pakeisti www-data neturesi.

http://en.wikipedia.org/wiki/Unix_permissions