0
|
1 # Ubuntu下 apache2 和 hgweb 的安装
|
|
2 ## 安装
|
|
3 1. 安装 apache2、 hgweb
|
|
4 ```shell
|
|
5 sudo apt install apache2 mercurial libapache2-mod-wsgi-py3 apache2-utils
|
|
6 ```
|
|
7 2. 验证环境
|
|
8 ```shell
|
|
9 # 启用apache2
|
|
10 sudo systemctl start apache2
|
|
11 sudo systemctl enable apache2
|
|
12
|
|
13 # 查看HG
|
|
14 hg --version
|
|
15 ```
|
|
16 3. 创建文件夹和默认仓库
|
|
17 ```shell
|
|
18 sudo mkdir /var/hg
|
|
19 sudo hg init /var/hg/myrepo
|
|
20
|
|
21 #设置文件夹权限
|
|
22 sudo chown -R www-data:www-data /var/hg
|
|
23 sudo chmod -R 755 /var/hg
|
|
24 ```
|
|
25 4. 创建 ```/var/hg/hgweb.config``` 文件
|
|
26 ```shell
|
|
27 [web]
|
|
28 allow_push = *
|
|
29 push_ssl = true
|
|
30 allow_archive = gz, zip, bz2
|
|
31
|
|
32 [paths]
|
|
33 / = /var/hg/*
|
|
34 ```
|
|
35
|
|
36 5. 创建 ``` /var/hg/hgweb.wsgi``` 文件
|
|
37 ```shell
|
|
38 import sys
|
|
39 import os
|
|
40 from mercurial import demandimport
|
|
41 demandimport.enable()
|
|
42
|
|
43 # 设置编码为UTF-8
|
|
44 if not isinstance(os.environ.get('PYTHONIOENCODING'), str):
|
|
45 os.environ['PYTHONIOENCODING'] = 'utf-8'
|
|
46
|
|
47 from mercurial.hgweb.hgwebdir_mod import hgwebdir
|
|
48
|
|
49 application = hgwebdir(b'/var/hg/hgweb.config')
|
|
50 ```
|
|
51 6. 创建 ```/etc/apache2/sites-available/hgweb.conf```
|
|
52 ```shell
|
|
53 <VirtualHost *:80>
|
|
54 ServerName repo.nnsui.com
|
|
55
|
|
56 RewriteEngine On
|
|
57 RewriteCond %{HTTPS} !=on
|
|
58 RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
|
|
59 </VirtualHost>
|
|
60
|
|
61 <VirtualHost *:443>
|
|
62 ServerName repo.nnsui.com
|
|
63
|
|
64 SSLEngine On
|
|
65 SSLCertificateFile /etc/apache2/cert/nnsui.com.pem
|
|
66 SSLCertificateKeyFile /etc/apache2/cert/nnsui.com.key
|
|
67
|
|
68 WSGIScriptAlias / /var/hg/hgweb.wsgi
|
|
69 WSGIDaemonProcess hgweb user=www-data group=www-data processes=2 threads=15
|
|
70 WSGIProcessGroup hgweb
|
|
71
|
|
72 <Directory /var/hg>
|
|
73 Require all granted
|
|
74 </Directory>
|
|
75
|
|
76 <Location "/">
|
|
77 AuthType Basic
|
|
78 AuthName "Restricted Access"
|
|
79 AuthUserFile /etc/apache2/hgweb.htpasswd
|
|
80 Require valid-user
|
|
81 <Limit GET>
|
|
82 Require all granted
|
|
83 </Limit>
|
|
84 <LimitExcept GET>
|
|
85 Require valid-user
|
|
86 </LimitExcept>
|
|
87 </Location>
|
|
88 </VirtualHost>
|
|
89 ```
|
|
90
|
|
91 7. 启用apache2模块
|
|
92 ```shell
|
|
93 sudo a2enmod wsgi
|
|
94 sudo a2enmod ssl
|
|
95 sudo a2enmod rewrite
|
|
96 ```
|
|
97 8. 启动!
|
|
98 ```shell
|
|
99 # 检查配置
|
|
100 sudo apachectl configtest
|
|
101 # 重启
|
|
102 sudo a2ensite hgweb
|
|
103
|
|
104 sudo systemctl restart apache2
|
|
105 ```
|
|
106 9. 创建 ```htpasswd``` 文件并添加用户
|
|
107 ```shell
|
|
108 sudo htpasswd -c /etc/apache2/hgweb.htpasswd pluto
|
|
109 ```
|
|
110
|
|
111 10. |