apache2 开机自动启动
1 | # 先确保 apache2 的命令是可用的,关闭后网页无法访问 |
更新 apache2 版本
1 | cp -rf /etc/apache2/sites-available/ /tmp/apache2-available |
禁止 Apache 显示目录索引
1 | sudo vim /etc/apache2/apache2.conf |
1 | <Directory /var/www/> |
将 Options Indexes FollowSymLinks 改成 Options FollowSymLinks 即可以禁止 Apache 显示该目录结构。
解释:Indexes 的作用就是当该目录下没有指定 index.html 文件时,就显示目录结构,去掉 Indexes ,Apache 就不会显示该目录的列表了
在 vim 保存时获得 sudo 权限
1 | :w ! sudo tee % |
命令:w !{cmd},让 vim 执行一个外部命令{cmd},然后把当前缓冲区的内容从 stdin 传入。
tee 是一个把 stdin 保存到文件的小工具。
而 %,是vim当中一个只读寄存器的名字,总保存着当前编辑文件的文件路径。
所以执行这个命令,就相当于从vim外部修改了当前编辑的文件。
Ubuntu Apache2 的启动/重启/停止
启动
1
/etc/init.d/apache2 start
重启
1
/etc/init.d/apache2 restart
停止
1
/etc/init.d/apache2 stop
php 实现 RESTful api
- 修改 Apache 配置,
/etc/apache2/apache2.conf
,将以下配置从AllowOverride None
改为AllowOverride All
1 | <Directory /var/www/> |
- 到网站的根目录下
/var/www/html
,新增或修改.htaccess
文件,如下
1 | # 开启 rewrite 功能 |
重写规则使用正则表达式来匹配 URL,进而路由到指定的页面,其中 nc 表示不区分大小写(No Case),qsa 表示可以在 URL 后面添加参数字符串(Query String Append)
更多详细可以参照 PHP RESTful
需要注意的是 SiteRestHandler.php 这个文件中的 $this ->setHttpHeaders($requestContentType, $statusCode);
这句代码需要注释才能工作
如果要读取 POST 参数
使用 $_POST
是读取不到的,可使用
1 | $postData = json_decode(file_get_contents('php://input'), true); |
来获取 POST 参数
我自己实现的例子:https://github.com/Norcy/SmallFrequence.git
Ubuntu Apache2 配置 HTTPS
申请 SSL 证书:包括 apache.crt apache.key server-chain.crt
注意,腾讯云下载的证书名字可能分别对应为 norcy.xyz.crt norcy.xyz.key root_bundle.crt
拷贝证书到 /etc/apache2/cert 目录下
- 创建site-enabled 指向site-available的软链接
1 | sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf |
- 修改/etc/apache2/sites-enabled/001-ssl.conf,关注 ServerName,SSLCertificateFile,SSLCertificateKeyFile,SSLCertificateChainFile
1 | <VirtualHost *:443> |
强制 HTTPS 访问:在网站根目录下新建文件 .htaccess 文件,写入内容
1
2
3
4RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.* https://%{SERVER_NAME}%{REQUEST_URI} [L,R]重启
1
2
3
4
5
6
7// 加载Apache的SSL模块
$ sudo a2enmod ssl
// 然后,重启Apache
$ sudo /etc/init.d/apache2 restart // 这时浏览器应该就可访问了
// 可选,记得重启一下 pm2 服务
$ j pay
$ yarn restart
Ubuntu Apache2 更新 HTTPS 证书
- 到腾讯云申请新的证书,填写域名(不用包含 www),域名验证方式选择
自动 DNS 验证
即可秒生效。显示已签发后下载证书 - 重复上面配置步骤的 Step 1、2、6 即可
- 点击 Chrome 地址栏前面的加密标志,可以查看证书时间以此判断是否生效
基础知识
- 网页文件存放在 /var/www/html
以指定用户执行命令
由于权限全部给了 www-data,所以使用 ubuntu 账户进行 git 操作的时候,需要添加 sudo 或者 sudo -u www-data git push
切换用户
1 | sudo -i |
正确的操作姿势是以 www-data 操作
.git 目录全部改为 www-data:www-data
文件上传与下载
- 下载 wx 文件夹 到本地
1 | scp -r [-P 端口号] ubuntu@111.230.246.127:/var/www/html/PublicAccount ~/Desktop/wx/ |
- 上传 test.txt 到 www 目录
1 | scp [-r] [-P 端口号] /var/www/test.txt root@192.168.0.101:/var/www/ |
ubuntu 的终端文件名显示乱码或问号
直接修改当前用户目录 下的 .bashrc 问件,在最后添加如下:
1 | export LC_ALL=C |