{"id":1981,"date":"2014-07-09T16:20:13","date_gmt":"2014-07-09T12:20:13","guid":{"rendered":"http:\/\/sandalov.org\/blog\/?p=1981"},"modified":"2014-07-09T16:31:12","modified_gmt":"2014-07-09T12:31:12","slug":"trac-1-0-1-in-ubuntu-14-04-with-basic-authentication-nginx-uwsgi","status":"publish","type":"post","link":"https:\/\/sandalov.org\/blog\/1981\/","title":{"rendered":"Trac 1.0.1 in Ubuntu 14.04 with Basic Authentication (Nginx + uWSGI)"},"content":{"rendered":"<div class=\"2d836d85a73757df15d0de19d7bef594\" data-index=\"1\" style=\"float: none; margin:10px 0 10px 0; text-align:center;\">\n<script type=\"text\/javascript\"><!--\r\ngoogle_ad_client = \"ca-pub-2287684400845931\";\r\n\/* valerymorozov *\/\r\ngoogle_ad_slot = \"5606708872\";\r\ngoogle_ad_width = 728;\r\ngoogle_ad_height = 90;\r\n\/\/-->\r\n<\/script>\r\n<script type=\"text\/javascript\"\r\nsrc=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\">\r\n<\/script>\n<\/div>\n<p>Install Trac<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n# install trac package from Ubuntu repo\r\nsudo apt-get install trac\r\n\r\n# init the project files\r\nsudo mkdir -p \/var\/trac\/myproject\r\ncd \/var\/trac\/myproject\r\nsudo trac-admin . initenv\r\n\r\n# basic authentication\r\nsudo apt-get install apache2-utils\r\nsudo htpasswd -c .htpasswd adminusername\r\nsudo trac-admin . permission add adminusername TRAC_ADMIN\r\n\r\n# folder permissions\r\nsudo chown -R www-data: .\r\nsudo chmod -R 775 .\r\n<\/pre>\n<p>cp wsgi_trac.py -> \/var\/trac\/myproject\/<\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\nimport os\r\nimport sys\r\nimport trac.web.main\r\nsys.stdout=sys.stderr\r\nos.environ&#x5B;'TRAC_ENV'] = '\/var\/trac\/myproject'\r\napplication = trac.web.main.dispatch_request\r\n<\/pre>\n<p>cp to \/etc\/nginx\/sites-enabled\/trac.conf or add to \/etc\/nginx\/nginx.conf<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nserver {\r\n  listen  80;\r\n  server_name  trac.local;\r\n\r\n  location \/ {\r\n    auth_basic_user_file \/var\/trac\/myproject\/.htpasswd;\r\n    auth_basic 'this is not for you';\r\n    uwsgi_param REMOTE_USER $remote_user;\r\n\r\n    include  uwsgi_params;\r\n    uwsgi_pass  127.0.0.1:5544;\r\n  }\r\n}\r\n<\/pre>\n<p>cp trac_uwsgi.ini -> \/etc\/uwsgi\/apps-enabled\/<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n&#x5B;uwsgi]\r\nuid=trac\r\ngid=tracsys\r\nchmod-socket=777\r\nchown-socket=trac\r\nchdir = \/var\/trac\/myproject\r\nsocket = 127.0.0.1:5544\r\nmodule = wsgi_trac:application\r\nprocesses = 2\r\nmaster = 1\r\n<\/pre>\n<p>restart the services<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo service nginx restart &amp;&amp; sudo service uwsgi restart\r\n<\/pre>\n<p>Credits: <a href=\"http:\/\/www.dev-smart.com\/archives\/449\" target=\"_blank\">dev-smart<\/a>, <a href=\"http:\/\/habrahabr.ru\/post\/159153\/\" target=\"_blank\">habrahabr<\/a>.<\/p>\n<p><strong>P.S.<\/strong> Don&#8217;t forget about Nginx uwsgi_param REMOTE_USER for authentication to work.<br \/>\nI spent a lot of nerves fixing Trac Error: Authentication information not available \ud83d\ude42<\/p>\n<div class=\"2d836d85a73757df15d0de19d7bef594\" data-index=\"1\" style=\"float: none; margin:10px 0 10px 0; text-align:center;\">\n<script type=\"text\/javascript\"><!--\r\ngoogle_ad_client = \"ca-pub-2287684400845931\";\r\n\/* valerymorozov *\/\r\ngoogle_ad_slot = \"5606708872\";\r\ngoogle_ad_width = 728;\r\ngoogle_ad_height = 90;\r\n\/\/-->\r\n<\/script>\r\n<script type=\"text\/javascript\"\r\nsrc=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\">\r\n<\/script>\n<\/div>\n\n<div style=\"font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Install Trac # install trac package from Ubuntu repo sudo apt-get install trac # init the project files sudo mkdir -p \/var\/trac\/myproject cd \/var\/trac\/myproject sudo trac-admin . initenv # basic authentication sudo apt-get install apache2-utils sudo htpasswd -c .htpasswd adminusername sudo trac-admin . permission add adminusername TRAC_ADMIN # folder permissions &hellip; <a class=\"continue-reading-link\" href=\"https:\/\/sandalov.org\/blog\/1981\/\"> Continue reading <span class=\"meta-nav\">&rarr; <\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1981","post","type-post","status-publish","format-standard","hentry","category-unsorted"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sandalov.org\/blog\/wp-json\/wp\/v2\/posts\/1981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sandalov.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sandalov.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sandalov.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sandalov.org\/blog\/wp-json\/wp\/v2\/comments?post=1981"}],"version-history":[{"count":8,"href":"https:\/\/sandalov.org\/blog\/wp-json\/wp\/v2\/posts\/1981\/revisions"}],"predecessor-version":[{"id":1989,"href":"https:\/\/sandalov.org\/blog\/wp-json\/wp\/v2\/posts\/1981\/revisions\/1989"}],"wp:attachment":[{"href":"https:\/\/sandalov.org\/blog\/wp-json\/wp\/v2\/media?parent=1981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sandalov.org\/blog\/wp-json\/wp\/v2\/categories?post=1981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sandalov.org\/blog\/wp-json\/wp\/v2\/tags?post=1981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}