From 9d4fccc9491a3ccfcc3bd719d5f28ebfd0b6ae54 Mon Sep 17 00:00:00 2001
From: dokuwiki <hello@example.com>
Date: Wed, 3 Feb 2021 17:19:52 +0000
Subject: [PATCH] Wiki page install changed with summary [LAMP] by shykana

---
 pages/install.txt | 146 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 146 insertions(+)
 create mode 100644 pages/install.txt

diff --git a/pages/install.txt b/pages/install.txt
new file mode 100644
index 0000000..e39ba7e
--- /dev/null
+++ b/pages/install.txt
@@ -0,0 +1,146 @@
+====== 一些简单服务的安装 ======
+
+因为很多软件的安装整体较简单,所以本页面将其中的一些汇编起来。
+
+===== Ubuntu: PPA 的介绍 =====
+
+PPA (Personal Package Archive, 直译为个人软件包档案库) 对 Ubuntu 用户来说,是安装官方软件库里所缺少的软件的一种便捷方法。基本上,PPA 提供了第三方编译的软件包,而添加 PPA 后,用户可以使用普通的 APT 命令来安装软件。但是,由于 PPA 的软件包是第三方提供的,这些软件包的安全性也不一定能得到保证。
+
+PPA 有很多个,每个一般对应一系列的软件。每个 PPA 有一个标识,基本形式是 ''ppa:user/ppa-name'' 。找到标识后,使用:
+<code>
+sudo add-apt-repository ppa:user/ppa-name
+sudo apt-get update
+</code>
+这样添加 PPA 后,就可以使用普通的 ''sudo apt install ...'' 来安装 PPA 中包含的软件包了。
+
+===== Nginx =====
+
+在 Ubuntu 上官方源的 Nginx 版本并不一定足够新,若想使用更加新的版本,可以使用这个 PPA: ''ppa:ondrej/nginx-mainline'' ([[https://launchpad.net/~ondrej/+archive/ubuntu/php|PPA 页面]])。
+
+<code>
+sudo add-apt-repository ppa:ondrej/nginx-mainline
+sudo apt-get update
+sudo apt install nginx
+</code>
+使用上述代码安装 Nginx。
+<code>
+sudo systemctl enable nginx
+sudo systemctl start nginx
+</code>
+使用上述代码配置 Nginx 开机启动并开启 Nginx。
+
+此时,您应该可以从浏览器访问您主机的 IP 地址,并看到 Nginx 的默认页面。(看不到的话,您可以先行尝试使用 VPN 来访问;还是看不到的话就可以尝试寻找安装或是配置的问题了。)
+
+==== 可能的问题 ====
+
+如果 ''sudo systemctl start nginx'' 出现错误,可以使用 ''sudo systemctl status nginx'' 以及 ''sudo journalctl -u nginx'' 查看出错信息。一般具有 ''[emerg]'' 的信息是关键的错误信息。
+
+这里的问题集合<del>不一定</del>一定不完全,欢迎您解决问题后前来添加内容。
+
+=== ''open() "/var/log/nginx/access.log" failed (2: No such file or directory)'' ===
+
+<code>
+sudo mkdir -p /var/log/nginx
+</code>
+再重新尝试启动。
+
+=== ''bind() to 0.0.0.0:80 failed'' ===
+
+如果出现了 ''bind() to 0.0.0.0:80 failed'' 类似这样的错误(类似:即含有 ''bind'', '':80'' 这样的信息),大概率是端口冲突。这应该是某些 Ubuntu 自带的 HTTP 服务器引起的。可以尝试 ''sudo systemctl stop apache2'' 后再重新开启 Nginx。
+
+如果还是没有成功,您可以试着查看 [[https://www.runoob.com/w3cnote/linux-check-port-usage.html|Linux 查看端口占用情况 | 菜鸟教程]] 继续寻找端口冲突的源头。例如:
+<code>
+sudo lsof -i:80
+</code>
+在上述命令的输出中查找含有 ''(LISTEN)'' 的一行,例如:
+<code>
+COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
+...
+python  26215  root    3u  IPv4 650101      0t0  TCP *:http (LISTEN)
+</code>
+从最后一行中可以看出,引起冲突的是某个 python (pid: 26215) 程序。进一步查看这个程序:
+<code>
+ps -aux | grep 26215
+</code>
+这个命令输出了:
+<code>
+root       26215  0.0  0.1  35524 16820 pts/1    S+   Feb03   0:00 python -m http.server 80
+</code>
+这是一个 python 临时服务器。我们可以 ''sudo kill 26215'' 来尝试停止这个程序。如果是其它的未知程序,您可以尝试使用搜索引擎搜索后再判断处理方法。
+
+===== MySQL/MariaDB =====
+
+MySQL 和 MariaDB 是两个具有近乎一模一样功能的数据库服务器,一般来说两个可以互相替代。由于一些许可证的关系,我们一般选取 MariaDB。
+
+[[https://downloads.mariadb.org/mariadb/repositories/|MariaDB 官方提供了一个安装教程]] ,进入页面后待页面加载完后,依次选择即可得到相应的安装命令。
+
+安装好后,使用:
+<code>
+sudo systemctl start mysql
+sudo systemctl enable mysql
+</code>
+上述命令来开启 MariaDB 并配置开机启动。(您可以注意到虽然我们安装的是 MariaDB 但命令中我们可以直接使用 mysql。)
+
+===== PHP/PHP-fpm =====
+
+PHP 毋须介绍。但是 PHP 与 HTTP 服务器之间需要一层接口将两者连接起来,这个一般使用 PHP-fpm。
+
+我们可以使用这个 PPA: ''ppa:ondrej/php'' ([[https://launchpad.net/~ondrej/+archive/ubuntu/php|PPA 页面]])。下面的命令您可以将 ''php7.4'' 改为其它 PHP 版本,如 ''php8.0'', ''php7.3'' 等,您可以根据您将要安装的其它程序来决定需求。
+<code>
+sudo add-apt-repository ppa:ondrej/php
+sudo apt-get update
+sudo apt install php7.4 php7.4-fpm
+</code>
+使用下述命令开启 PHP-fpm 并配置开机启动(请相应修改版本号):
+<code>
+sudo systemctl start php7.4-fpm
+sudo systemctl enable php7.4-fpm
+</code>
+
+==== Nginx 的配置 ====
+
+这里假设您按照本页面的使用 PPA 安装了 Nginx ,那么您会在 ''/etc/nginx/sites-available/default'' 这个文件里看到 PHP 配置的示范:
+<code>
+	# pass PHP scripts to FastCGI server
+	#
+	#location ~ \.php$ {
+	#	include snippets/fastcgi-php.conf;
+	#
+	#	# With php-fpm (or other unix sockets):
+	#	fastcgi_pass unix:/run/php/php7.4-fpm.sock;
+	#	# With php-cgi (or other tcp sockets):
+	#	fastcgi_pass 127.0.0.1:9000;
+	#}
+</code>
+您应该已经知道 ''#'' 号表示这些示范都没有实际效应,您可以将一些井号删除来使配置生效:
+<code>
+	# pass PHP scripts to FastCGI server
+	#
+	location ~ \.php$ {
+		include snippets/fastcgi-php.conf;
+	
+		# With php-fpm (or other unix sockets):
+		fastcgi_pass unix:/run/php/php7.4-fpm.sock;
+	#	# With php-cgi (or other tcp sockets):
+	#	fastcgi_pass 127.0.0.1:9000;
+	}
+</code>
+您只需要使一句 ''fastcgi_pass'' 语句生效即可。(所以我们没有删完井号。)修改完文件后,使用:
+<code>
+sudo systemctl restart nginx
+</code>
+使配置生效。
+
+==== 其它 PHP 模块的安装 ====
+
+很多由 PHP 驱动的服务都需要额外安装的 PHP 模块。您可以使用 ''php-fpm7.4 -m'' 查看您已经安装并开启的模块。
+
+一般来说,在本页面使用的 PPA 中,您可以尝试使用 ''sudo apt install php7.4-模块名'' 来安装相应扩展。但是,请注意,这样可能并不能找到某些模块,此时,您可以使用 ''apt search php7.4'' 来查看 PPA 中提供的模块,并尝试从命令输出中找到模块所对应的软件包名称。如:
+
+^ 软件包名称 ^ 对应的模块 ^
+| ''php7.4-bz2'' | ''bzip2'' / ''bz2'' |
+| ''php7.4-xml'' | ''dom'', ''SimpleXML'', ''XML'', ''XSL'' |
+| ''php7.4'' | 会自带相当多的模块,所以建议先 ''php-fpm7.4 -m'' 模块 |
+| ''php7.4-pgsql'' | ''pdo_pgsql'' |
+
+您可以 ''php-fpm7.4 -m | grep -i 模块名'' 来较为便捷地查看某模块是否已安装。
\ No newline at end of file
-- 
GitLab