![1855fa27bad07648a6d27d41226ff959.png](https://i-blog.csdnimg.cn/blog_migrate/42807859d1963fc3375e431ea8955521.jpeg)
cat /etc/resolv.conf 显示WSL IP地址
一、 安装apache2
前提:先配置linux安装包镜像:https://www.jianshu.com/p/6b4463b6b39f
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bk 备份
然后 用Vim打开 :sudo vi /etc/apt/sources.list 修改
在退出:wq 保存
再安装 GUNhttps://devblogs.microsoft.com/cppblog/targeting-windows-subsystem-for-linux-from-visual-studio/
$ sudo apt install -y build-essential
$ sudo apt install -y gdbserver
最好 也执行下 sudo apt install gdb 后面能用到。,紧接着执行
sudo apt-get update sudo apt-get upgrade
1.1 apache2可直接用命令安装(若之前没安装过)
sudo apt-get install apache2 (以下都是在bash下输入就行) (whereis 包)查看包安装路径
2.2 卸载比较麻烦,必须卸干净,否则会影响apache2再安装
(1)先移除相关文件包
sudo apt-get --purge remove apache2
sudo apt-get --purge remove apache2.2-common
sudo apt-get autoremove
问题:若在这一步卸载后出现Unable to locate package错误。
则输入:sudo apt-get update 后输入 sudo apt-get upgrade 再重复上面指令。
(2)找到没有删除掉的配置文件,一并删除
sudo find /etc -name "*apache*" -exec rm -rf {} ;
sudo rm -rf /var/www
(可选)sudo rm -rf /etc/libapache2-mod-jk
(3)查看安装成功否,安装位置,查看Apache版本
(可选)sudo system status apache2
whereis apache2
apache2 -v
(4)开启/重启apache2服务
sudo service apache2 start/restart 或者 sudo httpd -k start/restart
sudo /etc/init.d/apache2 start/restart
(5)浏览器验证 http://localhost(或者输入本机服务器IP http://127.0.0.1),查看Apache服务器默认网页是否运行正常,网页图如下:
![7ea2fe400f3a1097df7996a4cd950675.png](https://i-blog.csdnimg.cn/blog_migrate/45f894df0b17bbb8a23068cb89faa1a3.jpeg)
二、配置文件
2.1 apache2配置文件简单说明如下图
![97777df266e075addc95e5dcebe83a5f.png](https://i-blog.csdnimg.cn/blog_migrate/6cd847ea1c44cb657b0091b4b098ff07.png)
- apache2.conf 路径 /etc/apache2/apache2.conf
主配置文件,主要用来读取其他配置文件,同时有少量服务器配置(超时时间,网站根目录等)
- ports.conf 路径/etc/apache2/
监听端口配置
- ****-enabled/ 路径同上
全部是指向 ***-available 下的文件的软链接,通过增删软链接来动态修改功能
严格来说,apache2的配置文件是分散的。apache先加载apache2.conf,然后根据apache2.conf里的Include指令载入其他配置文件。
- 动态模块的配置
Include mods-enabled/*.load
Include mods-enabled/*.conf
- 用户自己的配置
Include httpd.conf
- 端口监听的配置
Include ports.conf
- 一般性的配置语句片断
Include conf.d/
- 虚拟主机的配置指令
Include sites-enabled/ web的默认根目录是在/var/www/html,设置是在/etc/apache2/sites-enabled(或者sites-available)/000-default 见如下:可以自定义修改web根目录。若修改上述文件不行还得一同修改/etc/apache2下的apache2.conf,下面代码一样,都是找到<Directory /var/www/>这个参数,把其中的/var/www/ 改为自己想自定义的目录,比如var/www/cgi-bin
具体为:
1).编辑/etc/apache2/apache2.conf这个主配置文件,找到<Directory /var/www/>这个参数,把其中的/var/www/改为自己想自定义的目录。
2).编辑/etc/apache2/sites-available/000-default.conf这个默认配置文件,找到”DocumentRoot /var/www/html” 这个参数,把其中的/var/www/html同样修改为自己想自定义的目录。
<
- web的默认主页是在/etc/apache2/mods-enabled/dir.conf里
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
- XXX-enabled 和XXX-available目录,
XXX-enabled中放的是指向XXX-available中相应文件的符号链接,不过虽然如此,只有用ln命令把XXX-available中的文件链接到XXX-enabled中才能起作用。(比如接下来的CGI配置)在/var/www下创建一个目录 cgi-bin,作为cgi程序存放的地点,
2.2.修改完配置后需要重启Apache服务。
sudo /etc/init.d/apache2 restart
在浏览器地址栏输入服务器IP测试,此时显示的是自定义目录下的文件,如下图
![717e0c5fea37268c90e5a3b8845d7b28.png](https://i-blog.csdnimg.cn/blog_migrate/3c4cd0556aacd18297f75567bd9e2c1b.png)
问题:软链接与硬链接?见 https://www.jianshu.com/p/b035d94fa959
ubuntu下文件颜色代表意思?见https://blog.csdn.net/AC_huang/article/details/24669589
三、CGI 配置
方法一
3.1添加CGI模块
就是在httpd.conf里没注释掉 LoadModule cgid_module modules/mod_cgid.so 这一行
![188d944297166d08184521c6abbc0b87.png](https://i-blog.csdnimg.cn/blog_migrate/ef13c838944c8bb179c0aa9b1257f153.png)
但是最新版本 已经去掉了该模块。
![537f51cce347a3a85dc7a5229fb034ed.png](https://i-blog.csdnimg.cn/blog_migrate/25ef2b4c6d5fef48647ce1dd8e7067dc.jpeg)
3.2 创建两个软链接:
sudo ln -s /etc/apache2/mods-available/cgid.conf /etc/apache2/mods-enabled/cgid.conf
sudo ln -s /etc/apache2/mods-available/cgid.load /etc/apache2/mods-enabled/cgid.load
![95cfe48da3c7f0feb87c8d9d2adb7128.png](https://i-blog.csdnimg.cn/blog_migrate/3ad3533e15d4b2e6c3971dc5a01a9315.png)
3.3修改./conf-available/serve-cgi-bin.conf
在之前 /var/www下创建的目录 cgi-bin,作为cgi程序存放的地点 (原先是:/usr/lib/cgi-bin/)
<
主要是修改 ScriptAlias /cgi-bin/ [脚本所在目录] 任何以/cgi-bin/开头的资源都将映射到/usr/lib/cgi-bin/目录中,且视之为CGI程序。和 <Directory "[脚本所在目录]">,同时添加 AddHandler cgi-script .cgi .py .sh表示支持以.cgi .py .sh结尾的程序。
3.4配置虚拟服务器
在 /etc/apache2/sites-enabled/000-default
<VirtualHost *:80>
(此处省略)
Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
在Virtualhost最后添加 Include conf-available/serve-cgi-bin.conf 即可(也可能是注释去掉)
3.5 重启apache服务
sudo /etc/init.d/apache2 restart
注意:cgi程序的权限必须是755(并可运行)。
3.6 测试cgi是否可以运行
在自定义的想测试目录/cgi-bin/中创建一个测试CGI脚本为test.cgi,因为调用的是Python,使用前肯定要有Python这个解释器啦!但所幸Ubuntu16.04默认安装了Python所以就不多赘述了。脚本内容如下:
#
记得修改cgi脚本的权限。CGI程序属性一定要设为可运行(755),而与CGI有关的HTML文件的目录如果要被CGI程序写入,其权限一定要设为可写(666)。
例如我测试的CGI脚本所在目录为/dd/test.cgi,那么命令就是:
sudo chmod 755 /dd/test.cgi
修改权限后,接下来在浏览器调用测试,在浏览器地址栏中输入地址:http://localhost/cgi-bin/test.cgi,出现如下图 所示就表示CGI脚本调用成功:
![7e69ebb00e20a3832e0cf0b736fb61a3.png](https://i-blog.csdnimg.cn/blog_migrate/527eb6b4397d20f86d133ac2b41562dd.png)
3.7 C/C++编写CGI之安装cgicc模块
https://cloud.tencent.com/developer/article/1145629
问题FTP的配置参考https://blog.csdn.net/taotongning/article/details/81777989
http://www.gnu.org/software/autoconf/ 关于 'autoheader' is missing on your system.
四、SSL设置
4.1创建SSL目录
sudo mkdir /etc/apache2/ssl
4.2创建自签名凭证,内容随便填
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
4.3开启SSL 模块
a2enmod ssl
4.4编辑/etc/apache2/sites-enabled/default-ssl.conf
ServerAdmin webmaster@localhost
ServerName http://www.linuxidc.com:443
SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
4.5启动虚拟主机
a2ensite default-ssl
4.6重启apache
sudo service apache2 restart