summaryrefslogtreecommitdiffstats
path: root/INSTALL
blob: bad80de389ab8946d717bed16b373d97e4872d10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Setup on Arch Linux
===================

1) Clone the aurweb project:

   $ cd /srv/http/
   $ git clone git://git.archlinux.org/aurweb.git

2) Setup a web server with PHP and MySQL. Configure the web server to redirect
   all URLs to /index.php/foo/bar/. The following block can be used with nginx:

    server {
        listen       80;
        server_name  aur.local aur;

        root   /srv/http/aurweb/web/html;
        index  index.php;

        location ~ ^/[^/]+\.php($|/) {
            fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_split_path_info ^(/[^/]+\.php)(/.*)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO        $fastcgi_path_info;
            include        fastcgi_params;
        }

        location ~ .* {
            rewrite ^/(.*)$ /index.php/$1 last;
        }
    }

3) Copy conf/config.proto to /etc/aurweb/config and adjust the configuration
   (pay attention to disable_http_login, enable_maintenance and aur_location).

4) Create a new MySQL database and a user and import the aurweb SQL schema:

    $ mysql -uaur -p AUR </srv/http/aurweb/schema/aur-schema.sql

5) Install Python modules and dependencies:

    # pacman -S python-mysql-connector python-pygit2 python-srcinfo
    # python3 setup.py install

6) Create a new user:

    # useradd -U -d /srv/http/aurweb -c 'AUR user' aur

7) Initialize the Git repository:

    # mkdir /srv/http/aurweb/aur.git/
    # cd /srv/http/aurweb/aur.git/
    # git init --bare
    # git config --local transfer.hideRefs '^refs/'
    # git config --local --add transfer.hideRefs '!refs/'
    # git config --local --add transfer.hideRefs '!HEAD'
    # ln -s /usr/local/bin/aurweb-git-update hooks/update
    # chown -R aur .

8) Configure sshd(8) for the AUR. Add the following lines at the end of your
   sshd_config(5) and restart the sshd. Note that OpenSSH 6.9 or newer is
   needed!

    Match User aur
        PasswordAuthentication no
        AuthorizedKeysCommand /usr/local/bin/aurweb-git-auth "%t" "%k"
        AuthorizedKeysCommandUser aur

9) If you want to enable smart HTTP support with nginx and fcgiwrap, you can
   use the following directives:

    location ~ "^/([a-z0-9][a-z0-9.+_-]*?)(\.git)?/(git-(receive|upload)-pack|HEAD|info/refs|objects/(info/(http-)?alternates|packs)|[0-9a-f]{2}/[0-9a-f]{38}|pack/pack-[0-9a-f]{40}\.(pack|idx))$" {
        fastcgi_pass   unix:/run/fcgiwrap.sock;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
        fastcgi_param  PATH_INFO /aur.git/$3;
        fastcgi_param  GIT_HTTP_EXPORT_ALL "";
        fastcgi_param  GIT_NAMESPACE $1;
        fastcgi_param  GIT_PROJECT_ROOT /srv/http/aurweb/;
    }

   Sample systemd unit files for fcgiwrap can be found under conf/.