本文介绍如何搭建web服务器


目录

  1. Android下使用KSWeb
  2. Windows下使用Phpstudy
  3. php相关
    1. 安装
    2. 测试php信息
    3. 切换php版本
    4. composer安装
    5. php性能设置
  4. Nginx相关
    1. 基本配置
    2. 配置php
    3. 添加访问密码
    4. Nginx开启反向代理
    5. 设置404页面
    6. 显示目录
  5. 日志相关
  6. Apache相关
    1. 安装带php的apache服务器
    2. 增加超时
    3. Windows上的反向代理
    4. Linux上的反向代理
    5. 开启webdav
  7. MySQL相关
    1. 安装
    2. 配置MySQL
    3. 导入sql文件
    4. 卸载mysql
    5. 重置数据库
  8. 常见Web服务器比较
  9. 参考

Android下使用KSWeb

网上随便找个3.986破解版就行,老版我遇到过很严重的bug。在root环境下只有Lighthttpd能使用80端口,Apache和Nginx不能使用80端口,具体是Apache使用80端口就无法启动,Nginx启动后所有界面403。
LinuxDeploy和Termux运行http服务器都不完美,介意MySQL的话不建议使用。


Windows下使用Phpstudy

如果只是调试且需要配置MySQL,建议使用Phpstudy,很方便,不仅带GUI界面,而且各个软件版本都可以随意更换
Phpstudy开机自启,管理员启动命令行,使用命令安装服务,并设置开启启动

1
2
mysqld install mysql
httpd.exe -k install

Phpstudy的反向代理在Apache2.4.39\conf\vhosts\0localhost_80.conf文件中设置


php相关

如果无法直接安装,先添加源,

1
2
3
4
apt install -y apt-transport-https lsb-release ca-certificates wget 
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/php.list
apt update

安装

安装php7.4

1
apt-get install php7.4 php7.4-fpm php7.4-mysql php7.4-curl php7.4-gd php7.4-mbstring php7.4-xml php7.4-xmlrpc php7.4-zip php7.4-opcache php7.4-bcmath php7.4-bz2 php7.4-odbc php7.4-gmp php7.4-imap php7.4-ldap php-json

安装php8.X

1
2
3
4
5
apt install -y lsb-release ca-certificates apt-transport-https software-properties-common
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list
wget -qO - https://packages.sury.org/php/apt.gpg | apt-key add -
apt update
apt-get install php8.1 php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-xmlrpc php8.1-zip php8.1-opcache php8.1-bcmath php8.1-bz2 php8.1-odbc php8.1-gmp php8.1-imap php8.1-ldap php-json

安装composer

1
2
3
4
wget https://getcomposer.org/composer.phar
mv composer.phar /usr/local/bin/composer
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer config -g -l repo.packagist

测试php信息

1
2
3
<?php 
phpinfo();
?>

切换php版本

查询使用的php版本

1
ls -lha /etc/alternatives | grep php

切换到7.4

1
update-alternatives --set php /usr/bin/php7.4

卸载指定版本的php

1
apt-get autoremove php8*

查找php配置文件位置,其实是不对的

1
find / -name php.ini

或者

1
php -i |grep php\.ini

composer安装

1
2
3
4
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
mv composer.phar /usr/local/bin/composer
composer config -g repos.packagist composer https://mirrors.cloud.tencent.com/composer/

php性能设置

1
2
nano /etc/php/7.4/fpm/php-fpm.conf
nano /etc/php/7.4/fpm/php.ini

重启php生效

1
service php7.4-fpm restart

Nginx相关

debian系安装:apt-get install nginx

基本配置

1
nano /etc/nginx/nginx.conf

user nginx改为user www-data
注释掉log,并修改worker_processes 8;
重载配置文件nginx -s reload
如果出现nginx: configuration file /etc/nginx/nginx.conf test failed,使用nginx -t

配置php

打开站点文件nano /etc/nginx/sites-available/default
在第五行Index后添加index.php,再添加默认php

1
2
3
4
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

对于需要另一个版本php的目录,使用

1
2
3
4
5
6
location /inf/ {
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
}

重载配置文件nginx -s reload
重启服务器systemctl restart nginx

添加访问密码

安装插件apt-get install apache2-utils
/etc/nginx目录执行htpasswd -bdc .htpasswd user password
打开站点文件nano /etc/nginx/sites-available/default,添加

1
2
3
4
location /123456/ {
auth_basic "Please input password";
auth_basic_user_file /etc/nginx/.htpasswd;
}

然后打开浏览器访问,应该是需要输入密码了
如果登陆后某些资源401,请检查域是否相同,例如使用192.168.1.X登录后某些页面请求了192.168.192.X

Nginx开启反向代理

打开站点文件nano /etc/nginx/sites-available/default,添加
写入

1
2
3
location /vs/ {
proxy_pass http://127.0.0.1:8886/;
}

若代理指定地址,添加

1
2
3
4
allow 192.168.192.0/24;
allow 192.168.100.0/24;
allow 12.170.0.0/25;
deny all;

设置404页面

/etc/nginx/nginx.conf的http字段添加fastcgi_intercept_errors on;
/etc/nginx/sites-available/default的server字段添加error_page 404 = /404.html;
在服务器根目录放入404.html;就能看到效果了
测试:nginx -t
重载:nginx -s reload

显示目录

在location字段添加

1
2
3
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;

日志相关

日志文件在/var/log/nginx/


Apache相关

安装带php的apache服务器

