# HG changeset patch # User Pluto # Date 1725352252 -28800 # Node ID edd512324c03959af21962c72780a85ac46db540 Add:Mercurial Files diff -r 000000000000 -r edd512324c03 Mercurial/CreathgRepos.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Mercurial/CreathgRepos.sh Tue Sep 03 16:30:52 2024 +0800 @@ -0,0 +1,42 @@ +#!/bin/bash + +# 提示用户输入仓库名称 +echo "请输入仓库名称(不要中文):" +read repo_name + +# 创建仓库目录 +repo_path="/var/hg/$repo_name" +mkdir -p "$repo_path" + +# 检查目录是否创建成功 +if [ ! -d "$repo_path" ]; then + echo "目录创建失败,请检查权限或磁盘空间。" + exit 1 +fi + +# 初始化Mercurial仓库 +hg init "$repo_path" + +# 更改仓库所有者为www-data +sudo chown -R www-data:www-data "$repo_path" + +# 更改仓库权限为755 +sudo chmod -R 755 "$repo_path" + +# 提示用户输入description和contact的内容 +echo "请输入description的内容:" +read description +echo "请输入contact的内容:" +read contact + +# 构建hgrc文件内容 +hgrc_content="[web] +description = $description +contact = $contact" + +# 写入.hg/hgrc文件 +hgrc_path="$repo_path/.hg/hgrc" +echo "$hgrc_content" | sudo tee "$hgrc_path" > /dev/null + +echo "仓库已成功创建并配置在 $repo_path" +echo "hgrc文件已更新。" \ No newline at end of file diff -r 000000000000 -r edd512324c03 Mercurial/apache.hg.conf.exmaple --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Mercurial/apache.hg.conf.exmaple Tue Sep 03 16:30:52 2024 +0800 @@ -0,0 +1,30 @@ + +ServerName hg.nnsui.com +RewriteEngine On +RewriteCond %{HTTPS} !=on +RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] + + +ServerName hg.nnsui.com +SSLEngine On +SSLCertificateFile /etc/apache2/cert/nnsui.com.pem +SSLCertificateKeyFile /etc/apache2/cert/nnsui.com.key +WSGIScriptAlias / /var/hg/hgweb.wsgi +WSGIDaemonProcess hgweb user=www-data group=www-data processes=2 threads=15 +WSGIProcessGroup hgweb + +Require all granted + + +AuthType Basic +AuthName "Restricted Access" +AuthUserFile /etc/apache2/hgweb.htpasswd +Require valid-user + +Require all granted + + +Require valid-user + + + \ No newline at end of file diff -r 000000000000 -r edd512324c03 Mercurial/doc/Install-Mercurial-on-Ubuntu.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Mercurial/doc/Install-Mercurial-on-Ubuntu.md Tue Sep 03 16:30:52 2024 +0800 @@ -0,0 +1,111 @@ +# Ubuntu下 apache2 和 hgweb 的安装 +## 安装 +1. 安装 apache2、 hgweb +```shell +sudo apt install apache2 mercurial libapache2-mod-wsgi-py3 apache2-utils +``` +2. 验证环境 +```shell +# 启用apache2 +sudo systemctl start apache2 +sudo systemctl enable apache2 + +# 查看HG +hg --version +``` +3. 创建文件夹和默认仓库 +```shell +sudo mkdir /var/hg +sudo hg init /var/hg/myrepo + +#设置文件夹权限 +sudo chown -R www-data:www-data /var/hg +sudo chmod -R 755 /var/hg +``` +4. 创建 ```/var/hg/hgweb.config``` 文件 +```shell +[web] +allow_push = * +push_ssl = true +allow_archive = gz, zip, bz2 + +[paths] +/ = /var/hg/* +``` + +5. 创建 ``` /var/hg/hgweb.wsgi``` 文件 +```shell +import sys +import os +from mercurial import demandimport +demandimport.enable() + +# 设置编码为UTF-8 +if not isinstance(os.environ.get('PYTHONIOENCODING'), str): + os.environ['PYTHONIOENCODING'] = 'utf-8' + +from mercurial.hgweb.hgwebdir_mod import hgwebdir + +application = hgwebdir(b'/var/hg/hgweb.config') +``` +6. 创建 ```/etc/apache2/sites-available/hgweb.conf``` +```shell + + ServerName repo.nnsui.com + + RewriteEngine On + RewriteCond %{HTTPS} !=on + RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] + + + + ServerName repo.nnsui.com + + SSLEngine On + SSLCertificateFile /etc/apache2/cert/nnsui.com.pem + SSLCertificateKeyFile /etc/apache2/cert/nnsui.com.key + + WSGIScriptAlias / /var/hg/hgweb.wsgi + WSGIDaemonProcess hgweb user=www-data group=www-data processes=2 threads=15 + WSGIProcessGroup hgweb + + + Require all granted + + + + AuthType Basic + AuthName "Restricted Access" + AuthUserFile /etc/apache2/hgweb.htpasswd + Require valid-user + + Require all granted + + + Require valid-user + + + +``` + +7. 启用apache2模块 +```shell +sudo a2enmod wsgi +sudo a2enmod ssl +sudo a2enmod rewrite +``` +8. 启动! +```shell +# 检查配置 +sudo apachectl configtest +# 重启 +sudo a2ensite hgweb + +sudo systemctl restart apache2 +``` +9. 创建 ```htpasswd``` 文件并添加用户 +```shell +sudo htpasswd -c /etc/apache2/hgweb.htpasswd pluto +``` + +10. \ No newline at end of file diff -r 000000000000 -r edd512324c03 Mercurial/hgweb.config.exmaple --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Mercurial/hgweb.config.exmaple Tue Sep 03 16:30:52 2024 +0800 @@ -0,0 +1,6 @@ +[web] +allow_push = * +push_ssl = true +allow_archive = gz, zip, bz2 +[paths] +/ = /var/hg/* \ No newline at end of file diff -r 000000000000 -r edd512324c03 Mercurial/hgweb.wsgi.exmaple --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Mercurial/hgweb.wsgi.exmaple Tue Sep 03 16:30:52 2024 +0800 @@ -0,0 +1,15 @@ +import sys +import os +from mercurial import demandimport +demandimport.enable() +# 设置编码为UTF-8 +if not isinstance(os.environ.get('PYTHONIOENCODING'), str): +os.environ['PYTHONIOENCODING'] = 'utf-8' +from mercurial.hgweb.hgwebdir_mod import hgwebdir +# 确保配置文件路径正确 +config_path = '/var/hg/hgweb.config' +if not os.path.isabs(config_path): +config_path = os.path.join(os.getcwd(), config_path) +# 确保路径是字节串,以防 Mercurial 需要字节串路径 +config_path_bytes = config_path.encode('utf-8') +application = hgwebdir(config_path_bytes) \ No newline at end of file