mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
191 lines
6.1 KiB
Text
191 lines
6.1 KiB
Text
Setup on Arch Linux:
|
|
====================
|
|
1) Install Apache, MySQL, PHP, and git
|
|
# pacman -Sy apache mysql php git
|
|
|
|
2) Set a local 'hostname' of 'aur'
|
|
- Edit /etc/hosts and append 'aur' to loopback address
|
|
127.0.0.1 localhost aur
|
|
|
|
3) Configure Apache
|
|
|
|
- Edit /etc/httpd/conf/httpd.conf and enable PHP support
|
|
by adding the following lines.
|
|
|
|
LoadModule php5_module modules/libphp5.so
|
|
Include conf/extra/php5_module.conf
|
|
|
|
- Also append the following snippet to enable the aur
|
|
Virtual Host (Replace MYUSER with your username).
|
|
|
|
<VirtualHost aur:80>
|
|
Servername aur
|
|
DocumentRoot /home/MYUSER/aur/web/html
|
|
ErrorLog /var/log/httpd/aur-error.log
|
|
CustomLog /var/log/httpd/aur-access.log combined
|
|
<Directory /home/MYUSER/aur/web/html>
|
|
Options Indexes FollowSymLinks
|
|
AllowOverride All
|
|
Order allow,deny
|
|
Allow from all
|
|
</Directory>
|
|
</VirtualHost>
|
|
|
|
4) Clone the AUR project (using the MYUSER from above)
|
|
$ cd
|
|
$ git clone git://projects.archlinux.org/aur.git
|
|
|
|
5) Configure PHP
|
|
Make sure you have mysql and json enabled in PHP.
|
|
|
|
- Edit php.ini and uncomment/add these lines:
|
|
extension=mysql.so
|
|
extension=json.so
|
|
|
|
If those php extensions are separate packages on your system, install
|
|
them.
|
|
|
|
AUR requires PEAR and the File_Find module.
|
|
Installing PEAR will vary depending on the system and may already
|
|
be included with PHP. You can also find it in the PHP source
|
|
distribution.
|
|
|
|
PHP sources: http://www.php.net/downloads.php
|
|
File_Find PEAR module: http://pear.php.net/package/File_Find
|
|
|
|
- Install the File_Find PEAR package:
|
|
# pear install File_Find
|
|
|
|
- Put PEAR in your php include_path in php.ini:
|
|
|
|
include_path = ".:/usr/share/pear"
|
|
|
|
PEAR's path may vary depending on your set up.
|
|
|
|
- AUR does not work properly with PHP's short open tag enabled.
|
|
Be sure you have this in php.ini:
|
|
short_open_tag = Off
|
|
|
|
6) Configure MySQL
|
|
- Start the MySQL service. Example:
|
|
# /etc/rc.d/mysqld start
|
|
|
|
- Connect to the mysql client
|
|
# mysql -uroot
|
|
|
|
- Issue the following commands to the mysql client
|
|
mysql> CREATE DATABASE AUR;
|
|
mysql> GRANT ALL PRIVILEGES ON AUR.* to aur@localhost
|
|
> identified by 'aur';
|
|
mysql> FLUSH PRIVILEGES;
|
|
mysql> quit
|
|
|
|
- Load the schema file
|
|
# mysql -uaur -p AUR < ~/aur/support/schema/aur-schema.sql
|
|
(give password 'aur' at the prompt)
|
|
|
|
- Optionally load some test data for development purposes.
|
|
# pacman -S words mysql-python
|
|
# cd ~/aur/support/schema/
|
|
# python gendummydata.py dummy-data.sql
|
|
# bzip2 dummy-data.sql
|
|
# bzcat dummy-data.sql.bz2 | mysql -uaur -p AUR
|
|
(give password 'aur' at the prompt)
|
|
|
|
If your test data consists of real people and real email addresses consider
|
|
inserting bogus addressess to avoid sending unwanted spam from testing. You
|
|
can insert garbage addresses with:
|
|
mysql> UPDATE Users SET Email = RAND() * RAND();
|
|
|
|
7) Copy the config.inc.proto file to config.inc. Modify as needed.
|
|
# cd ~/aur/web/lib/
|
|
# cp config.inc.proto config.inc
|
|
|
|
8) Point your browser to http://aur
|
|
|
|
|
|
Web Interface:
|
|
==============
|
|
|
|
Directory Layout:
|
|
-----------------
|
|
./html - DocumentRoot for AUR, where the PHP scripts live.
|
|
./html/css - CSS stylesheets
|
|
./html/images - Any AUR images live here.
|
|
./lib - Supporting PHP include files. Access denied to Apache.
|
|
./template - Where most of the html markup resides and minimal
|
|
amount of PHP scripting.
|
|
|
|
There is also a template to model the site's top pages
|
|
in template.phps
|
|
|
|
|
|
Scripts:
|
|
--------
|
|
- lib/aur.inc
|
|
This is where we can stick functions that can be shared
|
|
between the various scripts. Also a good place to put the
|
|
MySQL authentication variables since it should live outside
|
|
the DocumentRoot.
|
|
|
|
- html/login.php (probably index.php)
|
|
PHP script to handle logging users into the AUR web site. It
|
|
authenticates using the email address and a password against
|
|
the Users table. Once authenticated, a session id is generated
|
|
and stored in the Sessions table and sent as a cookie to the
|
|
user's browser.
|
|
|
|
- html/logout.php
|
|
PHP script to logout. It clears the session id from the
|
|
Sessions table and unsets the cookie.
|
|
|
|
- html/account.php
|
|
PHP script to handle registering for a new account. It prompts
|
|
the visitor for account information: Email, password, real name,
|
|
irc nick. The info is recorded in the Users table. Perhaps later,
|
|
we can add a preferences field that allows the user to request to
|
|
be notified when new packages are submitted so that they can cast
|
|
votes for them?
|
|
|
|
If a TU is logged into the system, they can edit accounts and set
|
|
the account type (regular user or TU). If a Dev is logged in, they
|
|
can also set the account type to Dev. TUs and Devs are able to
|
|
delete accounts. If an account is deleted, all "Unsupported"
|
|
packages are orphaned (the MaintainerUID field in the Packages
|
|
table is set to Null).
|
|
|
|
- html/packages.php
|
|
PHP script to search the package database. It should support
|
|
searching by name, category, maintainer, popularity, etc. It
|
|
should resemble the packages.php script on archlinux.org. A
|
|
checkbox should be included next to each package to allow
|
|
users to flag a package out of date, adopt it, and vote for
|
|
it (and reverse operations).
|
|
|
|
- html/pkgsubmit.php
|
|
This is the PHP script that allows users to upload a new package.
|
|
The package format will be a tgz containing the PKGBUILD,
|
|
scriptlets, and patches necessary to build the package from
|
|
source. Initially, the user submitting the package can select
|
|
its category (network, devel, etc) but that can be modified
|
|
later by the adopting TU. The script makes appropriate entries
|
|
into the database (and perhaps notifies interested users of the
|
|
new package).
|
|
|
|
|
|
Terms and Definitions:
|
|
======================
|
|
AUR - Arch Linux User-Community Repository
|
|
Includes:
|
|
- the AUR web site,
|
|
- the [unsupported] 'repository'
|
|
- the [community] repository managed by the TUs
|
|
|
|
TU - Trusted User
|
|
A user that can add binary packages to the [community]
|
|
repository and administer AUR.
|
|
|
|
[unsupported]
|
|
The collection of package build files hosted via the AUR web
|
|
site.
|
|
|