Linux

很乖巧地选择了Debian 10。

Apache 2

  1. wget https://mirrors.edge.kernel.org/ubuntu/pool/universe/a/auto-apt/auto-apt_0.3.24_amd64.deb
  2. sudo dpkg -i auto-apt_0.3.24_amd64.deb
  3. sudo apt install checkinstall libexpat1-dev
  4. # 解决"APR not found"
  5. wget http://archive.apache.org/dist/apr/apr-1.7.0.tar.gz
  6. tar zxvf apr-1.7.0.tar.gz && cd apr-1.7.0
  7. auto-apt run ./configure
  8. make && sudo mkdir -p /usr/local/apr/lib
  9. checkinstall
  10. # pcre
  11. wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz
  12. tar zxvf pcre-8.45.tar.gz && cd pcre-8.45
  13. auto-apt run ./configure --prefix=/usr/local/pcre
  14. make
  15. sudo mkdir -p /usr/local/pcre/lib && sudo mkdir -p /usr/local/pcre/share/doc && sudo mkdir /usr/local/pcre/share/man
  16. checkinstall
  17. # 安装Apache 2
  18. cd /opt && sudo mkdir /opt/apache
  19. wget https://apache.claz.org/httpd/httpd-2.4.48.tar.gz
  20. wget http://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz
  21. tar zxvf httpd-2.4.48.tar.gz
  22. tar zxvf apr-util-1.6.1.tar.gz
  23. mv apr-1.7.0 httpd-2.4.48/srclib/apr && mv apr-util-1.6.1 httpd-2.4.48/srclib/apr-util
  24. cd httpd-2.4.48
  25. auto-apt run ./configure --prefix=/opt/apache --with-pcre=/usr/local/pcre/bin/pcre-config --with-included-apr
  26. make && make install
  27. # 修改系统变量
  28. nano ~/.bashrc
  29. # apache
  30. export APACHE_HOME="/opt/apache"
  31. export APACHE_BIN="$APACHE_HOME/bin"
  32. export PATH=$PATH:$APACHE_BIN
  33. # 与Nginx共存
  34. sudo nano /etc/nginx/conf/nginx.conf # 修改Nginx配置
  35. http {
  36. listen 80;
  37. location / {
  38. proxy_pass https://localhost:8080; # 跳转到Apache指定端口
  39. proxy_set_header X-Real-IP $remote_addr;
  40. proxy_set_header Host $host;
  41. proxy_set_header Upgrade $http_upgrade;
  42. proxy_set_header Connection "upgrade";
  43. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  44. proxy_http_version 1.1;
  45. proxy_redirect off;
  46. }
  47. }
  48. sudo nano /opt/apache/conf/httpd.conf # 修改Apache端口配置
  49. Listen 8080
  50. sudo httpd -k start # 启动Apache
  51. # 开机自启Apache 2
  52. sudo cp /opt/apache/bin/apachectl /etc/init.d/apache2
  53. sudo apt install sysv-rc-conf
  54. sudo sysv-rc-conf apache2 on

多站点虚拟主机

  1. sudo nano /opt/apache/conf/httpd.conf
  2. Include conf/extra/httpd-vhosts.conf
  3. sudo nano /opt/apache/conf/extra/httpd-vhosts.conf
  4. <VirtualHost *:8080>
  5. # 站点域名
  6. ServerName www.example.com:80
  7. # Apache使用apt安装的默认网站路径在/var/www/html里,编译安装的路径在apache/htdocs里
  8. DocumentRoot "/opt/apache/htdocs"
  9. # 访问权限设置
  10. <Directory "/opt/apache/htdocs">
  11. # 允许列出目录结构
  12. Options Indexes
  13. # 不可覆盖
  14. AllowOverride None
  15. # 允许所有来源访问
  16. Require all granted
  17. </Directory>
  18. # 默认网页
  19. DirectoryIndex index.php
  20. </VirtualHost>

MySQL

数据库选择了MariaDB 10。

  1. sudo apt install mariadb-server # 安装MariaDB
  2. sudo mysql_secure_installation # 初始化配置
  3. sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
  4. # bind-address=127.0.0.1 # 允许远程登录
  5. mysql -uroot -p # 进入MariaDB终端
  6. grant all privileges on *.* to root@localhost identified by 'passwd'; # 修改账户权限及密码
  7. flush privileges; # 刷新权限

安装MariaDB的PHP扩展

  1. sudo apt install autoconf
  2. cd php-8.0.8/ext/mysqli
  3. phpize
  4. auto-apt run ./configure --with-php-config=/opt/php/bin/php-config
  5. make && make install
  6. # 开启扩展
  7. php --ini
  8. sudo nano /opt/php/lib/php.ini
  9. date.timezone=PRC ; 时区
  10. extension=mysqli.so
  11. ; sock位置在MySQL终端中使用STATUS获取
  12. pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
  13. mysqli.default_socket=/var/run/mysqld/mysqld.sock
  14. httpd -k restart

PHP 8

  1. cd /opt && sudo mkdir /opt/php
  2. wget https://www.php.net/distributions/php-8.0.8.tar.gz
  3. sudo apt install pkg-config libxml2 libxml2-dev libsqlite3-dev
  4. tar zxvf php-8.0.8.tar.gz && cd php-8.0.8
  5. auto-apt run ./configure --prefix=/opt/php --enable-debug --enable-fpm --with-apxs2=/opt/apache/bin/apxs
  6. make && checkinstall
  7. # 修改系统变量
  8. nano ~/.bashrc
  9. # php
  10. export PHP_HOME="/opt/php"
  11. export PHP_BIN="$PHP_HOME/bin"
  12. export PATH=$PATH:$PHP_BIN
  13. source ~/.bashrc
  14. # 使Apache 2支持PHP 8
  15. sudo nano /opt/apache/conf/httpd.conf
  16. LoadModule php_module modules/libphp.so
  17. <IfModule dir_module>
  18. DirectoryIndex index.php
  19. AddHandler application/x-httpd-php .php
  20. </IfModule>

网站访问流程

网站访问流程.png

  1. URL(Uniform Resource Locator):统一资源定位符,即网址,协议://域名:端口号/路径/文件名
  2. DNS(Domain Name System):域名服务器,存有域名与IP映射关系的数据库
  3. Browser/Server架构:浏览器-服务器架构,更新快,但性能低。相对还有Client/Server架构(客户端-服务器架构),性能高,但更新慢