我一直在使用这个教程在我的Ubuntu PC上build立一个Apache虚拟主机。 我创build了一个no-ip domain ,我将用它作为我的虚拟主机的主机名。 我已经按照教程的每一步,但它不起作用。 这是虚拟主机文件,名为crm2plus.ddns.net.conf :
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin [email protected] ServerName crm2plus.ddns.net ServerAlias crm2plus.ddns.net DocumentRoot /var/www/crm2plus.ddns.net/public_html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, eg #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost> <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www> Options Indexes FollowSymLinks MultiViews AllowOverride All Order Allow,Deny Allow from all </Directory> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
我也添加了IP和域名对我的本地主机文件,这是它的外观:
23.253.21.201 shhasan.ddns.net 127.0.1.1 Ubuntu-Dev 127.0.0.1 localhost 99.250.71.177 crm2plus.ddns.net # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
当我导航到crm2plus.ddns.net通过铬我得到的web page not available page 。 shhasan.ddns.net工作正常。 当我键入ssh-keygen -H -F crm2plus.ddns.net到terminal没有显示,但是当我inputssh-keygen -H -F shhasan.ddns.net这是什么显示:
# Host shhasan.ddns.net found: line 14 type RSA
其次是RSA密钥。
我也看了Apache的错误和访问日志。 错误日志有很多这样的代码行的重复:
[Fri Nov 14 17:44:50.304782 2014] [mpm_prefork:notice] [pid 21927] AH00163: Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.5 configured -- resuming normal operations [Fri Nov 14 17:44:50.304801 2014] [core:notice] [pid 21927] AH00094: Command line: '/usr/sbin/apache2' [Fri Nov 14 17:44:54.979832 2014] [mpm_prefork:notice] [pid 21927] AH00169: caught SIGTERM, shutting down
我search了caught SIGTERM, shutting down ,我发现这是正常操作的一部分。 我不知道我要去哪里错。 它以前曾经为shhasan.ddns.net工作,但它不适用于crm2plus.ddns.net 。
所有的帮助和build议非常感谢。
更新:
developer@Ubuntu-Dev:/etc/apache2$ ls apache2.conf apache2.conf.dpkg-dist conf-enabled httpd.conf magic mods-enabled ports.conf~ sites-enabled apache2.conf~ conf-available envvars httpd.conf~ mods-available ports.conf sites-available
developer@Ubuntu-Dev:/etc/apache2/sites-available$ ls 000-default.conf 000-default.conf~ 000-default.conf.dpkg-dist crm2plus.ddns.net.conf crm2plus.ddns.net.conf~ default.save default-ssl.conf shhasan.ddns.net.conf
developer@Ubuntu-Dev:/etc/apache2/sites-enabled$ ls crm2plus.ddns.net.conf shhasan.ddns.net.conf
apache2.conf缩短版本:
Include /etc/phpmyadmin/apache.conf ServerName localhost Mutex file:${APACHE_LOCK_DIR} default PidFile ${APACHE_PID_FILE} Timeout 300 KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} HostnameLookups Off ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn IncludeOptional mods-enabled/*.load IncludeOptional mods-enabled/*.conf Include ports.conf <Directory /> Options FollowSymLinks AllowOverride All # Order deny,allow # Deny from all </Directory> <Directory /usr/share> AllowOverride None Require all granted </Directory> <Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> #<Directory /srv/> # Options Indexes FollowSymLinks # AllowOverride None # Require all granted #</Directory> AccessFileName .htaccess <FilesMatch "^\.ht"> Require all denied </FilesMatch> LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %O" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent IncludeOptional conf-enabled/*.conf IncludeOptional sites-enabled/*.conf
/etc/phpmyadmin/apache.conf文件:
# phpMyAdmin default Apache configuration Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php <IfModule mod_php5.c> AddType application/x-httpd-php .php php_flag magic_quotes_gpc Off php_flag track_vars On php_flag register_globals Off php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/javascript/ </IfModule> </Directory> # Authorize for setup <Directory /usr/share/phpmyadmin/setup> <IfModule mod_authn_file.c> AuthType Basic AuthName "phpMyAdmin Setup" AuthUserFile /etc/phpmyadmin/htpasswd.setup </IfModule> Require valid-user </Directory> # Disallow web access to directories that don't need it <Directory /usr/share/phpmyadmin/libraries> Order Deny,Allow Deny from All </Directory> <Directory /usr/share/phpmyadmin/setup/lib> Order Deny,Allow Deny from All </Directory>
它看起来像第二个.conf文件尚未加载。 这可以通过在conf / apache2.conf Include path/to/conf_files/*.conf并重新启动apache来完成。
请注意,访问日志中应该logging对crm2plus.ddns.net的访问。 否则会出现configuration错误 。
虚拟主机可以configuration如下。
这个基本的例子已经在apache2.conf中实现了:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/mydomain.com ServerName mydomain.com ErrorLog logs/mydomain.com-error_log CustomLog logs/mydomain.com-access_log common </VirtualHost> <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/myseconddomain.com ServerName myseconddomain.com ErrorLog logs/myseconddomain.com-error_log CustomLog logs/myseconddomain.com-access_log common </VirtualHost>
mkdir /var/www/mydomain.com && echo helloworld > /var/www/mydomain.com/index.html
mkdir /var/www/myseconddomain.com && echo helloworld2 > /var/www/myseconddomain.com/index.html
它的工作原理,即导航到mydomain.com显示helloworld和myseconddomain.com结果helloworld2一旦服务已经重新启动。
build议从头开始实施两个基本的VirtualHosts,以确保基本的工作。 一旦实现了这一点,就可以做出其他的改变。
RiggsFolly在stackoverflow上的答案的虚拟主机定义的一个稍微编辑版本为crm2plus.ddns.net
<VirtualHost *:80> ServerName crm2plus.ddns.net ServerAlias crm2plus.ddns.net ServerRoot /var/www/crm2plus.ddns.net/ DocumentRoot /var/www/crm2plus.ddns.net/public_html <Directory "/var/www/crm2plus.ddns.net/public_html"> Options +Indexes +FollowSymLinks Order allow,deny Allow from all AllowOverride All </Directory> # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn ErrorLog ${APACHE_LOG_DIR}/crm2plus.ddns.net_error.log CustomLog ${APACHE_LOG_DIR}/crm2plus.ddns.net_access.log combined </VirtualHost>