Как установить собственный сокращатель URL-адресов YOURLS на CentOS 8
На этой странице
- Предпосылки
- Установить сервер LEMP
- Создайте базу данных ДЛЯ ВАШИХ
- Установите СВОИ
- Настройте Nginx для себя
- Настройка SELinux и брандмауэра
- Доступ к ВАШИМ
- Защитите ВАШИХ с помощью Lets Encrypt SSL
- Заключение
YOURLS — это бесплатная программа для сокращения URL-адресов с открытым исходным кодом, написанная на PHP. Он очень похож на TinyURL или Bitly и позволяет запускать собственную службу сокращения URL-адресов. Это также позволяет вам добавлять брендинг к вашим коротким URL-адресам. Он предлагает богатый набор функций, включая частные и общедоступные ссылки, настраиваемые ключевые слова URL, исторические отчеты о кликах, интерфейс Ajaxed, поддержку Jsonp и многое другое.
В этом руководстве мы покажем вам, как установить YOURLS на CentOS 8 с помощью Lets Encrypt SSL.
Предпосылки
- Сервер под управлением CentOS 8.
- Действительное доменное имя, указанное с IP-адресом вашего сервера.
- Пароль root настраивается на сервере.
Установить LEMP-сервер
Во-первых, вам нужно будет установить Nginx, MariaDB, PHP и необходимые расширения PHP на вашем сервере. Вы можете установить их все с помощью следующей команды:
dnf install nginx mariadb-server php php-fpm php-json php-common php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath git unzip wget -y
После установки всех пакетов отредактируйте файл конфигурации PHP-FPM /etc/php-fpm.d/www.conf и измените пользователя с apache на nginx:
nano /etc/php-fpm.d/www.conf
Измените следующие строки:
user = nginx group = nginx
Сохраните и закройте файл, затем запустите службы Nginx, MariaDB, PHP-FPM и включите их запуск при перезагрузке системы с помощью следующей команды:
systemctl start nginx
systemctl enable nginx
systemctl start mariadb
systemctl enable mariadb
systemctl start php-fpm
systemctl enable php-fpm
Как только вы закончите, вы можете перейти к следующему шагу.
Создайте базу данных для ВАШИХ
Далее вам нужно будет создать базу данных и пользователя для YOURLS. Сначала войдите в MariaDB с помощью следующей команды:
mysql
После входа в систему создайте базу данных и пользователя с помощью следующей команды:
MariaDB [(none)]> CREATE DATABASE yourlsdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON yourlsdb.* TO 'yourlsuser'@'localhost' IDENTIFIED BY 'password';
Затем сбросьте привилегии и выйдите из MariaDB с помощью следующей команды:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \q
На данный момент установлена и настроена MariaDB.
Установите ВАШИ
Сначала измените каталог на корневой веб-сайт Nginx и загрузите последнюю версию YOURLS с помощью следующей команды:
cd /var/www/html
git clone https://github.com/YOURLS/YOURLS.git
Затем переименуйте образец файла конфигурации с помощью следующей команды:
cd YOURLS/user/
cp config-sample.php config.php
Затем отредактируйте файл config.php и определите настройки вашей базы данных:
nano config.php
Измените следующие строки:
/** MySQL database username */ define( 'YOURLS_DB_USER', 'yourlsuser' ); /** MySQL database password */ define( 'YOURLS_DB_PASS', 'password' ); /** The name of the database for YOURLS ** Use lower case letters [a-z], digits [0-9] and underscores [_] only */ define( 'YOURLS_DB_NAME', 'yourlsdb' ); /** MySQL hostname. ** If using a non standard port, specify it like 'hostname:port', eg. 'localhost:9999' or '127.0.0.1:666' */ define( 'YOURLS_DB_HOST', 'localhost' ); /** MySQL tables prefix ** YOURLS will create tables using this prefix (eg `yourls_url`, `yourls_options`, ...) ** Use lower case letters [a-z], digits [0-9] and underscores [_] only */ define( 'YOURLS_DB_PREFIX', 'yourls_' ); define( 'YOURLS_SITE', 'http://yourls.example.com' ); $yourls_user_passwords = array( 'admin' => 'yourpassword',
Сохраните и закройте файл, когда закончите. Затем создайте файл .htaccess с помощью следующей команды:
nano /var/www/html/YOURLS/.htaccess
Добавьте следующие строки:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ /yourls-loader.php [L] </IfModule>
Сохраните и закройте файл, затем предоставьте соответствующие разрешения и права собственности с помощью следующей команды:
chown -R nginx:nginx /var/www/html/YOURLS
chmod -R 775 /var/www/html/YOURLS
Как только вы закончите, вы можете перейти к следующему шагу.
Настройте Nginx для ВАШИХ
Затем создайте новый файл конфигурации виртуального хоста Nginx для ВАШИХ:
nano /etc/nginx/conf.d/yourls.conf
Добавьте следующие строки:
server { listen 80; server_name yourls.example.com; root /var/www/html/YOURLS; index index.php index.html index.htm; location / { try_files $uri $uri/ /yourls-loader.php$is_args$args; } location ~ \.php$ { include fastcgi.conf; fastcgi_index index.php; fastcgi_pass unix:/run/php-fpm/www.sock; } }
Сохраните и закройте файл, затем перезапустите службу Nginx и PHP-FPM с помощью следующей команды:
systemctl restart nginx
systemctl restart php-fpm
Вы также можете проверить статус Nginx с помощью следующей команды:
systemctl status nginx
Вы должны получить следующий результат:
? nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/nginx.service.d ??php-fpm.conf Active: active (running) since Tue 2020-10-20 09:37:40 EDT; 5min ago Process: 12864 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 12862 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 12860 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 12871 (nginx) Tasks: 3 (limit: 12523) Memory: 5.5M CGroup: /system.slice/nginx.service ??12871 nginx: master process /usr/sbin/nginx ??12872 nginx: worker process ??12873 nginx: worker process Oct 20 09:37:40 centos systemd[1]: Stopped The nginx HTTP and reverse proxy server. Oct 20 09:37:40 centos systemd[1]: Starting The nginx HTTP and reverse proxy server... Oct 20 09:37:40 centos nginx[12862]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok Oct 20 09:37:40 centos nginx[12862]: nginx: configuration file /etc/nginx/nginx.conf test is successful Oct 20 09:37:40 centos systemd[1]: Started The nginx HTTP and reverse proxy server.
Настройте SELinux и брандмауэр
По умолчанию SELinux включен в CentOS 8. Поэтому вам нужно будет настроить его для вашего ВАШЕГО веб-сайта.
Вы можете настроить SELinux с помощью следующей команды:
setsebool httpd_can_network_connect on -P
chcon -R -u system_u -t httpd_sys_rw_content_t -r object_r /var/www/html/YOURLS
Затем разрешите порты 80 и 443 через брандмауэр с помощью следующей команды:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Как только вы закончите, вы можете перейти к следующему шагу.
Доступ к ВАШИМ
Теперь откройте веб-браузер и получите доступ к YOURLS, используя URL-адрес http://yourls.example.com/admin. Вы должны увидеть следующую страницу:
Нажмите на кнопку Установить YOURLS. Вы должны увидеть следующую страницу:
нажмите на \Страница администрирования YOURLS. Вы должны увидеть страницу авторизации YOURLS:
Укажите свое имя пользователя и пароль администратора, которые вы определили в config.php, затем нажмите кнопку «Войти». Вы должны увидеть панель YOURLS на следующей странице:
Защитите ВАШИХ с помощью Lets Encrypt SSL
Затем вам нужно будет установить утилиту Certbot в вашей системе, чтобы загрузить и установить Lets Encrypt SSL для вашего веб-сайта YOURLS.
Вы можете установить клиент Certbot с помощью следующей команды:
wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto
Затем получите и установите SSL-сертификат для своего веб-сайта YOURLS с помощью следующей команды:
certbot-auto --nginx -d yourls.example.com
Приведенная выше команда сначала установит все необходимые зависимости на ваш сервер. После установки вам будет предложено указать адрес электронной почты и принять условия обслуживания, как показано ниже:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for yourls.example.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/yourls.conf
Выберите, хотите ли вы перенаправлять HTTP-трафик на HTTPS или нет, как показано ниже:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Введите 2 и нажмите Enter, чтобы продолжить. После успешного завершения установки вы должны получить следующий вывод:
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/yourls.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://yourls.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=yourls.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/yourls.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/yourls.example.com/privkey.pem Your cert will expire on 2020-06-11. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Теперь вы можете безопасно получить доступ к веб-сайту YOURLS, используя URL-адрес https://yourls.example.com.
Заключение
Поздравляем! вы успешно установили YOURLS с Nginx и Lets Encrypt SSL на CentOS 8. Теперь вы можете легко разместить свой собственный сокращатель URL-адресов с помощью YOURLS. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.