Nginx настройка php postgresql

zippaaa / wsl2.md

Устанавливаем WSL2 и настраиваем PhpStorm для работы с Linux

Устанавливаем из магазина приложений (или из Github) новый Windows Terminal.

Прошло каких-то 25 лет, и, наконец, Microsoft сделала это — отличный терминал.

Устанавливаем из магазина приложений Ubuntu (у меня установлена версия 18.04)
При установке логин вводим латинскими, строчными буквами

Запускаем установленный Terminal

В одной вкладке открываем Cmd.exe из меню

Во второй вкладке открываем Ubuntu .

Закрываем вкладку Ubuntu

Открываем новую вкладку Ubuntu

sudo nano /etc/nginx/nginx.conf

в нижней половине файла находим две строки и одну раскоментируем, а вторую закоментируем:

Нажимаем Ctrl+X , затем Y , и Enter

если там что-то есть, удалим этот файл sudo rm file.conf

sudo nano /etc/nginx/conf.d/my_project.loc.conf

Нажимаем Ctrl+X , затем Y , и Enter

sudo nano /etc/php/7.4/fpm/pool.d/my_project.loc.conf

Нажимаем Ctrl+X , затем Y , и Enter

Обратите внимание: вместо vasya напишите ваше имя в linux

Чтобы стартануть всё это, надо, при входе в Ubuntu (например после перезагрузки компа), выполнить

Добавим наш локальный домен в c:\Windows\System32\drivers\etc\hosts

Открываем Firefox, в адресной строке пишем http://my_project.loc

Настраиваем PhpStorm (Windows)

File > Open > \\wsl$\Ubuntu\srv\http\my_project.loc
Open

В шторме должно появиться:

  1. Error: Windows Defender чего-то там. нажимаем fix > automaticly
  2. Error: idea.case.sensitive.fs чего-то там. Идём в Help > Custom Properties , добавляем idea.case.sensitive.fs=true
  • Закрываем проект (сделай сначала это)
  • Закрываем шторм

Запускаем cmd.exe as admin, там выполняем:

c:\var\www\my_project.loc — это путь, где вы хотите, чтобы находился проект в windows. Можно сменить на любой другой.

  • Стартуем шторм, но не открываем тот проект. Открываем «новый», уже из пути, что создали ранее c:\var\www\my_project.loc . (не спрашивайте зачем такие ухищрения. Есть глюк, когда шторм, каждый раз при запуске, сообщает, что Windows Defender. )

File / Settings / Directories:

тут можно исключить из индексирования папки типа storage

Источник

kiasaki / README.md

VPS LNPP Stack setup

Note to self, after fiddling with the same errors again and again while setting this up, I’m writing down what I repeat every time I setup a new droplet @ digitalocean.

1: Droplet creation

Create a new droplet @ cloud.digitalocean.com and, when created, copy the IP address to setup a domain name pointing to it right away.

I go at https://www.hover.com/domains and add an A record, I’ll assume dev.domain.com in this guide.

Now we have an other user than root we can login with that one, let’s do this now and setup a few utilities.

4: Install libs/dependancies

5: Setting up git deploy

6: Setup composer

7: Setup postgres

Now let’s create a user and a database

8: Setup web root

Now might be the right time to review that post-receive hook to see if it matches the folders newly created.

Next step is to test the deploy hook to bring the app files on the server

Here is a simple nginx config for a php website, if it is in the website root we can link it using:

10: Nginx self-signed SSL

11: Postgres Backups

Then make sure log files are readable and:

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

user www-data;
worker_processes 8 ;
pid /run/nginx.pid;
events <
worker_connections 768 ;
# multi_accept on;
>
http <
##
# Basic Settings
##
sendfile on ;
tcp_nopush on ;
tcp_nodelay on ;
keepalive_timeout 65 ;
types_hash_max_size 2048 ;
server_tokens off ;
server_names_hash_bucket_size 64 ;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on ;
gzip_disable «msie6» ;
gzip_vary on ;
gzip_proxied any;
gzip_comp_level 6 ;
gzip_buffers 16 8k ;
gzip_http_version 1.1 ;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
>
Читайте также:  Как пользоваться md5sum linux

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

