(一)Apache配置:
如果使用Apache做为Web server,则需要修改Apache的配置,将/login入口的http验证功能取消--移除apache配置文件中的类似如下行的代码:
<LocationMatch "/[^/]+/login">
AuthType Basic
AuthName "trac"
AuthUserFile E:/Trac/passwd.txt
Require valid-user
</LocationMatch>
最终类似这样的配置在http.conf中
<location /webbase/>
SetHandler mod_python
PythonInterpreter main_interpreter
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /var/www/webbase/
PythonOption TracUriRoot /webbase/
SetEnv PYTHON_EGG_CACHE /var/www/webbase/
</location>
(二)修改trac.ini配置:
(1)新增组件的支持:
在[components]段中增加:
trac.web.auth.LoginModule = disabled #禁用传统的登录模块插件
acct_mgr.web_ui.LoginModule = enabled
acct_mgr.web_ui.RegistrationModule = enabled
acct_mgr.htfile.HtPasswdStore = enabled
(2)设置密码表文件:
[account-manager]
password_format = htpasswd
password_store = HtPasswdStore
password_file = /var/www/webbase/conf/.htpasswd #这里配置密码文件的路径,根据实际情况修改
(3)添加初始用户以及修改目录权限
使用下面的命令添加初始用户
$sudo htpasswd -c /var/www/webbase/conf/.htpasswd user_name
并把密码文件的权限改了,包括所有的网站页面,使用以下命令
$ sudo chown -R root:www-data www
$ sudo chmod -R g+rsw www/
(4)给添加的用户admin的管理权限
使用下面的命令把用户设为trac-admin权限
trac-admin /path/to/my/project
permission add username-from-htpasswd TRAC_ADMIN
permission list username-from-htpasswd
这样就可以在管理页面对用户进行管理了。
可以使用的配置比对
# -*- coding: utf-8 -*- [account-manager] account_changes_notify_addresses = authentication_url = force_passwd_change = true generated_password_length = 8 hash_method = HtDigestHashMethod htdigest_realm = htpasswd_hash_type = crypt password_file = /var/www/webbase/conf/.htpasswd password_format = htpasswd password_store = HtPasswdStore persistent_sessions = False user_lock_max_time = 0 verify_email = False [attachment] max_size = 262144 render_unsafe_content = false [browser] color_scale = True downloadable_paths = /trunk, /branches/*, /tags/* hide_properties = svk:merge intermediate_color = intermediate_point = newest_color = (255, 136, 136) oldest_color = (136, 136, 255) oneliner_properties = trac:summary render_unsafe_content = false wiki_properties = trac:description [changeset] max_diff_bytes = 10000000 max_diff_files = 0 wiki_format_messages = true [components] acct_mgr.admin.accountguardadminpage = enabled acct_mgr.admin.accountmanageradminpage = enabled acct_mgr.api.accountmanager = enabled acct_mgr.db.sessionstore = enabled acct_mgr.guard.accountguard = enabled acct_mgr.htfile.abstractpasswordfilestore = enabled acct_mgr.htfile.htdigeststore = enabled acct_mgr.htfile.htpasswdstore = enabled acct_mgr.http.httpauthstore = enabled acct_mgr.notification.accountchangelistener = enabled acct_mgr.notification.accountchangenotificationadminpanel = enabled acct_mgr.pwhash.htdigesthashmethod = enabled acct_mgr.pwhash.htpasswdhashmethod = enabled acct_mgr.svnserve.svnservepasswordstore = enabled acct_mgr.web_ui.accountmodule = enabled acct_mgr.web_ui.emailverificationmodule = enabled acct_mgr.web_ui.loginmodule = enabled acct_mgr.web_ui.registrationmodule = enabled iniadmin.iniadmin.iniadminplugin = disabled svnauthz.* = enabled svnauthz.admin_ui.svnauthzadminpage = enabled timingandestimationplugin.api.timetrackingsetupparticipant = enabled timingandestimationplugin.hours_layout_changer.hourslayoutchanger = enabled timingandestimationplugin.hours_layout_changer.ticketpropslayoutchanger = enabled timingandestimationplugin.query_webui.querywebuiaddon = enabled timingandestimationplugin.stopwatch.ticketstopwatch = enabled timingandestimationplugin.tande_filters.reportsfilter = enabled timingandestimationplugin.tande_filters.timeclickfilter = enabled timingandestimationplugin.tande_filters.totalhoursfilter = enabled timingandestimationplugin.ticket_daemon.timetrackingticketobserver = enabled timingandestimationplugin.ticket_daemon.timetrackingticketvalidator = enabled timingandestimationplugin.ticket_webui.ticketwebuiaddon = enabled timingandestimationplugin.webui.timingestimationandbillingpage = enabled trac.web.auth.loginmodule = disabled tracopt.perm.authz_policy.authzpolicy = enabled tracopt.perm.config_perm_provider.extrapermissionsprovider = enabled tracopt.ticket.commit_updater.committicketreferencemacro = enabled tracopt.ticket.commit_updater.committicketupdater = enabled tracopt.ticket.deleter.ticketdeleter = enabled tracwysiwyg.wysiwygmodule = enabled webadmin.* = enabled webadmin.basics.projectadminpage = enabled webadmin.logging.loggingadminpage = enabled webadmin.perm.permissionadminpage = enabled webadmin.plugin.pluginadminpage = enabled webadmin.ticket.componentadminpage = enabled webadmin.ticket.milestoneadminpage = enabled webadmin.ticket.priorityadminpage = enabled webadmin.ticket.severityadminpage = enabled webadmin.ticket.tickettypeadminpage = enabled webadmin.ticket.versionadminpage = enabled webadmin.web_ui.adminmodule = enabled [header_logo] alt = webbase height = 60 link = http://192.168.6.6/webbase src = width = 390 [inherit] plugins_dir = templates_dir = [logging] log_file = trac.log log_level = DEBUG log_type = none [milestone] stats_provider = DefaultTicketGroupStatsProvider [mimeviewer] max_preview_size = 262144 mime_map = text/x-dylan:dylan,text/x-idl:ice,text/x-ada:ads:adb pygments_default_style = trac pygments_modes = tab_width = 8 treat_as_binary = application/octet-stream,application/pdf,application/postscript,application/msword,application/rtf, [notification] admit_domains = always_notify_owner = false always_notify_reporter = false always_notify_updater = true ambiguous_char_width = single email_sender = SmtpEmailSender ignore_domains = mime_encoding = none sendmail_path = sendmail smtp_always_bcc = smtp_always_cc = smtp_default_domain = smtp_enabled = false smtp_from = trac@localhost smtp_from_name = smtp_password = smtp_port = 25 smtp_replyto = trac@localhost smtp_server = localhost smtp_subject_prefix = __default__ smtp_user = ticket_subject_template = $prefix #$ticket.id: $summary use_public_cc = false use_short_addr = false use_tls = false [project] admin = admin_trac_url = . descr = webbase平台 footer = Visit the Trac open source project at<br /><a href="http://trac.edgewall.org/" mce_href="http://trac.edgewall.org/"></a> icon = common/trac.ico name = webbase url = [query] default_anonymous_query = status!=closed&cc~=$USER default_query = status!=closed&owner=$USER items_per_page = 100 ticketlink_query = ?status=!closed [report] items_per_page = 100 items_per_page_rss = 0 [revisionlog] default_log_limit = 100 [roadmap] stats_provider = DefaultTicketGroupStatsProvider [search] min_query_length = 3 [svn] branches = trunk,branches/* tags = tags/* [svnauthzadmin] show_all_repos = true [ticket] default_cc = default_component = webkit/* default_description = default_keywords = default_milestone = 3/19/11 default_owner = default_priority = major default_resolution = fixed default_severity = default_summary = default_type = task default_version = max_comment_size = 262144 max_description_size = 262144 preserve_newlines = default restrict_owner = false workflow = ConfigurableTicketWorkflow [ticket-custom] billable = checkbox billable.label = Billable? billable.order = 3 billable.value = 1 estimatedhours = text estimatedhours.label = Estimated Number of Hours estimatedhours.order = 1 estimatedhours.value = 0 hours = text hours.label = Add Hours to Ticket hours.order = 2 hours.value = 0 totalhours = text totalhours.label = Total Hours totalhours.order = 4 totalhours.value = 0 [ticket-workflow] accept = new,assigned,accepted,reopened -> accepted accept.operations = set_owner_to_self accept.permissions = TICKET_MODIFY leave = * -> * leave.default = 1 leave.operations = leave_status reassign = new,assigned,accepted,reopened -> assigned reassign.operations = set_owner reassign.permissions = TICKET_MODIFY reopen = closed -> reopened reopen.operations = del_resolution reopen.permissions = TICKET_CREATE resolve = new,assigned,accepted,reopened -> closed resolve.operations = set_resolution resolve.permissions = TICKET_MODIFY [timeline] abbreviated_messages = True changeset_collapse_events = false changeset_long_messages = false changeset_show_files = 0 default_daysback = 30 max_daysback = 90 newticket_formatter = oneliner ticket_show_details = false [trac] auth_cookie_lifetime = 0 auth_cookie_path = authz_file = /opt/svn/webbase/conf/passwd authz_module_name = webbase auto_preview_timeout = 2.0 auto_reload = False backup_dir = db base_url = check_auth_ip = false database = sqlite:db/trac.db debug_sql = False default_charset = utf-8 default_handler = WikiModule default_language = gb2312 default_timezone = genshi_cache_size = 128 htdocs_location = ignore_auth_case = false mainnav = wiki,timeline,roadmap,browser,tickets,newticket,search metanav = login,logout,prefs,help,about mysqldump_path = mysqldump never_obfuscate_mailto = false permission_policies = DefaultPermissionPolicy, LegacyAttachmentPolicy permission_store = DefaultPermissionStore pg_dump_path = pg_dump repository_dir = repository_sync_per_request = (default) repository_type = svn resizable_textareas = true secure_cookies = False show_email_addresses = false show_ip_addresses = false timeout = 20 use_base_url_for_redirect = False [versioncontrol] allowed_repository_dir_prefixes = [wiki] ignore_missing_pages = false max_size = 262144 render_unsafe_content = false safe_schemes = cvs,file,ftp,git,irc,http,https,news,sftp,smb,ssh,svn,svn+ssh split_page_names = false