1
2
3
4
5
6
apt-get install apache2 php libapache2-mod-php php-fpm
apt-get install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip php-opcache php-bcmath php-bz2 php-odbc php-gmp php-imap
a2enmod proxy_fcgi setenvif
a2enconf php7.4-fpm
systemctl reload apache2
systemctl restart apache2

关闭日志

1
nano /etc/apache2/apache2.conf

注释掉LogLevel warnErrorLog${APACHE_LOG_DIR}/error.log

增加超时

特别是在wordpress要升级但是服务器又不是很给力的情况下
替换

1
2
3
KeepAliveTimeout 5000
MaxKeepAliveRequests 10000
Timeout 60000

Windows上的反向代理

打开/conf/httpd.conf,写入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule access_compat_module modules/mod_access_compat.so

<VirtualHost *:80>
ProxyRequests Off
ProxyPass /sy/ http://127.0.0.1:8384/
ProxyPassReverse /sy/ http://127.0.0.1:8384/
ProxyPass /vs/ http://127.0.0.1:8886/
ProxyPassReverse /vs/ http://127.0.0.1:8886/
</VirtualHost>

Linux上的反向代理

开启模块

1
2
3
4
5
6
a2enmod proxy
a2enmod proxy_ajp
a2enmod proxy_http
a2enmod vhost_alias
a2enmod proxy_connect
a2enmod access_compat

修改配置文件

1
nano /etc/apache2/apache2.conf

写入

1
2
3
4
5
6
7
8
9
10
11
<VirtualHost *:80>
ProxyRequests Off
ProxyPass /sy/ http://127.0.0.1:8384/
ProxyPassReverse /sy/ http://127.0.0.1:8384/
ProxyPass /vs/ http://127.0.0.1:8384/
ProxyPassReverse /vs/ http://127.0.0.1:8384/
ProxyPass /wf/ http://127.0.0.1:2333/
ProxyPassReverse /wf/ http://127.0.0.1:2333/
ProxyPass /sd/ http://127.0.0.1:2334/ timeout=60000
ProxyPassReverse /sd/ http://127.0.0.1:2334/ timeout=60000
</VirtualHost>

注:对于事件超过2分钟的应用,需设置timeout
对于https

1
2
3
4
5
<VirtualHost *:443>
ProxyRequests Off
ProxyPass /wm/ https://127.0.0.1:10000/
ProxyPassReverse /wm/ https://127.0.0.1:10000/
</VirtualHost>

未通过测试,可能是没配置SSL
重启服务器生效

1
systemctl restart apache2

开启webdav

启用模块

1
2
a2enmod dav_fs
a2enmod dav

添加端口

1
nano /etc/apache2/ports.conf

添加

1
Listen 88

配置文件

1
nano /etc/apache2/sites-available/webdav.conf

添加主机,这个要放在配置文件最后

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DavLockDB /var/www/webdav/DavLock
<VirtualHost *:88>
ServerAdmin root@localhost
DocumentRoot /var/www/webdav/sean/
Alias /webdav /var/www/webdav/sean/
<Directory "/var/www/webdav">
DAV On
Options Indexes MultiViews
AllowOverride None
Order allow,deny
allow from all
AuthType Basic
AuthName "sean"
AuthUserFile /var/www/webdav/passwd.dav
Require valid-user
</Directory>
</VirtualHost>

激活

1
ln -s /etc/apache2/sites-available/webdav.conf /etc/apache2/conf-enabled/webdav.conf

给权限

1
2
3
chown -R www-data /var/www/webdav/sean/
torch /var/www/webdav/DavLock
chown -R www-data /var/www/webdav/DavLock

创建密钥文件,最后关键字为登陆用户名。输入后要求输入两遍密码

1
htpasswd -c /var/www/webdav/passwd.dav sean

使用链接http://192.168.192.200:88/webdav/ 进行访问


MySQL相关

安装

1
2
3
apt-get install mariadb-server mariadb-client php-mysql
service apache2 restart
service mysqld restart

配置MySQL

登录数据库

1
mysql -u root -p	//直接回车就行,没密码

建立一个名为wordpress的数据库

1
2
CREATE DATABASE wordpress;
CREATE DATABASE pichome;

查看数据库是否创建成功

1
SHOW DATABASES;

删除数据库

1
DROP DATABASE datebase;

切换为mysql

1
use mysql

查看用户和权限

1
SELECT User, Password, Host FROM user;

授予远程主机访问数据库权限

1
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '你的密码' WITH GRANT OPTION;

如果要删除用户

1
delete from user where user='root' and host='0.0.0.0';

刷新用户和权限

1
FLUSH PRIVILEGES;

导入sql文件

USE 你要导入的数据库;
mysql -u 用户名 -p 你要导入的数据库 < /path/to/yourfile.sql

卸载mysql

1
2
aptitude purge mariadb-server
rm -rf /var/lib/mysql

重置数据库

1
2
3
4
5
service mysql stop
rm -rf /var/lib/mysql
mysql_install_db
service mysql start
mysqladmin -uroot -p password

常见Web服务器比较

Server Apache Nginx Lighttpd
Proxy代理 非常好 非常好 一般
Rewriter 非常好 一般
Fcgi 不好 非常好
热部署 不支持 支持 不支持
系统压力比较 很大 很小 比较小
稳定性 非常好 不好
安全性 一般 一般
技术支持 非常好 很少 一般
静态文件处理 一般 非常好
Vhosts虚拟主机 支持 不支持 支持
反向代理 一股 非常好 一般
Session sticky 支持 不支持 支持

参考

Apache+php环境配置
搭建网站之二——Windows环境安装PHP开发环境
Debian下用Apache2搭建WebDAV
树莓派下Apache2配置WebDav