# Dependencies
apt-get update -q
apt-get —force-yes -y -q install git curl
apt-get —force-yes -y -q install apache2-utils
apt-get —force-yes -y -q install nginx
apt-get —force-yes -y -q install php5-cli php5-fpm php5-mcrypt php5-gd php5-pgsql php5-curl
apt-get —force-yes -y -q install acl
apt-get update -q
# Use aws — sudo apt-get install postgresql-9.3 postgresql-contrib-9.3
# Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/bin/composer
# User setup
adduser —disabled-password —gecos » » ubuntu
adduser ubuntu sudo
adduser ubuntu www-data
su — ubuntu -c ‘ mkdir /home/ubuntu/.ssh ‘
su — ubuntu -c ‘ touch /home/ubuntu/.ssh/authorized_keys ‘
su — ubuntu -c ‘ git clone https://github.com/kiasaki/dotfiles.git /home/ubuntu/dotfiles ‘
su — ubuntu -c ‘ chmod +x /home/ubuntu/dotfiles/setup.sh ‘
su — ubuntu -c ‘ /home/ubuntu/dotfiles/setup.sh ‘
# www directory
appname= $APP_NAME
mkdir -p » /var/www/ $appname /current/ «
chmod -R 755 » /var/www/ $appname / «
chown -R www-data:www-data » /var/www/ $appname / «
setfacl -Rm d:u:www-data:rwX,u:www-data:rwX /var/www
setfacl -Rm d:u:ubuntu:rwX,u:ubuntu:rwX /var/www
ln -s » /var/www/ $appname /current/nginx.conf » » /etc/nginx/sites-enabled/ $appname «
rm -f /etc/nginx/nginx.conf
curl -o /etc/nginx/nginx.conf https://gist.githubusercontent.com/kiasaki/0402aa041c5f53f4b171/raw/4650322aaa76a9fc05f03e5f526c17dfbed6d24c/nginx.conf
service nginx restart
# Copy ssh pub key for ubuntu user
cat /root/.ssh/authorized_keys >> /home/ubuntu/.ssh/authorized_keys
# Git push setup
su — ubuntu -c » mkdir /home/ubuntu/repo «
su — ubuntu -c » mkdir /home/ubuntu/repo/ $ .git «
su — ubuntu -c » cd /home/ubuntu/repo/ $ .git && git init —bare «
su — ubuntu -c » curl -o /home/ubuntu/repo/ $ .git/hooks/post-receive https://gist.githubusercontent.com/kiasaki/00a3044d12956a828e76/raw/988a8bb1b0f42d0f41459adf8c97f28701bbd78f/post-receive «
su — ubuntu -c » chmod +x /home/ubuntu/repo/ $ .git/hooks/post-receive «
# Allow sudo with no password
rm -f /etc/sudoers
curl -o /etc/sudoers https://gist.githubusercontent.com/kiasaki/0402aa041c5f53f4b171/raw/dfe606ff10cea14966061e76bbbe9a86e06fc163/sudoers
# Postgresql
# sudo apt-get install postgresql-9.3

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

Источник

Запуск PHP приложения на Docker контейнерах (PHP-FPM, Nginx, PostgreSQL)

За последний год программное обеспечение для автоматизации развертывания в среде виртуализации на уровне операционной системы набирает большие обороты. Эта статья послужит новичкам в этой сфере примером, как нужно упаковывать свое приложение в Docker контейнеры.

В классическом виде, PHP приложение представляет из себя следующие составляющие:

  1. Веб-сервер
  2. СУБД
  3. PHP приложение

В нашем примере мы будем использовать Nginx, PostgreSQL и PHP-FPM.

1. Установка Docker

Для начала работы, нам потребуется Docker. Скачать его можно на официальном сайте Docker.

2. Создание образов

Docker создает образы на основе DockerFile файлов, в котором описывается функционал. Мы создадим 3 образа для наших составляющих.

DockerFileNginx

В данном DockerFile мы создаем пользователя www-data с группой 82 и устанавливаем Nginx. Последняя строка COPY предполагает, что у вас конфигурация приложения лежит в папке config/website.conf. Она скопируется в /etc/nginx/conf.d/website.conf.

DockerFilePostgresql

В этом образе, мы будем отталкиваться от образа postgres:9.5.2 и выполним команду для определения локали и языка.

DockerFile

Этот образ послужит нам основным образом для нашего приложения. Сначала мы устанавливаем все необходимое для PHP и PHP-FPM. Далее, мы копируем текущую папку приложения в /usr/src/app, где будет распологаться наше приложение. В самом конце мы запускаем PHP-FPM.

Создание образов на основе DockerFile’ов

И так, у нас есть есть DockerFile’ы, на основе которых мы должны создать образы. Образы создаются очень просто. Достаточно выполнить следующие команды:

В дальнейшем советую добавить к этим командам —no-cache, чтобы каждый раз не компилировать составляющие.

Мы создаем образы, прикрепляем их к нашему аккаунту на Docker Hub. Теперь, нам нужно отправить наши образы на репозиторий в Docker Hub. Выполняем следующие команды:

Запуск образов на сервере

Мы почти у цели! Нам осталось загрузить образы из репозитория и запустить их. Загружаем их с помощью следующих команд:

Осталось их запустить. Делается это так же просто.

