ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root用户的新密码';
Ajenti是国外一个功能非常强大的轻型的Linux服务器管理面板,采用Python架构,修改扩展非常简单,Ajenti V是Ajenti一个虚拟主机管理面板插件,下面通过本文给大家介绍Ajenti开源免费的服务器管理面板和Ajenti V虚拟主机面板使用的详细教程。
由于Ajenti 2功能不完备,无法使用Ajenti V,故下述Ajenti均指Ajenti1.x,Ajenti1.x虽然官方已基本不再维护,但模块化的设计使其依然可以直接使用最新版本的组件来建立WEB环境。(目前面板支持主线版本的NGINX、PHP7.3以及MySQL5.7)
一、前期部署流程
源更新
更新并重启
sudo apt-get update && sudo apt-get dist-upgrade -y
sudo reboot
添加软件源
重新连接SSH
sudo apt-get install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo add-apt-repository ppa:ondrej/nginx-mainline -y
如果是国内主机,建议在添加源后使用USTC代理来解决连接过慢的问题
find /etc/apt/sources.list.d/ -type f -name "*.list" -exec sed -i.bak -r 's#deb(-src)?\s*http(s)?://ppa.launchpad.net#deb\1 https://launchpad.proxy.ustclug.org#ig' {} \;
更新
sudo apt-get update
安装解压工具unzip和文件传输工具lrzsz以及文件下载工具wget
sudo apt-get install unzip lrzsz wget -y
安装Ajenti
Ajenti官方的自动安装脚本在Ubuntu 18.04 会因缺少依赖会安装失败,需要安装依赖项(Ubuntu 18.04必须安装,如果安装时出现依赖问题请按照提示补充需要的依赖项)
wget http://launchpadlibrarian.net/333146932/python-imaging_4.1.1-3build2_all.deb
sudo dpkg -i python-imaging_4.1.1-3build2_all.deb
如果下载太慢可以使用我自己托管的仓库来下这个依赖
wget https://repo.hanada.info/ubuntu/pool/python-imaging_4.1.1-3build2_all.deb
sudo dpkg -i python-imaging_4.1.1-3build2_all.deb
导入Ajenti存储库GPG密钥
wget http://repo.ajenti.org/debian/key -O- | sudo apt-key add -
添加Ajenti存储库
sudo echo "deb http://repo.ajenti.org/debian main main ubuntu" > /etc/apt/sources.list.d/ajenti.list
sudo apt-get update
安装Ajenti
apt install ajenti -y
安装Ajenti V
sudo apt-get install ajenti-v ajenti-v-nginx ajenti-v-mysql ajenti-v-php7.3-fpm php7.3-mysql -y
重启Ajenti、Nginx、Mysql
sudo service ajenti restart
sudo service nginx restart
sudo service mysql restart
二、Ajenti面板初始设置
访问面板并进行初步设置
浏览器访问
https://服务器的IP地址:8000
[warning]请确保安全组、防火墙的策略已开放TCP的8000端口[/warning]
使用 root / admin 登录
打开左侧Configure,切换语言至zh-CN(简体中文)。
在Account栏目点击Change password,更换Ajenti面板的密码。
取消勾选Send feedback。
然后点击下方”Save”保存设置,再点击”Restart”重启并使用新密码登录。
点击左侧Mysql,在弹出的窗口中填写数据库密码。
点击左侧网站,在右侧启用Ajenti V。
更改数据库配置
点击左侧文件管理器
找到如下文件
/etc/mysql/mysql.conf.d/mysqld.cnf
点击编辑,在其结尾追加如下内容。
performance_schema = OFF
binlog_cache_size = 64K
thread_stack = 256K
join_buffer_size = 512K
query_cache_type = 0
max_heap_table_size = 64M
skip-external-locking
performance_schema_max_table_instances = 400
table_definition_cache = 400
table_open_cache = 128
key_buffer_size = 32M
max_allowed_packet = 100G
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 8K
read_buffer_size = 768K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 8
query_cache_size = 0M
tmp_table_size = 64M
sql-mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
explicit_defaults_for_timestamp = true
max_connections = 100
max_connect_errors = 100
open_files_limit = 65535
log-bin = mysql-bin
binlog_format = mixed
server-id = 1
expire_logs_days = 10
early-plugin-load = ""
default_storage_engine = InnoDB
innodb_buffer_pool_size = 64M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
重启mysql
sudo service mysql restart
点击左侧MySQL,此时会弹出提示框,输入mysql数据库的root密码,第一部分配置环境时在粉色界面输入的密码。
三、HTTPS SSL 证书申请、自签SSL证书的上传和设置
SSL证书名目繁多,获取途径比较多样。有单域名证书、多域名证书、泛域名证书等等,这里主要介绍Let’s Encrypt证书,该证书签发机构由多家知名互联网厂商联合发起,是目前比较广泛被小型网站和个人博客使用的SSL证书。而且使用acme.sh脚本可以实现自动签发、续期证书,相对于手动申请证书也更易于管理。
可转至「使用acme.sh快速签发Let’s Encrypt证书」查看相应使用说明。
如果使用自行签发或者自行获取的HTTPS SSL证书,建议进行以下操作(证书存放目录仅作参考)
证书参考路径:
/etc/nginx.custom.confs/ssl/
。
证书文件权限设置为 0600 root:root。
上传证书、私钥并修改文件权限
chown -R root:root /etc/nginx.custom.confs/ssl/
chmod -R 600 /etc/nginx.custom.confs/ssl/
四、Nginx基础配置
进入文件夹/etc/,新建文件夹nginx.custom.confs,然后进入该文件夹,新建如下两个文件defaults.conf、ssl.conf,文件内容如下
defaults.conf
client_header_buffer_size 8k;
client_max_body_size 68m;
add_header X-Provider "xxxxxxxx";
add_header X-Provider “xxxxxxxx”; 为可选项,可用于标识服务器主机名。如不需要可以删除该行。
ssl.conf
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_session_cache shared:le_nginx_SSL:1m;
ssl_session_timeout 1440m;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
add_header Strict-Transport-Security "max-age=31536000; preload";
add_header Referrer-Policy "origin";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "SAMEORIGIN";
五、Nginx反向代理Ajenti,Ajenti使用域名访问。
新建控制台站点
左侧网站-新建站点。
在综合信息栏下,取消勾选维护模式,输入放置的目录,然后点创建目录。
在域名栏下,输入作为Ajenti面板访问的域名(不要使用根域名或www域名,此域名仅用于登录服务器管理面板)。
在端口栏下,将80端口改为443,勾选 SSL HTTP2。
在SSL栏下,填入第三篇获取的证书、私钥的路径。
在高级栏下的自定义配置框内,填入如下内容。
include /etc/nginx.custom.confs/ssl.conf;
include /etc/nginx.custom.confs/defaults.conf;
location ~ /ajenti.* {
rewrite (/ajenti)$ / break;
rewrite /ajenti/(.*) /$1 break;
proxy_pass http://unix:/var/run/ajenti.sock;
proxy_redirect / /ajenti/;
proxy_set_header Host $host;
proxy_set_header Origin http://$host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
}
在左侧文件管理器里找到创建的网站所在的目录,将目录权限改为
750 www-data:www-data
(设置以递归方式)
配置Ajenti
点击左侧栏的配置项目。
在http服务器的主机栏目内将
0.0.0.0
改为
/var/run/ajenti.sock
。
在SSL处将「使用SSL」项取消勾选。
点击保存设置并且重新启动。
重启NGINX服务并使用域名进入网站
重启NGINX
sudo service nginx restart
访问
https://配置的域名/ajenti
进入Ajenti。
在配置的站点根目录新建 index.html,权限改为
750 www-data:www-data
。
index.html的内容如下
===========index.html=============
<script>window.location.href='/ajenti/';</script>
===============================
完成后访问域名可自动进入控制面板(
https://配置的域名
->
https://配置的域名/ajenti
)
"host": "/var/run/ajenti.sock",
改回
"host": "0.0.0.0",
将ssl下的
"enable": false,
改为
"enable": true,
。保存后重启ajenti面板即可恢复。
六、新建网站及其配置
本篇以建立一个WordPress站点为例介绍如何新建和配置网站。
新建站点
创建
/srv/网站目录/
,目录权限改为750 www-data:www-data。
网站-新的网站-输入网站名-创建(网站名建议和网站目录名一致)。
点击刚创建的网站右边的管理,设置WEB目录为
srv/网站目录/
,并且取消勾选维护模式。
域名栏下输入该站域名。
端口栏将80改为443 勾选SSL和HTTP2(若不开启HTTPS则无需这步)。
SSL栏下填入证书和密钥(若不开启HTTPS则无需这步)。
PHP服务设置
在内容栏下创建PHP 7.3 FastCGI。
展开PHP 7.3 FPM,选择Dynamic或者On-demand,按需填写最大进程数。
Dynamic: 常驻内存(访问量大,需要快速响应的站点)
On-demand: 按需创建进程(访问量小的站点或工具类如phpmyadmin)
配置最小,最大进程数量,每个进程占用内存大小为下方配置的memory_limit大小,
控制整个服务器的php进程数 * memory_limit 总量小于服务器总内存的65%
展开PHP,在php.ini的值中输入如下内容。
open_basedir = /srv/网站目录/:/tmp/:/var/tmp/:/proc/;
upload_max_filesize = 64m;
post_max_size = 65m;
memory_limit = 32m
[warning]注意文件夹名要与当前网站目录一致,内存限制根据需要可适当修改。[/warning]
mysql数据库配置
在MySQL栏下点击创建数据库、新建用户并赋予用户权限。记录数据库名、用户名和密码。
NGINX配置
高级-自定义配置,填入如下内容。
include /etc/nginx.custom.confs/ssl.conf;
include /etc/nginx.custom.confs/defaults.conf;
WordPress额外设置
高级-自定义配置
location / {
try_files $uri $uri/ /index.php?$args;
}
该规则可用于配置WordPress伪静态功能,若不添加则会导致部分页面返回404错误。
当网页响应头(cookie等)过大时,nginx会返回413、400、414错误,可以1k为单位适当增加client_header_buffer_size。
KodExplorer额外设置
KodExplorer是一个基于WEB的文件管理器。
KodExplorer无需绑定新建、绑定数据库。
解决KodExplorer的php报错问题
php库缺失 curl
php库缺失 mb_string
须开启php GD库,否则验证码、缩略图使用将不正常
输入如下命令,安装php的curl、mb_string、gd库并重启php服务。
sudo apt-get install php7.3-curl php7.3-mbstring php7.3-gd -y
sudo service php7.3-fpm restart
重启NGINX
完成所有配置后重启NGINX服务确保其生效
sudo service nginx restart
七、重定向设置
http -> https (HSTS)
网站-创建网站Sys_Https。
域名列表填写需要进行HSTS的域名, 若不填写则全局HSTS。
高级-自定义配置 输入如下内容
rewrite ^(.*) https://$host$1 permanent;
net -> com(部分子域名重定向)
网站-创建网站Sys_DomainRedirection。
端口栏处将80改为443,勾选SSL和HTTP2(若不配置HTTPS无需此步)。
SSL栏下填入证书、密钥(若不配置HTTPS无需此步)。
高级-自定义配置,输入如下内容(按需填写)
if ( $host = 'test1.example.net' ) {
rewrite ^/(.*)$ $scheme://test1.example.com/$1 permanent;
}
if ( $host = 'test2.example.net' ) {
rewrite ^/(.*)$ $scheme://test2.example.com/$1 permanent;
}
if ( $host = 'www.example.net' ) {
rewrite ^/(.*)$ $scheme://www.example.com/$1 permanent;
}
if ( $host = 'example.net' ) {
rewrite ^/(.*)$ $scheme://example.com/$1 permanent;
}
net -> com(泛域名重定向)
网站-创建网站Sys_DomainRedirection。
端口栏将80改为443,勾选SSL和HTTP2(若不配置HTTPS无需此步)。
SSL栏下填入证书、密钥(若不配置HTTPS无需此步)。
域名 输入如下两个域名
~^(?.+).example.net
example.net
高级-自定义配置 输入如下内容
if ( $subdomain = "" ) {
set $subdomain "www";
}
rewrite ^/(.*)$ $scheme://$subdomain.example.com/$1 permanent;
@ -> www(根域名跳转www域名)
打开网站-www所在网站
域名栏目下,同时填写www域名和根域名。
高级-自定义配置 追加如下内容。
if ( $host = "example.com" ) {
rewrite ^/(.*)$ $scheme://www.example.com/$1 permanent;
}
www -> @(www域名跳转根域名)
网站[email protected]所在网站 高级-自定义配置 追加如下内容
if ( $host = "www.example.com" ) {
rewrite ^/(.*)$ $scheme://example.com/$1 permanent;
}
屏蔽未使用域名
网站-创建网站Sys_ErrorDomain。
域名-输入如下域名
*.example.com
端口栏将80改为443,勾选SSL和HTTP2(若不配置HTTPS无需此步)。
SSL栏下填入证书、密钥(若不配置HTTPS无需此步)。