Вуаля! Наше приложение запущено на Docker контейнерах. И тем не менее, всем читателям-новичкам я бы обязательно ознакомиться с документацией Docker.

Всем желаю успехов в освоении новых технологий!

Источник

Easy There Entropy

Coding, Crypto, Culture, Cosmos

Getting setup with nginx, php, and postgresql on ubuntu

So I’ve been working off a BeagleBone Black the last couple months as my primary webserver and learning arena. It’s been fun getting to know linux a little bitter after all these years on a Mac. And while the BBB has served me well in learning to host my own server and site, it’s ARM processor has been somewhat restrictive. I wasn’t able to setup MongoDB, and I couldn’t find a version of php5.5. There may be solutions out there, and if I was dedicated enough maybe I could even concoct them, but I figure, why not just move the whole thing to the cloud anyway?

My main web project is a wiki-like platform whose goal is a better user experience than the likes of Wikipedia. Interaction with information on the internet could be made many times superior than it is today, and that’s what I’m striving for with YanlJ. YanlJ is currently built with PHP against a postgresql database on the BBB, being served up by nginX. Let’s move the whole stack to the cloud.

I had already set up an account with Amazon, and I’ve got ssh access to my EC2 instance. Great. Let’s grab nginx and build from source so we can change the server response header.

There are a couple files we have to change. First,

Find the line that reads:

and change the ‘nginx’ to whatever you want:

find the line that reads

and again change the ‘nginx’ to whatever your heart desires. Finally, feel free to change the NGINX_VERSION number to something a tad more magical.
Now, we’re nearly ready to build. Nginx needs PCRE (Perl Compatible Regular Expression Library) for url rewrites, so let’s grab that first.

We’re going to want to build nginx with https compatibility, so we better grab the openSSL developer library as well.

Now, we’re ready to build:

Since I didn’t specify, nginx was installed in /usr/local. Let’s boot up the server:

If we visit the EC2 ip address in the browser now, we should see the nginx welcome page. Of course, this assumes we’ve already forwarded port 80 in the Amazon EC2 console. We can shut down the server with

Right. Moving along now to PHP. Getting nginx and PHP to work together can be a little tricky at first, so let’s see what we can do. Start by grabbing the necessary PHP packages:

Easy. Note we need the last package so php will be able to speak to the postgresql database. But first we have to edit the nginx configuration files to talk to php.

This is where all the server configuration is. There are some commented out lines that you can supposedly uncomment to get php functionality, however that will not work for us, since we went with the fast processes manager for php (php5-fpm), rather than just grabbing the cgi. Here’s the important part of my config setup, for testing purposes:

Of course, this implies that we have a directory at /home/ubuntu/web_test, inside of which is an index.php file. My index.php looks like this:

Restart the nginx server (assuming we’re still in the nginx dir) with:

And now if we point our browser at the server, we see a pile of information about our php setup. Tada!

Unfortunately, if it did not work, you may have some hunting to do. Go through the instructions again carefully and consult other instructions on the web. Getting php and nginx to work properly the first time can be a bit of a pain!

Now, we’ve got our nginx server serving up php pages. Lets install postgresql so we can run our data driven application:

We’ll use a dedicated user for managing the database (this user was setup during installation of postgresql).

The psql command starts the postgres interactive shell, in this case to modify the user named postgres, and to change its password. Exit the shell with \quit

Now, we’re ready to clone YanlJ!

YanlJ comes with setup scripts for creating the database, but she uses authorization details in a file `auth.txt`, which stores the username and password for accessing and modifying the database over the database server (from PHP). Let’s create that file

And run the setup script:

And that’s that! The database is setup for using YanlJ. The last thing we have to do is some final nginx configuration. Getting back to the nginx conf folder, the best way to do this is to create a new folder sites-enabled , keep configuration files for each site in there, and include a reference to them in the main nginx.conf.

Let’s take the server block we used to test our setup before and copy it into yanlj.conf, making sure to change the root path to point at the yanlj directory instead of web_test . Then, in nginx.conf, simply add this line where the server block used to be:

Now reload nginx. When we point the browser, we should see YanlJ! Of course, YanlJ has been written to only be accessible over https. We can comment this out, or, add another server block to our yanlj.conf file for https connections. For this we’ll need ssl certificates:

Now, let’s add the https server block to yanlj.conf:

Reload nginx one more time

and we’re done! Of course, since we haven’t registered with a certificate authority, the browser will warn that the site is not trusted, but just add the exception and move along.

We did it. We moved the stack over from BBB to AWS EC2. Have fun playing with YanlJ, and please, if you’re a developer, feel free to make pull requests – she needs plenty of work!

Источник

Поделиться с друзьями
КомпСовет
Adblock
detector